LiteSpeed Cache - Version 5.3

Version Description

  • Oct 31 2022 =
  • Presets New Presets feature and menu item.
  • UCSS New option UCSS File Excludes and Inline to increase page score. (Ankit)
  • UCSS When UCSS is purged, automatically append URL to UCSS generation queue. (Ankit)
  • Page Optimize Removed a redundant defer attribute from Lazy Load image library usage. (#928019)
  • Image Optimize Dropped Create WebP Versions setting. Will automatically enable when Image WebP Replacement is activated.
  • Cloud Fixed a bug where internal updates were delayed for API keys.
  • Cloud Improved auto alias feature by waiting for second request from alias domain validation before removing a pending alias.
  • Purge Automatically Purge All when plugin auto update is done.
  • Purge Fixed a potential PHP8 error that occurred when removing unused widgets. (acsnaterse)
  • Cache Fixed an infinite 301 redirection caused by UTM-encoded link.
  • CLI Added syntax examples for values that include line breaks (xLukii)
  • CLI Purge requests will now be included with the original request to avoid potential CSS/JS 404 issues.
  • ESI Check all user roles for cache vary and page optimization excludes.
  • GUI Added a LiteSpeed icon to admin message banners to indicate the banners are from our plugin. (Michael D)
  • Crawler Fixed a cache-miss issue that occurred when Guest Mode was ON and WebP Replacement was OFF.
  • 3rd Remove WooCommerce private cache.
  • 3rd Removed LiteSpeed metabox from ACF field group edit page. (keepmovingdk)
Download this release

Release Info

Developer LiteSpeedTech
Plugin Icon 128x128 LiteSpeed Cache
Version 5.3
Comparing to
See all releases

Code changes from version 5.2.1 to 5.3

Files changed (50) hide show
  1. assets/css/litespeed.css +173 -1
  2. cli/option.cls.php +4 -0
  3. data/const.default.ini +5 -4
  4. data/const.network_default.ini +1 -1
  5. data/preset/advanced.data +115 -0
  6. data/preset/aggressive.data +115 -0
  7. data/preset/basic.data +115 -0
  8. data/preset/essentials.data +115 -0
  9. data/preset/extreme.data +115 -0
  10. lang/litespeed-cache.pot +622 -417
  11. litespeed-cache.php +2 -2
  12. readme.txt +21 -2
  13. src/admin-display.cls.php +13 -1
  14. src/admin.cls.php +0 -18
  15. src/base.cls.php +5 -5
  16. src/cdn-setup.cls.php +8 -7
  17. src/cloud.cls.php +26 -18
  18. src/conf.cls.php +5 -2
  19. src/control.cls.php +20 -5
  20. src/core.cls.php +93 -41
  21. src/crawler.cls.php +2 -1
  22. src/data.upgrade.func.php +3 -3
  23. src/debug2.cls.php +1 -1
  24. src/htaccess.cls.php +1 -1
  25. src/lang.cls.php +3 -3
  26. src/media.cls.php +4 -4
  27. src/metabox.cls.php +8 -1
  28. src/optimize.cls.php +12 -1
  29. src/optimizer.cls.php +1 -1
  30. src/preset.cls.php +264 -0
  31. src/purge.cls.php +17 -10
  32. src/router.cls.php +4 -1
  33. src/ucss.cls.php +2 -3
  34. src/vary.cls.php +9 -3
  35. src/vpi.cls.php +4 -2
  36. thirdparty/woocommerce.cls.php +3 -72
  37. thirdparty/woocommerce.content.tpl.php +0 -39
  38. tpl/cdn/auto_setup.tpl.php +2 -2
  39. tpl/general/entry.tpl.php +0 -2
  40. tpl/general/network_settings.tpl.php +1 -0
  41. tpl/general/settings.tpl.php +3 -6
  42. tpl/general/settings_tuning.tpl.php +3 -0
  43. tpl/img_optm/settings.media_webp.tpl.php +2 -1
  44. tpl/img_optm/settings.tpl.php +0 -13
  45. tpl/page_optm/entry.tpl.php +1 -0
  46. tpl/page_optm/settings_tuning.tpl.php +0 -109
  47. tpl/page_optm/settings_tuning_css.tpl.php +136 -0
  48. tpl/presets/entry.tpl.php +51 -0
  49. tpl/presets/standard.tpl.php +194 -0
  50. tpl/toolbox/beta_test.tpl.php +1 -0
assets/css/litespeed.css CHANGED
@@ -117,6 +117,23 @@ input[type="checkbox"].litespeed-tiny-toggle:checked:after {
117
  UTILITIES - structure
118
  ======================================= */
119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  .litespeed-quic-icon {
121
  background-image: url('../img/quic-cloud-icon-16x16.svg');
122
  background-repeat: no-repeat;
@@ -3349,6 +3366,161 @@ a.litespeed-media-href svg:hover {
3349
  }
3350
 
3351
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3352
  /* =======================================
3353
  BALLOON PURE CSS TOOLTIPS
3354
  ======================================= */
@@ -3670,4 +3842,4 @@ button[aria-label][data-balloon-pos] {
3670
  [aria-label][data-balloon-pos][data-balloon-length="fit"]:after {
3671
  white-space: normal;
3672
  width: 100%;
3673
- }
117
  UTILITIES - structure
118
  ======================================= */
119
 
120
+ .litespeed_icon:before {
121
+ content: '';
122
+ background-image:url('../img/Litespeed.icon.svg');
123
+ background-repeat: no-repeat;
124
+ width: 32px;
125
+ height: 32px;
126
+ vertical-align: middle;
127
+ display: inline-block;
128
+ position: absolute;
129
+ left:5px;
130
+ top:5px;
131
+ }
132
+
133
+ .litespeed_icon {
134
+ padding-left: 40px;
135
+ }
136
+
137
  .litespeed-quic-icon {
138
  background-image: url('../img/quic-cloud-icon-16x16.svg');
139
  background-repeat: no-repeat;
3366
  }
3367
 
3368
 
3369
+ /* =======================================
3370
+ Comparison Cards - Presets
3371
+ ======================================= */
3372
+
3373
+ .litespeed-comparison-card {
3374
+ box-sizing: border-box;
3375
+ }
3376
+
3377
+ .litespeed-comparison-card-rec .litespeed-card-content>div.litespeed-card-body {
3378
+ font-size: 14px;
3379
+ }
3380
+
3381
+ .litespeed-comparison-card-rec .litespeed-card-action {
3382
+ margin-bottom: 0.25rem;
3383
+ }
3384
+
3385
+ .litespeed-comparison-card-rec h3 {
3386
+ font-size: 20px;
3387
+ }
3388
+
3389
+ .litespeed-card-content>div,
3390
+ .litespeed-card-action {
3391
+ padding: 0.85rem 1.25rem;
3392
+ }
3393
+
3394
+ .litespeed-card-header {
3395
+ border-bottom: 1px solid #eee;
3396
+ background: #f9fafc;
3397
+ }
3398
+
3399
+ .litespeed-card-content>div.litespeed-card-body {
3400
+ align-self: stretch;
3401
+ justify-content: flex-end;
3402
+ font-size: 15px;
3403
+ padding-bottom: 0.5rem;
3404
+ padding-top: 1rem;
3405
+ }
3406
+
3407
+ .litespeed-card-content>div.litespeed-card-footer {
3408
+ align-self: stretch;
3409
+ justify-content: flex-end;
3410
+ padding-bottom: 0;
3411
+ padding-top: 0.25rem;
3412
+
3413
+ }
3414
+
3415
+ .litespeed-card-action {
3416
+ justify-content: flex-end;
3417
+ }
3418
+
3419
+ .litespeed-comparison-card ul {
3420
+ padding-left: 20px;
3421
+ list-style: none;
3422
+ list-style-position: outside;
3423
+ margin: 0;
3424
+ }
3425
+
3426
+ .litespeed-comparison-card li {
3427
+ margin-bottom: 0.5em;
3428
+ line-height: 1.4;
3429
+ }
3430
+
3431
+ .litespeed-comparison-card li:last-child {
3432
+ margin-bottom: 0;
3433
+ }
3434
+
3435
+ .litespeed-comparison-card ul li:before {
3436
+ content: '✓';
3437
+ margin-left: -1em;
3438
+ margin-right: .350em;
3439
+ color: #329c74;
3440
+ }
3441
+
3442
+ @media screen and (max-width: 1279px) {
3443
+ .litespeed-comparison-card {
3444
+ margin: 0 0 -1px 0;
3445
+ }
3446
+ }
3447
+
3448
+ @media screen and (min-width: 640px) and (max-width: 1280px) {
3449
+ .litespeed-comparison-cards {
3450
+ max-width: 740px;
3451
+ }
3452
+
3453
+ .litespeed-card-content {
3454
+ display: flex;
3455
+ flex-wrap: wrap;
3456
+ }
3457
+
3458
+ .litespeed-card-content .litespeed-card-header {
3459
+ width: 100%;
3460
+ }
3461
+
3462
+ .litespeed-card-content>div.litespeed-card-body {
3463
+ align-self: initial;
3464
+ width: 50%;
3465
+ box-sizing: border-box;
3466
+ }
3467
+
3468
+ .litespeed-card-content>div.litespeed-card-footer {
3469
+ width: 50%;
3470
+ align-self: initial;
3471
+ box-sizing: border-box;
3472
+ }
3473
+
3474
+ .litespeed-card-content>div.litespeed-card-footer h4 {
3475
+ margin-top: 1rem;
3476
+ }
3477
+ }
3478
+
3479
+ @media screen and (min-width: 1280px) {
3480
+ .litespeed-comparison-cards {
3481
+ display: flex;
3482
+ margin: 3rem 0 2rem 0;
3483
+ max-width: 1720px;
3484
+ }
3485
+
3486
+ .litespeed-comparison-card {
3487
+ width: 19%;
3488
+ min-width: 0;
3489
+ display: flex;
3490
+ flex-direction: column;
3491
+ margin-right: -1px;
3492
+ justify-content: space-between;
3493
+ }
3494
+
3495
+ .litespeed-comparison-card:first-child {
3496
+ border-top-left-radius: 5px;
3497
+ border-bottom-left-radius: 5px;
3498
+ overflow: hidden;
3499
+ }
3500
+
3501
+ .litespeed-comparison-card:last-child {
3502
+ border-top-right-radius: 5px;
3503
+ border-bottom-right-radius: 5px;
3504
+ overflow: hidden;
3505
+ }
3506
+
3507
+ .litespeed-comparison-card-rec {
3508
+ width: 23%;
3509
+ padding-top: 1rem;
3510
+ padding-bottom: .75rem;
3511
+ margin-top: -1rem;
3512
+ margin-bottom: 0.25rem;
3513
+ border-radius: 5px;
3514
+ overflow: hidden;
3515
+ }
3516
+
3517
+ .litespeed-comparison-card-rec .litespeed-card-header {
3518
+ margin-top: -1rem;
3519
+ padding-top: 1.75rem;
3520
+ padding-bottom: 0.95rem;
3521
+ }
3522
+ }
3523
+
3524
  /* =======================================
3525
  BALLOON PURE CSS TOOLTIPS
3526
  ======================================= */
3842
  [aria-label][data-balloon-pos][data-balloon-length="fit"]:after {
3843
  white-space: normal;
3844
  width: 100%;
3845
+ }
cli/option.cls.php CHANGED
@@ -28,6 +28,7 @@ class Option extends Base {
28
  * # Set to not cache the login page
29
  * $ wp litespeed-option set cache-priv false
30
  * $ wp litespeed-option set 'cdn-mapping[url][0]' https://cdn.EXAMPLE.com
 
31
  *
32
  */
33
  public function set( $args, $assoc_args ) {
@@ -55,6 +56,9 @@ class Option extends Base {
55
  * For Crawler cookies:
56
  * `set 'crawler-cookies[name][0]' my_currency`
57
  * `set 'crawler-cookies[vals][0]' "USD\nTWD"`
 
 
 
58
  */
59
 
60
  // Build raw data
28
  * # Set to not cache the login page
29
  * $ wp litespeed-option set cache-priv false
30
  * $ wp litespeed-option set 'cdn-mapping[url][0]' https://cdn.EXAMPLE.com
31
+ * $ wp litespeed-option set media-lqip_exc $'line1\nline2'
32
  *
33
  */
34
  public function set( $args, $assoc_args ) {
56
  * For Crawler cookies:
57
  * `set 'crawler-cookies[name][0]' my_currency`
58
  * `set 'crawler-cookies[vals][0]' "USD\nTWD"`
59
+ *
60
+ * For multi lines setting:
61
+ * `set media-lqip_exc $'img1.jpg\nimg2.jpg'`
62
  */
63
 
64
  // Build raw data
data/const.default.ini CHANGED
@@ -311,7 +311,10 @@ optm-ucss = false
311
  ; O_OPTM_UCSS_INLINE
312
  optm-ucss_inline = false
313
 
314
- ; O_OPTM_UCSS_WHITELIST
 
 
 
315
  optm-ucss_whitelist = ''
316
 
317
  ; O_OPTM_UCSS_EXC
@@ -549,14 +552,12 @@ img_optm-ori = true
549
 
550
  img_optm-rm_bkup = false
551
 
552
- img_optm-webp = true
553
 
554
  img_optm-lossless = false
555
 
556
  img_optm-exif = true
557
 
558
- img_optm-webp_replace = false
559
-
560
  img_optm-webp_attr = 'img.src
561
  div.data-thumb
562
  img.data-src
311
  ; O_OPTM_UCSS_INLINE
312
  optm-ucss_inline = false
313
 
314
+ ; O_OPTM_UCSS_FILE_EXC_INLINE
315
+ optm-ucss_file_exc_inline = ''
316
+
317
+ ; O_OPTM_UCSS_SELECTOR_WHITELIST
318
  optm-ucss_whitelist = ''
319
 
320
  ; O_OPTM_UCSS_EXC
552
 
553
  img_optm-rm_bkup = false
554
 
555
+ img_optm-webp = false
556
 
557
  img_optm-lossless = false
558
 
559
  img_optm-exif = true
560
 
 
 
561
  img_optm-webp_attr = 'img.src
562
  div.data-thumb
563
  img.data-src
data/const.network_default.ini CHANGED
@@ -143,4 +143,4 @@ debug-exc_strings = ''
143
  ;; -------------- Image Optm ----------------- ;;
144
  ;; -------------------------------------------------- ;;
145
 
146
- img_optm-webp_replace = false
143
  ;; -------------- Image Optm ----------------- ;;
144
  ;; -------------------------------------------------- ;;
145
 
146
+ img_optm-webp = false
data/preset/advanced.data ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ["_version","5.3"]
2
+
3
+ ["guest",true]
4
+
5
+ ["guest_optm",true]
6
+
7
+ ["cache",true]
8
+
9
+ ["cache-priv",true]
10
+
11
+ ["cache-commenter",true]
12
+
13
+ ["cache-rest",true]
14
+
15
+ ["cache-page_login",true]
16
+
17
+ ["cache-favicon",true]
18
+
19
+ ["cache-resources",true]
20
+
21
+ ["cache-mobile",true]
22
+
23
+ ["cache-browser",true]
24
+
25
+ ["esi",false]
26
+
27
+ ["esi-cache_admbar",true]
28
+
29
+ ["esi-cache_commform",true]
30
+
31
+ ["util-instant_click",false]
32
+
33
+ ["util-no_https_vary",false]
34
+
35
+ ["optm-css_min",true]
36
+
37
+ ["optm-css_comb",false]
38
+
39
+ ["optm-css_comb_ext_inl",false]
40
+
41
+ ["optm-ucss",false]
42
+
43
+ ["optm-ucss_inline",false]
44
+
45
+ ["optm-js_min",true]
46
+
47
+ ["optm-js_comb",false]
48
+
49
+ ["optm-js_comb_ext_inl",false]
50
+
51
+ ["optm-html_min",true]
52
+
53
+ ["optm-qs_rm",true]
54
+
55
+ ["optm-ggfonts_rm",false]
56
+
57
+ ["optm-css_async",false]
58
+
59
+ ["optm-ccss_per_url",false]
60
+
61
+ ["optm-css_async_inline",false]
62
+
63
+ ["optm-css_font_display",true]
64
+
65
+ ["optm-js_defer",1]
66
+
67
+ ["optm-emoji_rm",true]
68
+
69
+ ["optm-noscript_rm",true]
70
+
71
+ ["optm-ggfonts_async",false]
72
+
73
+ ["optm-dns_prefetch_ctrl",true]
74
+
75
+ ["optm-guest_only",true]
76
+
77
+ ["discuss-avatar_cache",true]
78
+
79
+ ["discuss-avatar_cron",true]
80
+
81
+ ["optm-localize",false]
82
+
83
+ ["media-lazy",false]
84
+
85
+ ["media-lazy_placeholder",""]
86
+
87
+ ["media-placeholder_resp",false]
88
+
89
+ ["media-lqip",false]
90
+
91
+ ["media-placeholder_resp_async",true]
92
+
93
+ ["media-iframe_lazy",false]
94
+
95
+ ["media-add_missing_sizes",false]
96
+
97
+ ["media-vpi",false]
98
+
99
+ ["media-vpi_cron",false]
100
+
101
+ ["img_optm-auto",true]
102
+
103
+ ["img_optm-cron",true]
104
+
105
+ ["img_optm-ori",true]
106
+
107
+ ["img_optm-rm_bkup",false]
108
+
109
+ ["img_optm-webp",true]
110
+
111
+ ["img_optm-lossless",false]
112
+
113
+ ["img_optm-exif",false]
114
+
115
+ ["img_optm-webp_replace_srcset",true]
data/preset/aggressive.data ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ["_version","5.3"]
2
+
3
+ ["guest",true]
4
+
5
+ ["guest_optm",true]
6
+
7
+ ["cache",true]
8
+
9
+ ["cache-priv",true]
10
+
11
+ ["cache-commenter",true]
12
+
13
+ ["cache-rest",true]
14
+
15
+ ["cache-page_login",true]
16
+
17
+ ["cache-favicon",true]
18
+
19
+ ["cache-resources",true]
20
+
21
+ ["cache-mobile",true]
22
+
23
+ ["cache-browser",true]
24
+
25
+ ["esi",false]
26
+
27
+ ["esi-cache_admbar",true]
28
+
29
+ ["esi-cache_commform",true]
30
+
31
+ ["util-instant_click",false]
32
+
33
+ ["util-no_https_vary",false]
34
+
35
+ ["optm-css_min",true]
36
+
37
+ ["optm-css_comb",true]
38
+
39
+ ["optm-css_comb_ext_inl",false]
40
+
41
+ ["optm-ucss",true]
42
+
43
+ ["optm-ucss_inline",false]
44
+
45
+ ["optm-js_min",true]
46
+
47
+ ["optm-js_comb",true]
48
+
49
+ ["optm-js_comb_ext_inl",false]
50
+
51
+ ["optm-html_min",true]
52
+
53
+ ["optm-qs_rm",true]
54
+
55
+ ["optm-ggfonts_rm",false]
56
+
57
+ ["optm-css_async",true]
58
+
59
+ ["optm-ccss_per_url",true]
60
+
61
+ ["optm-css_async_inline",true]
62
+
63
+ ["optm-css_font_display",true]
64
+
65
+ ["optm-js_defer",1]
66
+
67
+ ["optm-emoji_rm",true]
68
+
69
+ ["optm-noscript_rm",true]
70
+
71
+ ["optm-ggfonts_async",false]
72
+
73
+ ["optm-dns_prefetch_ctrl",true]
74
+
75
+ ["optm-guest_only",true]
76
+
77
+ ["discuss-avatar_cache",true]
78
+
79
+ ["discuss-avatar_cron",true]
80
+
81
+ ["optm-localize",false]
82
+
83
+ ["media-lazy",false]
84
+
85
+ ["media-lazy_placeholder",""]
86
+
87
+ ["media-placeholder_resp",false]
88
+
89
+ ["media-lqip",false]
90
+
91
+ ["media-placeholder_resp_async",true]
92
+
93
+ ["media-iframe_lazy",true]
94
+
95
+ ["media-add_missing_sizes",false]
96
+
97
+ ["media-vpi",false]
98
+
99
+ ["media-vpi_cron",false]
100
+
101
+ ["img_optm-auto",true]
102
+
103
+ ["img_optm-cron",true]
104
+
105
+ ["img_optm-ori",true]
106
+
107
+ ["img_optm-rm_bkup",false]
108
+
109
+ ["img_optm-webp",true]
110
+
111
+ ["img_optm-lossless",false]
112
+
113
+ ["img_optm-exif",false]
114
+
115
+ ["img_optm-webp_replace_srcset",true]
data/preset/basic.data ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ["_version","5.3"]
2
+
3
+ ["guest",false]
4
+
5
+ ["guest_optm",false]
6
+
7
+ ["cache",true]
8
+
9
+ ["cache-priv",true]
10
+
11
+ ["cache-commenter",true]
12
+
13
+ ["cache-rest",true]
14
+
15
+ ["cache-page_login",true]
16
+
17
+ ["cache-favicon",true]
18
+
19
+ ["cache-resources",true]
20
+
21
+ ["cache-mobile",true]
22
+
23
+ ["cache-browser",true]
24
+
25
+ ["esi",false]
26
+
27
+ ["esi-cache_admbar",true]
28
+
29
+ ["esi-cache_commform",true]
30
+
31
+ ["util-instant_click",false]
32
+
33
+ ["util-no_https_vary",false]
34
+
35
+ ["optm-css_min",false]
36
+
37
+ ["optm-css_comb",false]
38
+
39
+ ["optm-css_comb_ext_inl",true]
40
+
41
+ ["optm-ucss",false]
42
+
43
+ ["optm-ucss_inline",false]
44
+
45
+ ["optm-js_min",false]
46
+
47
+ ["optm-js_comb",false]
48
+
49
+ ["optm-js_comb_ext_inl",true]
50
+
51
+ ["optm-html_min",false]
52
+
53
+ ["optm-qs_rm",false]
54
+
55
+ ["optm-ggfonts_rm",false]
56
+
57
+ ["optm-css_async",false]
58
+
59
+ ["optm-ccss_per_url",false]
60
+
61
+ ["optm-css_async_inline",true]
62
+
63
+ ["optm-css_font_display",false]
64
+
65
+ ["optm-js_defer",0]
66
+
67
+ ["optm-emoji_rm",false]
68
+
69
+ ["optm-noscript_rm",false]
70
+
71
+ ["optm-ggfonts_async",false]
72
+
73
+ ["optm-dns_prefetch_ctrl",false]
74
+
75
+ ["optm-guest_only",true]
76
+
77
+ ["discuss-avatar_cache",false]
78
+
79
+ ["discuss-avatar_cron",false]
80
+
81
+ ["optm-localize",false]
82
+
83
+ ["media-lazy",false]
84
+
85
+ ["media-lazy_placeholder",""]
86
+
87
+ ["media-placeholder_resp",false]
88
+
89
+ ["media-lqip",false]
90
+
91
+ ["media-placeholder_resp_async",true]
92
+
93
+ ["media-iframe_lazy",false]
94
+
95
+ ["media-add_missing_sizes",false]
96
+
97
+ ["media-vpi",false]
98
+
99
+ ["media-vpi_cron",false]
100
+
101
+ ["img_optm-auto",true]
102
+
103
+ ["img_optm-cron",true]
104
+
105
+ ["img_optm-ori",true]
106
+
107
+ ["img_optm-rm_bkup",false]
108
+
109
+ ["img_optm-webp",true]
110
+
111
+ ["img_optm-lossless",false]
112
+
113
+ ["img_optm-exif",false]
114
+
115
+ ["img_optm-webp_replace_srcset",true]
data/preset/essentials.data ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ["_version","5.3"]
2
+
3
+ ["guest",false]
4
+
5
+ ["guest_optm",false]
6
+
7
+ ["cache",true]
8
+
9
+ ["cache-priv",true]
10
+
11
+ ["cache-commenter",true]
12
+
13
+ ["cache-rest",true]
14
+
15
+ ["cache-page_login",true]
16
+
17
+ ["cache-favicon",true]
18
+
19
+ ["cache-resources",true]
20
+
21
+ ["cache-mobile",false]
22
+
23
+ ["cache-browser",true]
24
+
25
+ ["esi",false]
26
+
27
+ ["esi-cache_admbar",true]
28
+
29
+ ["esi-cache_commform",true]
30
+
31
+ ["util-instant_click",false]
32
+
33
+ ["util-no_https_vary",false]
34
+
35
+ ["optm-css_min",false]
36
+
37
+ ["optm-css_comb",false]
38
+
39
+ ["optm-css_comb_ext_inl",true]
40
+
41
+ ["optm-ucss",false]
42
+
43
+ ["optm-ucss_inline",false]
44
+
45
+ ["optm-js_min",false]
46
+
47
+ ["optm-js_comb",false]
48
+
49
+ ["optm-js_comb_ext_inl",true]
50
+
51
+ ["optm-html_min",false]
52
+
53
+ ["optm-qs_rm",false]
54
+
55
+ ["optm-ggfonts_rm",false]
56
+
57
+ ["optm-css_async",false]
58
+
59
+ ["optm-ccss_per_url",false]
60
+
61
+ ["optm-css_async_inline",true]
62
+
63
+ ["optm-css_font_display",false]
64
+
65
+ ["optm-js_defer",0]
66
+
67
+ ["optm-emoji_rm",false]
68
+
69
+ ["optm-noscript_rm",false]
70
+
71
+ ["optm-ggfonts_async",false]
72
+
73
+ ["optm-dns_prefetch_ctrl",false]
74
+
75
+ ["optm-guest_only",true]
76
+
77
+ ["discuss-avatar_cache",false]
78
+
79
+ ["discuss-avatar_cron",false]
80
+
81
+ ["optm-localize",false]
82
+
83
+ ["media-lazy",false]
84
+
85
+ ["media-lazy_placeholder",""]
86
+
87
+ ["media-placeholder_resp",false]
88
+
89
+ ["media-lqip",false]
90
+
91
+ ["media-placeholder_resp_async",true]
92
+
93
+ ["media-iframe_lazy",false]
94
+
95
+ ["media-add_missing_sizes",false]
96
+
97
+ ["media-vpi",false]
98
+
99
+ ["media-vpi_cron",false]
100
+
101
+ ["img_optm-auto",false]
102
+
103
+ ["img_optm-cron",true]
104
+
105
+ ["img_optm-ori",true]
106
+
107
+ ["img_optm-rm_bkup",false]
108
+
109
+ ["img_optm-webp",false]
110
+
111
+ ["img_optm-lossless",false]
112
+
113
+ ["img_optm-exif",false]
114
+
115
+ ["img_optm-webp_replace_srcset",false]
data/preset/extreme.data ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ["_version","5.3"]
2
+
3
+ ["guest",true]
4
+
5
+ ["guest_optm",true]
6
+
7
+ ["cache",true]
8
+
9
+ ["cache-priv",true]
10
+
11
+ ["cache-commenter",true]
12
+
13
+ ["cache-rest",true]
14
+
15
+ ["cache-page_login",true]
16
+
17
+ ["cache-favicon",true]
18
+
19
+ ["cache-resources",true]
20
+
21
+ ["cache-mobile",true]
22
+
23
+ ["cache-browser",true]
24
+
25
+ ["esi",false]
26
+
27
+ ["esi-cache_admbar",true]
28
+
29
+ ["esi-cache_commform",true]
30
+
31
+ ["util-instant_click",false]
32
+
33
+ ["util-no_https_vary",false]
34
+
35
+ ["optm-css_min",true]
36
+
37
+ ["optm-css_comb",true]
38
+
39
+ ["optm-css_comb_ext_inl",true]
40
+
41
+ ["optm-ucss",true]
42
+
43
+ ["optm-ucss_inline",false]
44
+
45
+ ["optm-js_min",true]
46
+
47
+ ["optm-js_comb",true]
48
+
49
+ ["optm-js_comb_ext_inl",true]
50
+
51
+ ["optm-html_min",true]
52
+
53
+ ["optm-qs_rm",true]
54
+
55
+ ["optm-ggfonts_rm",false]
56
+
57
+ ["optm-css_async",true]
58
+
59
+ ["optm-ccss_per_url",true]
60
+
61
+ ["optm-css_async_inline",true]
62
+
63
+ ["optm-css_font_display",true]
64
+
65
+ ["optm-js_defer",2]
66
+
67
+ ["optm-emoji_rm",true]
68
+
69
+ ["optm-noscript_rm",true]
70
+
71
+ ["optm-ggfonts_async",false]
72
+
73
+ ["optm-dns_prefetch_ctrl",true]
74
+
75
+ ["optm-guest_only",true]
76
+
77
+ ["discuss-avatar_cache",true]
78
+
79
+ ["discuss-avatar_cron",true]
80
+
81
+ ["optm-localize",false]
82
+
83
+ ["media-lazy",true]
84
+
85
+ ["media-lazy_placeholder","data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"]
86
+
87
+ ["media-placeholder_resp",true]
88
+
89
+ ["media-lqip",true]
90
+
91
+ ["media-placeholder_resp_async",true]
92
+
93
+ ["media-iframe_lazy",true]
94
+
95
+ ["media-add_missing_sizes",true]
96
+
97
+ ["media-vpi",true]
98
+
99
+ ["media-vpi_cron",true]
100
+
101
+ ["img_optm-auto",true]
102
+
103
+ ["img_optm-cron",true]
104
+
105
+ ["img_optm-ori",true]
106
+
107
+ ["img_optm-rm_bkup",false]
108
+
109
+ ["img_optm-webp",true]
110
+
111
+ ["img_optm-lossless",false]
112
+
113
+ ["img_optm-exif",false]
114
+
115
+ ["img_optm-webp_replace_srcset",true]
lang/litespeed-cache.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the LiteSpeed Cache package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: LiteSpeed Cache 5.2\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
7
- "POT-Creation-Date: 2022-08-16 20:46:45+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -41,69 +41,74 @@ msgid "Dashboard"
41
  msgstr ""
42
 
43
  #: src/admin-display.cls.php:121
 
 
 
 
44
  msgid "General"
45
  msgstr ""
46
 
47
- #: src/admin-display.cls.php:123 tpl/cache/entry.tpl.php:6
48
  #: tpl/cache/entry_network.tpl.php:6
49
  msgid "Cache"
50
  msgstr ""
51
 
52
- #: src/admin-display.cls.php:125 tpl/cdn/settings.tpl.php:194
53
  msgid "CDN"
54
  msgstr ""
55
 
56
- #: src/admin-display.cls.php:127 src/gui.cls.php:613
57
  #: tpl/dash/dashboard.tpl.php:56 tpl/dash/network_dash.tpl.php:27
 
58
  msgid "Image Optimization"
59
  msgstr ""
60
 
61
- #: src/admin-display.cls.php:129 tpl/dash/dashboard.tpl.php:57
62
  msgid "Page Optimization"
63
  msgstr ""
64
 
65
- #: src/admin-display.cls.php:131
66
  msgid "Database"
67
  msgstr ""
68
 
69
- #: src/admin-display.cls.php:133 src/lang.cls.php:245
70
  msgid "Crawler"
71
  msgstr ""
72
 
73
- #: src/admin-display.cls.php:135
74
  msgid "Toolbox"
75
  msgstr ""
76
 
77
- #: src/admin-display.cls.php:209
78
  msgid "Cookie Name"
79
  msgstr ""
80
 
81
- #: src/admin-display.cls.php:210 tpl/crawler/settings-simulation.tpl.php:51
82
  msgid "Cookie Values"
83
  msgstr ""
84
 
85
- #: src/admin-display.cls.php:212
86
  msgid "Remove cookie simulation"
87
  msgstr ""
88
 
89
- #: src/admin-display.cls.php:213
90
  msgid "Add new cookie to simulate"
91
  msgstr ""
92
 
93
- #: src/admin-display.cls.php:232
94
  msgid "CDN URL to be used. For example, %s"
95
  msgstr ""
96
 
97
- #: src/admin-display.cls.php:234
98
  msgid "Remove CDN URL"
99
  msgstr ""
100
 
101
- #: src/admin-display.cls.php:235
102
  msgid "Add new CDN URL"
103
  msgstr ""
104
 
105
- #: src/admin-display.cls.php:236 src/admin-display.cls.php:888
106
- #: src/admin-display.cls.php:917 src/admin-display.cls.php:968
107
  #: tpl/cache/settings-cache.tpl.php:19
108
  #: tpl/cache/settings_inc.cache_mobile.tpl.php:71 tpl/cdn/settings.tpl.php:49
109
  #: tpl/page_optm/settings_css.tpl.php:176
@@ -112,8 +117,8 @@ msgstr ""
112
  msgid "ON"
113
  msgstr ""
114
 
115
- #: src/admin-display.cls.php:237 src/admin-display.cls.php:889
116
- #: src/admin-display.cls.php:916 src/admin-display.cls.php:968
117
  #: tpl/cache/settings-cache.tpl.php:19
118
  #: tpl/cache/settings_inc.object.tpl.php:210 tpl/cdn/settings.tpl.php:54
119
  #: tpl/page_optm/settings_css.tpl.php:74 tpl/page_optm/settings_js.tpl.php:63
@@ -122,133 +127,133 @@ msgstr ""
122
  msgid "OFF"
123
  msgstr ""
124
 
125
- #: src/admin-display.cls.php:285 src/gui.cls.php:604
126
  msgid "Settings"
127
  msgstr ""
128
 
129
- #: src/admin-display.cls.php:501
130
  msgid "Dismiss"
131
  msgstr ""
132
 
133
- #: src/admin-display.cls.php:757 src/admin-display.cls.php:762
134
  msgid "Save Changes"
135
  msgstr ""
136
 
137
- #: src/admin-display.cls.php:980
138
  msgid "This setting is overwritten by the PHP constant %s"
139
  msgstr ""
140
 
141
- #: src/admin-display.cls.php:983
142
  msgid "This setting is overwritten by the primary site setting"
143
  msgstr ""
144
 
145
- #: src/admin-display.cls.php:986
146
  msgid "This setting is overwritten by the Network setting"
147
  msgstr ""
148
 
149
- #: src/admin-display.cls.php:990
150
  msgid "currently set to %s"
151
  msgstr ""
152
 
153
- #: src/admin-display.cls.php:1000 tpl/cache/settings_inc.object.tpl.php:103
154
  #: tpl/crawler/settings-general.tpl.php:60
155
  #: tpl/crawler/settings-general.tpl.php:74
156
  #: tpl/crawler/settings-general.tpl.php:89 tpl/esi_widget_edit.php:70
157
  msgid "seconds"
158
  msgstr ""
159
 
160
- #: src/admin-display.cls.php:1031 src/admin-display.cls.php:1036
161
  #: tpl/cdn/settings.tpl.php:99
162
  msgid "Default value"
163
  msgstr ""
164
 
165
- #: src/admin-display.cls.php:1060
166
  msgid "Invalid rewrite rule"
167
  msgstr ""
168
 
169
- #: src/admin-display.cls.php:1077
170
  msgid "Path must end with %s"
171
  msgstr ""
172
 
173
- #: src/admin-display.cls.php:1095
174
  msgid "Minimum value"
175
  msgstr ""
176
 
177
- #: src/admin-display.cls.php:1098
178
  msgid "Maximum value"
179
  msgstr ""
180
 
181
- #: src/admin-display.cls.php:1110
182
  msgid "Zero, or"
183
  msgstr ""
184
 
185
- #: src/admin-display.cls.php:1117
186
  msgid "Larger than"
187
  msgstr ""
188
 
189
- #: src/admin-display.cls.php:1120
190
  msgid "Smaller than"
191
  msgstr ""
192
 
193
- #: src/admin-display.cls.php:1123
194
  msgid "Value range"
195
  msgstr ""
196
 
197
- #: src/admin-display.cls.php:1148
198
  msgid "Invalid IP"
199
  msgstr ""
200
 
201
- #: src/admin-display.cls.php:1168 tpl/cache/settings-esi.tpl.php:95
202
  #: tpl/page_optm/settings_css.tpl.php:178
203
  #: tpl/page_optm/settings_html.tpl.php:85
204
  #: tpl/page_optm/settings_media.tpl.php:235
205
  #: tpl/page_optm/settings_media_exc.tpl.php:26
206
  #: tpl/page_optm/settings_tuning.tpl.php:35
207
  #: tpl/page_optm/settings_tuning.tpl.php:56
208
- #: tpl/page_optm/settings_tuning.tpl.php:101
209
- #: tpl/page_optm/settings_tuning.tpl.php:165
210
- #: tpl/page_optm/settings_tuning.tpl.php:186
211
  #: tpl/toolbox/edit_htaccess.tpl.php:54 tpl/toolbox/edit_htaccess.tpl.php:71
212
  msgid "API"
213
  msgstr ""
214
 
215
- #: src/admin-display.cls.php:1169
216
  msgid "Server variable(s) %s available to override this setting."
217
  msgstr ""
218
 
219
- #: src/admin-display.cls.php:1181
220
  msgid "The URLs will be compared to the REQUEST_URI server variable."
221
  msgstr ""
222
 
223
- #: src/admin-display.cls.php:1182
224
  msgid "For example, for %s, %s can be used here."
225
  msgstr ""
226
 
227
- #: src/admin-display.cls.php:1184
228
  msgid "To match the beginning, add %s to the beginning of the item."
229
  msgstr ""
230
 
231
- #: src/admin-display.cls.php:1185
232
  msgid "To do an exact match, add %s to the end of the URL."
233
  msgstr ""
234
 
235
- #: src/admin-display.cls.php:1186 src/doc.cls.php:74
236
  msgid "One per line."
237
  msgstr ""
238
 
239
- #: src/admin-display.cls.php:1200
240
  msgid "%s groups"
241
  msgstr ""
242
 
243
- #: src/admin-display.cls.php:1203
244
  msgid "%s images"
245
  msgstr ""
246
 
247
- #: src/admin-display.cls.php:1213
248
  msgid "%s group"
249
  msgstr ""
250
 
251
- #: src/admin-display.cls.php:1216
252
  msgid "%s image"
253
  msgstr ""
254
 
@@ -319,105 +324,105 @@ msgid ""
319
  "that the account still exists and must be deleted separately."
320
  msgstr ""
321
 
322
- #: src/cdn-setup.cls.php:321 src/cloud.cls.php:767 src/cloud.cls.php:775
323
- #: src/cloud.cls.php:1159
324
  msgid "Message from QUIC.cloud server"
325
  msgstr ""
326
 
327
- #: src/cloud.cls.php:373 src/cloud.cls.php:386 src/cloud.cls.php:431
328
- #: src/cloud.cls.php:456 src/cloud.cls.php:594 src/cloud.cls.php:1128
329
  msgid "Cloud Error"
330
  msgstr ""
331
 
332
- #: src/cloud.cls.php:431
333
  msgid "No available Cloud Node."
334
  msgstr ""
335
 
336
- #: src/cloud.cls.php:456
337
  msgid "No available Cloud Node after checked server load."
338
  msgstr ""
339
 
340
- #: src/cloud.cls.php:594
341
  msgid "Please try after %1$s for service %2$s."
342
  msgstr ""
343
 
344
- #: src/cloud.cls.php:681 src/cloud.cls.php:702
345
  msgid "Failed to request via WordPress"
346
  msgstr ""
347
 
348
- #: src/cloud.cls.php:722
349
  msgid "Redetected node"
350
  msgstr ""
351
 
352
- #: src/cloud.cls.php:730
353
  msgid ""
354
  "We are working hard to improve your online service experience. The service "
355
  "will be unavailable while we work. We apologize for any inconvenience."
356
  msgstr ""
357
 
358
- #: src/cloud.cls.php:783
359
  msgid "Good news from QUIC.cloud server"
360
  msgstr ""
361
 
362
- #: src/cloud.cls.php:792
363
  msgid "%1$s plugin version %2$s required for this action."
364
  msgstr ""
365
 
366
- #: src/cloud.cls.php:845 src/cloud.cls.php:1148
367
  msgid "Failed to communicate with QUIC.cloud server"
368
  msgstr ""
369
 
370
- #: src/cloud.cls.php:887
371
  msgid ""
372
  "Site not recognized. Domain Key has been automatically removed. Please "
373
  "request a new one."
374
  msgstr ""
375
 
376
- #: src/cloud.cls.php:888 src/error.cls.php:48
377
  msgid "Click here to set."
378
  msgstr ""
379
 
380
- #: src/cloud.cls.php:953
381
  msgid "Cannot request REST API, no token saved."
382
  msgstr ""
383
 
384
- #: src/cloud.cls.php:979
385
  msgid "Cloud REST Error"
386
  msgstr ""
387
 
388
- #: src/cloud.cls.php:995
389
  msgid "Cloud REST API returned error: "
390
  msgstr ""
391
 
392
- #: src/cloud.cls.php:1167
393
  msgid ""
394
  "Applied for Domain Key successfully. Please wait for result. Domain Key will "
395
  "be automatically sent to your WordPress."
396
  msgstr ""
397
 
398
- #: src/cloud.cls.php:1221
399
  msgid ""
400
  "Congratulations, your Domain Key has been approved! The setting has been "
401
  "updated accordingly."
402
  msgstr ""
403
 
404
- #: src/cloud.cls.php:1305
405
  msgid "Domain Key hash mismatch"
406
  msgstr ""
407
 
408
- #: src/cloud.cls.php:1427
409
  msgid "Sync credit allowance with Cloud Server successfully."
410
  msgstr ""
411
 
412
- #: src/conf.cls.php:707
413
  msgid "Changed setting successfully."
414
  msgstr ""
415
 
416
- #: src/core.cls.php:291
417
  msgid "Notified LiteSpeed Web Server to purge everything."
418
  msgstr ""
419
 
420
- #: src/core.cls.php:296
421
  msgid "Notified LiteSpeed Web Server to purge the list."
422
  msgstr ""
423
 
@@ -437,25 +442,25 @@ msgstr ""
437
  msgid "Crawler disabled list is cleared! All crawlers are set to active! "
438
  msgstr ""
439
 
440
- #: src/crawler.cls.php:871
441
  msgid "Guest"
442
  msgstr ""
443
 
444
- #: src/crawler.cls.php:1022
445
  msgid "Manually added to blocklist"
446
  msgstr ""
447
 
448
- #: src/crawler.cls.php:1025
449
  msgid "Previously existed in blocklist"
450
  msgstr ""
451
 
452
- #: src/data.cls.php:221
453
  msgid ""
454
  "The database has been upgrading in the background since %s. This message "
455
  "will disappear once upgrade is complete."
456
  msgstr ""
457
 
458
- #: src/data.upgrade.func.php:101
459
  msgid ""
460
  "LiteSpeed Cache upgraded successfully. NOTE: Due to changes in this version, "
461
  "the settings %1$s and %2$s have been turned OFF. Please turn them back on "
@@ -463,15 +468,15 @@ msgid ""
463
  "errors."
464
  msgstr ""
465
 
466
- #: src/data.upgrade.func.php:101 src/lang.cls.php:147
467
  msgid "JS Combine"
468
  msgstr ""
469
 
470
- #: src/data.upgrade.func.php:101
471
  msgid "JS Defer"
472
  msgstr ""
473
 
474
- #: src/data.upgrade.func.php:102
475
  msgid "Click here to settings"
476
  msgstr ""
477
 
@@ -567,7 +572,7 @@ msgid ""
567
  "Before generating key, please verify all IPs on this list are allowlisted"
568
  msgstr ""
569
 
570
- #: src/doc.cls.php:119 tpl/general/settings.tpl.php:86
571
  msgid "Current Online Server IPs"
572
  msgstr ""
573
 
@@ -799,7 +804,7 @@ msgid "CSS/JS Cache"
799
  msgstr ""
800
 
801
  #: src/gui.cls.php:497 src/gui.cls.php:657 src/lang.cls.php:114
802
- #: tpl/dash/dashboard.tpl.php:396 tpl/toolbox/purge.tpl.php:52
803
  msgid "Object Cache"
804
  msgstr ""
805
 
@@ -816,8 +821,8 @@ msgstr ""
816
  msgid "LQIP Cache"
817
  msgstr ""
818
 
819
- #: src/gui.cls.php:556 src/gui.cls.php:716 src/lang.cls.php:176
820
- #: tpl/toolbox/purge.tpl.php:106
821
  msgid "Gravatar Cache"
822
  msgstr ""
823
 
@@ -878,99 +883,99 @@ msgstr ""
878
  msgid "No new image gathered."
879
  msgstr ""
880
 
881
- #: src/img-optm.cls.php:180
882
  msgid "Gathered %d images successfully."
883
  msgstr ""
884
 
885
- #: src/img-optm.cls.php:472
886
  msgid "Pushed %1$s to Cloud server, accepted %2$s."
887
  msgstr ""
888
 
889
- #: src/img-optm.cls.php:509
890
  msgid "Bypassed %1$s duplicated images."
891
  msgstr ""
892
 
893
- #: src/img-optm.cls.php:547
894
  msgid "Cleared %1$s invalid images."
895
  msgstr ""
896
 
897
- #: src/img-optm.cls.php:626
898
  msgid "No valid image found in the current request."
899
  msgstr ""
900
 
901
- #: src/img-optm.cls.php:649
902
  msgid "No valid image found by Cloud server in the current request."
903
  msgstr ""
904
 
905
- #: src/img-optm.cls.php:888
906
  msgid "Pull Cron is running"
907
  msgstr ""
908
 
909
- #: src/img-optm.cls.php:947
910
  msgid "Some optimized image file(s) has expired and was cleared."
911
  msgstr ""
912
 
913
- #: src/img-optm.cls.php:964
914
  msgid "One or more pulled images does not match with the notified image md5"
915
  msgstr ""
916
 
917
- #: src/img-optm.cls.php:1008
918
  msgid "Optimized WebP file expired and was cleared."
919
  msgstr ""
920
 
921
- #: src/img-optm.cls.php:1025
922
  msgid "Pulled WebP image md5 does not match the notified WebP image md5."
923
  msgstr ""
924
 
925
- #: src/img-optm.cls.php:1085
926
  msgid "Pulled %d image(s)"
927
  msgstr ""
928
 
929
- #: src/img-optm.cls.php:1172
930
  msgid "Cleaned up unfinished data successfully."
931
  msgstr ""
932
 
933
- #: src/img-optm.cls.php:1243
934
  msgid "Destroy all optimization data successfully."
935
  msgstr ""
936
 
937
- #: src/img-optm.cls.php:1275 src/img-optm.cls.php:1340
938
  msgid "Rescanned successfully."
939
  msgstr ""
940
 
941
- #: src/img-optm.cls.php:1340
942
  msgid "Rescanned %d images successfully."
943
  msgstr ""
944
 
945
- #: src/img-optm.cls.php:1399
946
  msgid "Calculated backups successfully."
947
  msgstr ""
948
 
949
- #: src/img-optm.cls.php:1461
950
  msgid "Removed backups successfully."
951
  msgstr ""
952
 
953
- #: src/img-optm.cls.php:1656
954
  msgid "Switched images successfully."
955
  msgstr ""
956
 
957
- #: src/img-optm.cls.php:1684
958
  msgid "Disabled WebP file successfully."
959
  msgstr ""
960
 
961
- #: src/img-optm.cls.php:1690
962
  msgid "Enabled WebP file successfully."
963
  msgstr ""
964
 
965
- #: src/img-optm.cls.php:1706
966
  msgid "Restored original file successfully."
967
  msgstr ""
968
 
969
- #: src/img-optm.cls.php:1713
970
  msgid "Switched to optimized file successfully."
971
  msgstr ""
972
 
973
- #: src/img-optm.cls.php:1776
974
  msgid "Reset the optimized data successfully."
975
  msgstr ""
976
 
@@ -990,11 +995,11 @@ msgstr ""
990
  msgid "Images not requested"
991
  msgstr ""
992
 
993
- #: src/lang.cls.php:24 tpl/dash/dashboard.tpl.php:337
994
  msgid "Images requested"
995
  msgstr ""
996
 
997
- #: src/lang.cls.php:25 tpl/dash/dashboard.tpl.php:347
998
  msgid "Images notified to pull"
999
  msgstr ""
1000
 
@@ -1065,7 +1070,8 @@ msgstr ""
1065
  msgid "Enable Cache"
1066
  msgstr ""
1067
 
1068
- #: src/lang.cls.php:91 tpl/dash/dashboard.tpl.php:397
 
1069
  msgid "Browser Cache"
1070
  msgstr ""
1071
 
@@ -1266,301 +1272,301 @@ msgid "UCSS Inline"
1266
  msgstr ""
1267
 
1268
  #: src/lang.cls.php:144
1269
- msgid "UCSS Allowlist"
1270
  msgstr ""
1271
 
1272
  #: src/lang.cls.php:145
1273
- msgid "UCSS URI Excludes"
1274
  msgstr ""
1275
 
1276
  #: src/lang.cls.php:146
 
 
 
 
1277
  msgid "JS Minify"
1278
  msgstr ""
1279
 
1280
- #: src/lang.cls.php:148
1281
  msgid "JS Combine External and Inline"
1282
  msgstr ""
1283
 
1284
- #: src/lang.cls.php:149
1285
  msgid "HTML Minify"
1286
  msgstr ""
1287
 
1288
- #: src/lang.cls.php:150
1289
  msgid "HTML Lazy Load Selectors"
1290
  msgstr ""
1291
 
1292
- #: src/lang.cls.php:151 tpl/page_optm/settings_tuning.tpl.php:148
1293
  msgid "Load CSS Asynchronously"
1294
  msgstr ""
1295
 
1296
- #: src/lang.cls.php:152
1297
  msgid "CCSS Per URL"
1298
  msgstr ""
1299
 
1300
- #: src/lang.cls.php:153
1301
  msgid "Inline CSS Async Lib"
1302
  msgstr ""
1303
 
1304
- #: src/lang.cls.php:154
1305
  msgid "Font Display Optimization"
1306
  msgstr ""
1307
 
1308
- #: src/lang.cls.php:155
1309
  msgid "Load JS Deferred"
1310
  msgstr ""
1311
 
1312
- #: src/lang.cls.php:156
1313
  msgid "Localize Resources"
1314
  msgstr ""
1315
 
1316
- #: src/lang.cls.php:157
1317
  msgid "Localization Files"
1318
  msgstr ""
1319
 
1320
- #: src/lang.cls.php:158
1321
  msgid "DNS Prefetch"
1322
  msgstr ""
1323
 
1324
- #: src/lang.cls.php:159
1325
  msgid "DNS Prefetch Control"
1326
  msgstr ""
1327
 
1328
- #: src/lang.cls.php:160
1329
  msgid "CSS Excludes"
1330
  msgstr ""
1331
 
1332
- #: src/lang.cls.php:161
1333
  msgid "JS Excludes"
1334
  msgstr ""
1335
 
1336
- #: src/lang.cls.php:162
1337
  msgid "Remove Query Strings"
1338
  msgstr ""
1339
 
1340
- #: src/lang.cls.php:163
1341
  msgid "Load Google Fonts Asynchronously"
1342
  msgstr ""
1343
 
1344
- #: src/lang.cls.php:164
1345
  msgid "Remove Google Fonts"
1346
  msgstr ""
1347
 
1348
- #: src/lang.cls.php:165
1349
  msgid "Critical CSS Rules"
1350
  msgstr ""
1351
 
1352
- #: src/lang.cls.php:166
1353
  msgid "Separate CCSS Cache Post Types"
1354
  msgstr ""
1355
 
1356
- #: src/lang.cls.php:167
1357
  msgid "Separate CCSS Cache URIs"
1358
  msgstr ""
1359
 
1360
- #: src/lang.cls.php:168
1361
  msgid "JS Deferred Excludes"
1362
  msgstr ""
1363
 
1364
- #: src/lang.cls.php:169
1365
  msgid "Guest Mode JS Excludes"
1366
  msgstr ""
1367
 
1368
- #: src/lang.cls.php:170
1369
  msgid "Remove WordPress Emoji"
1370
  msgstr ""
1371
 
1372
- #: src/lang.cls.php:171
1373
  msgid "Remove Noscript Tags"
1374
  msgstr ""
1375
 
1376
- #: src/lang.cls.php:172
1377
  msgid "URI Excludes"
1378
  msgstr ""
1379
 
1380
- #: src/lang.cls.php:173
1381
  msgid "Optimize for Guests Only"
1382
  msgstr ""
1383
 
1384
- #: src/lang.cls.php:174
1385
  msgid "Role Excludes"
1386
  msgstr ""
1387
 
1388
- #: src/lang.cls.php:177
1389
  msgid "Gravatar Cache Cron"
1390
  msgstr ""
1391
 
1392
- #: src/lang.cls.php:178
1393
  msgid "Gravatar Cache TTL"
1394
  msgstr ""
1395
 
1396
- #: src/lang.cls.php:180
1397
  msgid "Lazy Load Images"
1398
  msgstr ""
1399
 
1400
- #: src/lang.cls.php:181
1401
  msgid "Lazy Load Image Excludes"
1402
  msgstr ""
1403
 
1404
- #: src/lang.cls.php:182
1405
  msgid "Lazy Load Image Class Name Excludes"
1406
  msgstr ""
1407
 
1408
- #: src/lang.cls.php:183
1409
  msgid "Lazy Load Image Parent Class Name Excludes"
1410
  msgstr ""
1411
 
1412
- #: src/lang.cls.php:184
1413
  msgid "Lazy Load Iframe Class Name Excludes"
1414
  msgstr ""
1415
 
1416
- #: src/lang.cls.php:185
1417
  msgid "Lazy Load Iframe Parent Class Name Excludes"
1418
  msgstr ""
1419
 
1420
- #: src/lang.cls.php:186
1421
  msgid "Lazy Load URI Excludes"
1422
  msgstr ""
1423
 
1424
- #: src/lang.cls.php:187
1425
  msgid "LQIP Excludes"
1426
  msgstr ""
1427
 
1428
- #: src/lang.cls.php:188
1429
  msgid "Basic Image Placeholder"
1430
  msgstr ""
1431
 
1432
- #: src/lang.cls.php:189
1433
  msgid "Responsive Placeholder"
1434
  msgstr ""
1435
 
1436
- #: src/lang.cls.php:190
1437
  msgid "Responsive Placeholder Color"
1438
  msgstr ""
1439
 
1440
- #: src/lang.cls.php:191
1441
  msgid "Responsive Placeholder SVG"
1442
  msgstr ""
1443
 
1444
- #: src/lang.cls.php:192
1445
  msgid "LQIP Cloud Generator"
1446
  msgstr ""
1447
 
1448
- #: src/lang.cls.php:193
1449
  msgid "LQIP Quality"
1450
  msgstr ""
1451
 
1452
- #: src/lang.cls.php:194
1453
  msgid "LQIP Minimum Dimensions"
1454
  msgstr ""
1455
 
1456
- #: src/lang.cls.php:196
1457
  msgid "Generate LQIP In Background"
1458
  msgstr ""
1459
 
1460
- #: src/lang.cls.php:197
1461
  msgid "Lazy Load Iframes"
1462
  msgstr ""
1463
 
1464
- #: src/lang.cls.php:198
1465
  msgid "Add Missing Sizes"
1466
  msgstr ""
1467
 
1468
- #: src/lang.cls.php:199 src/metabox.cls.php:31 src/metabox.cls.php:32
1469
  #: tpl/page_optm/settings_vpi.tpl.php:12
1470
  msgid "Viewport Images"
1471
  msgstr ""
1472
 
1473
- #: src/lang.cls.php:200
1474
  msgid "Viewport Images Cron"
1475
  msgstr ""
1476
 
1477
- #: src/lang.cls.php:202
1478
  msgid "Auto Request Cron"
1479
  msgstr ""
1480
 
1481
- #: src/lang.cls.php:203
1482
  msgid "Auto Pull Cron"
1483
  msgstr ""
1484
 
1485
- #: src/lang.cls.php:204
1486
  msgid "Optimize Original Images"
1487
  msgstr ""
1488
 
1489
- #: src/lang.cls.php:205
1490
  msgid "Remove Original Backups"
1491
  msgstr ""
1492
 
1493
- #: src/lang.cls.php:206
1494
- msgid "Create WebP Versions"
1495
  msgstr ""
1496
 
1497
- #: src/lang.cls.php:207
1498
  msgid "Optimize Losslessly"
1499
  msgstr ""
1500
 
1501
- #: src/lang.cls.php:208
1502
  msgid "Preserve EXIF/XMP data"
1503
  msgstr ""
1504
 
1505
- #: src/lang.cls.php:209
1506
  msgid "WebP Attribute To Replace"
1507
  msgstr ""
1508
 
1509
- #: src/lang.cls.php:210
1510
  msgid "WebP For Extra srcset"
1511
  msgstr ""
1512
 
1513
- #: src/lang.cls.php:211
1514
  msgid "WordPress Image Quality Control"
1515
  msgstr ""
1516
 
1517
- #: src/lang.cls.php:212 tpl/esi_widget_edit.php:36
1518
  msgid "Enable ESI"
1519
  msgstr ""
1520
 
1521
- #: src/lang.cls.php:213
1522
  msgid "Cache Admin Bar"
1523
  msgstr ""
1524
 
1525
- #: src/lang.cls.php:214
1526
  msgid "Cache Comment Form"
1527
  msgstr ""
1528
 
1529
- #: src/lang.cls.php:215
1530
  msgid "ESI Nonces"
1531
  msgstr ""
1532
 
1533
- #: src/lang.cls.php:216 tpl/page_optm/settings_css.tpl.php:112
1534
  #: tpl/page_optm/settings_css.tpl.php:222 tpl/page_optm/settings_vpi.tpl.php:67
1535
  msgid "Vary Group"
1536
  msgstr ""
1537
 
1538
- #: src/lang.cls.php:217
1539
- msgid "Purge All Hooks"
1540
- msgstr ""
1541
-
1542
  #: src/lang.cls.php:218
1543
- msgid "Improve HTTP/HTTPS Compatibility"
1544
  msgstr ""
1545
 
1546
  #: src/lang.cls.php:219
1547
- msgid "Instant Click"
1548
  msgstr ""
1549
 
1550
  #: src/lang.cls.php:220
1551
- msgid "Do Not Cache Cookies"
1552
  msgstr ""
1553
 
1554
  #: src/lang.cls.php:221
1555
- msgid "Do Not Cache User Agents"
1556
  msgstr ""
1557
 
1558
  #: src/lang.cls.php:222
1559
- msgid "Login Cookie"
1560
  msgstr ""
1561
 
1562
  #: src/lang.cls.php:223
1563
- msgid "Image WebP Replacement"
1564
  msgstr ""
1565
 
1566
  #: src/lang.cls.php:225
@@ -1836,7 +1842,7 @@ msgstr ""
1836
  msgid "Mobile"
1837
  msgstr ""
1838
 
1839
- #: src/metabox.cls.php:53
1840
  msgid "LiteSpeed Options"
1841
  msgstr ""
1842
 
@@ -1848,75 +1854,75 @@ msgstr ""
1848
  msgid "LQIP image preview for size %s"
1849
  msgstr ""
1850
 
1851
- #: src/purge.cls.php:197
1852
  msgid "Purged all caches successfully."
1853
  msgstr ""
1854
 
1855
- #: src/purge.cls.php:216
1856
  msgid "Notified LiteSpeed Web Server to purge all LSCache entries."
1857
  msgstr ""
1858
 
1859
- #: src/purge.cls.php:235
1860
  msgid "Cleaned all Critical CSS files."
1861
  msgstr ""
1862
 
1863
- #: src/purge.cls.php:254
1864
  msgid "Cleaned all Unique CSS files."
1865
  msgstr ""
1866
 
1867
- #: src/purge.cls.php:288
1868
  msgid "Cleaned all LQIP files."
1869
  msgstr ""
1870
 
1871
- #: src/purge.cls.php:305
1872
  msgid "Cleaned all Gravatar files."
1873
  msgstr ""
1874
 
1875
- #: src/purge.cls.php:322
1876
  msgid "Cleaned all localized resource entries."
1877
  msgstr ""
1878
 
1879
- #: src/purge.cls.php:356
1880
  msgid "Notified LiteSpeed Web Server to purge CSS/JS entries."
1881
  msgstr ""
1882
 
1883
- #: src/purge.cls.php:372
1884
  msgid "Opcode cache is not enabled."
1885
  msgstr ""
1886
 
1887
- #: src/purge.cls.php:384
1888
  msgid "Reset the entire opcode cache successfully."
1889
  msgstr ""
1890
 
1891
- #: src/purge.cls.php:412
1892
  msgid "Object cache is not enabled."
1893
  msgstr ""
1894
 
1895
- #: src/purge.cls.php:425
1896
  msgid "Purge all object caches successfully."
1897
  msgstr ""
1898
 
1899
- #: src/purge.cls.php:638
1900
  msgid "Notified LiteSpeed Web Server to purge the front page."
1901
  msgstr ""
1902
 
1903
- #: src/purge.cls.php:651
1904
  msgid "Notified LiteSpeed Web Server to purge all pages."
1905
  msgstr ""
1906
 
1907
- #: src/purge.cls.php:670
1908
  msgid "Notified LiteSpeed Web Server to purge error pages."
1909
  msgstr ""
1910
 
1911
- #: src/purge.cls.php:697
1912
  msgid "Purge category %s"
1913
  msgstr ""
1914
 
1915
- #: src/purge.cls.php:724
1916
  msgid "Purge tag %s"
1917
  msgstr ""
1918
 
1919
- #: src/purge.cls.php:755
1920
  msgid "Purge url %s"
1921
  msgstr ""
1922
 
@@ -1977,75 +1983,41 @@ msgid ""
1977
  msgstr ""
1978
 
1979
  #: thirdparty/woocommerce.content.tpl.php:31
1980
- msgid "Use ESI for Cart"
1981
- msgstr ""
1982
-
1983
- #: thirdparty/woocommerce.content.tpl.php:36
1984
- msgid ""
1985
- "When the option is ON, cart information will be implemented as ESI blocks. "
1986
- "NOTE: To make it work, you need to turn on %1$s under ESI settings."
1987
- msgstr ""
1988
-
1989
- #: thirdparty/woocommerce.content.tpl.php:43
1990
  msgid "Product Update Interval"
1991
  msgstr ""
1992
 
1993
- #: thirdparty/woocommerce.content.tpl.php:48
1994
  msgid "Purge product on changes to the quantity or stock status."
1995
  msgstr ""
1996
 
1997
- #: thirdparty/woocommerce.content.tpl.php:48
1998
  msgid "Purge categories only when stock status changes."
1999
  msgstr ""
2000
 
2001
- #: thirdparty/woocommerce.content.tpl.php:49
2002
  msgid "Purge product and categories only when the stock status changes."
2003
  msgstr ""
2004
 
2005
- #: thirdparty/woocommerce.content.tpl.php:50
2006
  msgid "Purge product only when the stock status changes."
2007
  msgstr ""
2008
 
2009
- #: thirdparty/woocommerce.content.tpl.php:50
2010
  msgid "Do not purge categories on changes to the quantity or stock status."
2011
  msgstr ""
2012
 
2013
- #: thirdparty/woocommerce.content.tpl.php:51
2014
  msgid ""
2015
  "Always purge both product and categories on changes to the quantity or stock "
2016
  "status."
2017
  msgstr ""
2018
 
2019
- #: thirdparty/woocommerce.content.tpl.php:64
2020
  msgid ""
2021
  "Determines how changes in product quantity and product stock status affect "
2022
  "product pages and their associated category pages."
2023
  msgstr ""
2024
 
2025
- #: thirdparty/woocommerce.content.tpl.php:72
2026
- msgid "Use Front Page TTL for the Shop Page"
2027
- msgstr ""
2028
-
2029
- #: thirdparty/woocommerce.content.tpl.php:77
2030
- msgid ""
2031
- "Checking this option will force the shop page to use the front page TTL "
2032
- "setting."
2033
- msgstr ""
2034
-
2035
- #: thirdparty/woocommerce.content.tpl.php:78
2036
- msgid ""
2037
- "For example, if the homepage for the site is located at %1$s, the shop page "
2038
- "may be located at %2$s."
2039
- msgstr ""
2040
-
2041
- #: thirdparty/woocommerce.content.tpl.php:86
2042
- msgid "Privately Cache Cart"
2043
- msgstr ""
2044
-
2045
- #: thirdparty/woocommerce.content.tpl.php:91
2046
- msgid "Privately cache cart when not empty."
2047
- msgstr ""
2048
-
2049
  #: thirdparty/woocommerce.tab.tpl.php:3
2050
  msgid "WooCommerce"
2051
  msgstr ""
@@ -2074,7 +2046,7 @@ msgstr ""
2074
  msgid "Dismiss this notice"
2075
  msgstr ""
2076
 
2077
- #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 5.2) #-#-#-#-#
2078
  #. Plugin Name of the plugin/theme
2079
  #: tpl/banner/new_version.php:57 tpl/banner/new_version_dev.tpl.php:12
2080
  #: tpl/cache/more_settings_tip.tpl.php:15 tpl/inc/admin_footer.php:8
@@ -2090,7 +2062,7 @@ msgid "New release %s is available now."
2090
  msgstr ""
2091
 
2092
  #: tpl/banner/new_version.php:69 tpl/banner/new_version_dev.tpl.php:24
2093
- #: tpl/toolbox/beta_test.tpl.php:64
2094
  msgid "Upgrade"
2095
  msgstr ""
2096
 
@@ -2114,26 +2086,26 @@ msgstr ""
2114
  msgid "Thank You for Using the LiteSpeed Cache Plugin!"
2115
  msgstr ""
2116
 
2117
- #: tpl/banner/score.php:28 tpl/dash/dashboard.tpl.php:178
2118
  msgid "Page Load Time"
2119
  msgstr ""
2120
 
2121
  #: tpl/banner/score.php:34 tpl/banner/score.php:74
2122
- #: tpl/dash/dashboard.tpl.php:191 tpl/dash/dashboard.tpl.php:259
2123
  msgid "Before"
2124
  msgstr ""
2125
 
2126
  #: tpl/banner/score.php:45 tpl/banner/score.php:84
2127
- #: tpl/dash/dashboard.tpl.php:200 tpl/dash/dashboard.tpl.php:267
2128
  msgid "After"
2129
  msgstr ""
2130
 
2131
  #: tpl/banner/score.php:55 tpl/banner/score.php:94
2132
- #: tpl/dash/dashboard.tpl.php:208 tpl/dash/dashboard.tpl.php:275
2133
  msgid "Improved by"
2134
  msgstr ""
2135
 
2136
- #: tpl/banner/score.php:68 tpl/dash/dashboard.tpl.php:235
2137
  msgid "PageSpeed Score"
2138
  msgstr ""
2139
 
@@ -2296,7 +2268,7 @@ msgstr ""
2296
  msgid "Please visit the <a %s>Information</a> page on how to test the cache."
2297
  msgstr ""
2298
 
2299
- #: tpl/cache/settings-cache.tpl.php:27 tpl/page_optm/entry.tpl.php:31
2300
  msgid "NOTICE"
2301
  msgstr ""
2302
 
@@ -2436,9 +2408,9 @@ msgstr ""
2436
  #: tpl/page_optm/settings_media_exc.tpl.php:27
2437
  #: tpl/page_optm/settings_tuning.tpl.php:36
2438
  #: tpl/page_optm/settings_tuning.tpl.php:57
2439
- #: tpl/page_optm/settings_tuning.tpl.php:102
2440
- #: tpl/page_optm/settings_tuning.tpl.php:166
2441
- #: tpl/page_optm/settings_tuning.tpl.php:187
2442
  msgid "Filter %s is supported."
2443
  msgstr ""
2444
 
@@ -2572,7 +2544,7 @@ msgstr ""
2572
 
2573
  #: tpl/cache/settings-purge.tpl.php:50 tpl/cache/settings-purge.tpl.php:89
2574
  #: tpl/cache/settings-purge.tpl.php:113
2575
- #: tpl/page_optm/settings_tuning.tpl.php:77
2576
  msgid "Note"
2577
  msgstr ""
2578
 
@@ -3070,8 +3042,8 @@ msgstr ""
3070
  msgid "Begin QUIC.cloud CDN Setup"
3071
  msgstr ""
3072
 
3073
- #: tpl/cdn/auto_setup.tpl.php:132 tpl/general/settings.tpl.php:75
3074
- #: tpl/general/settings.tpl.php:77 tpl/general/settings.tpl.php:106
3075
  msgid "Link to QUIC.cloud"
3076
  msgstr ""
3077
 
@@ -3343,11 +3315,11 @@ msgid ""
3343
  "Specify which HTML element attributes will be replaced with CDN Mapping."
3344
  msgstr ""
3345
 
3346
- #: tpl/cdn/settings.tpl.php:127 tpl/img_optm/settings.tpl.php:140
3347
  msgid "Only attributes listed here will be replaced."
3348
  msgstr ""
3349
 
3350
- #: tpl/cdn/settings.tpl.php:128 tpl/img_optm/settings.tpl.php:141
3351
  msgid "Use the format %1$s or %2$s (element is optional)."
3352
  msgstr ""
3353
 
@@ -3476,8 +3448,8 @@ msgid "Map"
3476
  msgstr ""
3477
 
3478
  #: tpl/crawler/entry.tpl.php:9 tpl/general/entry.tpl.php:6
3479
- #: tpl/general/entry.tpl.php:12 tpl/general/network_settings.tpl.php:8
3480
- #: tpl/general/settings.tpl.php:42
3481
  msgid "General Settings"
3482
  msgstr ""
3483
 
@@ -3513,7 +3485,7 @@ msgstr ""
3513
  msgid "Sitemap Total"
3514
  msgstr ""
3515
 
3516
- #: tpl/crawler/map.tpl.php:44 tpl/dash/dashboard.tpl.php:546
3517
  msgid "Crawler Status"
3518
  msgstr ""
3519
 
@@ -3686,15 +3658,15 @@ msgstr ""
3686
  msgid "Run time for previous crawler"
3687
  msgstr ""
3688
 
3689
- #: tpl/crawler/summary.tpl.php:85 tpl/dash/dashboard.tpl.php:559
3690
  msgid "Current crawler started at"
3691
  msgstr ""
3692
 
3693
- #: tpl/crawler/summary.tpl.php:92 tpl/dash/dashboard.tpl.php:566
3694
  msgid "Last interval"
3695
  msgstr ""
3696
 
3697
- #: tpl/crawler/summary.tpl.php:99 tpl/dash/dashboard.tpl.php:573
3698
  msgid "Ended reason"
3699
  msgstr ""
3700
 
@@ -3798,7 +3770,7 @@ msgstr ""
3798
  msgid "CDN Bandwidth"
3799
  msgstr ""
3800
 
3801
- #: tpl/dash/dashboard.tpl.php:59 tpl/dash/dashboard.tpl.php:482
3802
  msgid "Low Quality Image Placeholder"
3803
  msgstr ""
3804
 
@@ -3834,25 +3806,29 @@ msgstr ""
3834
  msgid "Remaining Daily Quota"
3835
  msgstr ""
3836
 
3837
- #: tpl/dash/dashboard.tpl.php:169
 
 
 
 
3838
  msgid "Go to QUIC.cloud dashboard"
3839
  msgstr ""
3840
 
3841
- #: tpl/dash/dashboard.tpl.php:181
3842
  msgid "Refresh page load time"
3843
  msgstr ""
3844
 
3845
- #: tpl/dash/dashboard.tpl.php:222 tpl/dash/dashboard.tpl.php:291
3846
- #: tpl/dash/dashboard.tpl.php:441 tpl/dash/dashboard.tpl.php:474
3847
- #: tpl/dash/dashboard.tpl.php:506 tpl/dash/dashboard.tpl.php:538
3848
  msgid "Last requested"
3849
  msgstr ""
3850
 
3851
- #: tpl/dash/dashboard.tpl.php:227
3852
  msgid "Current closest Cloud server is %s.&#10;Click to redetect."
3853
  msgstr ""
3854
 
3855
- #: tpl/dash/dashboard.tpl.php:227 tpl/img_optm/summary.tpl.php:57
3856
  #: tpl/page_optm/settings_css.tpl.php:93 tpl/page_optm/settings_css.tpl.php:203
3857
  #: tpl/page_optm/settings_media.tpl.php:176
3858
  #: tpl/page_optm/settings_vpi.tpl.php:48
@@ -3860,93 +3836,93 @@ msgid ""
3860
  "Are you sure you want to redetect the closest cloud server for this service?"
3861
  msgstr ""
3862
 
3863
- #: tpl/dash/dashboard.tpl.php:238
3864
  msgid "Refresh page score"
3865
  msgstr ""
3866
 
3867
- #: tpl/dash/dashboard.tpl.php:299 tpl/img_optm/entry.tpl.php:6
3868
  msgid "Image Optimization Summary"
3869
  msgstr ""
3870
 
3871
- #: tpl/dash/dashboard.tpl.php:300 tpl/dash/dashboard.tpl.php:389
3872
- #: tpl/dash/dashboard.tpl.php:417 tpl/dash/dashboard.tpl.php:450
3873
- #: tpl/dash/dashboard.tpl.php:483 tpl/dash/dashboard.tpl.php:515
3874
- #: tpl/dash/dashboard.tpl.php:547
3875
  msgid "More"
3876
  msgstr ""
3877
 
3878
- #: tpl/dash/dashboard.tpl.php:310
3879
  msgid "Image Groups Prepared"
3880
  msgstr ""
3881
 
3882
- #: tpl/dash/dashboard.tpl.php:325
3883
  msgid "Images Requested"
3884
  msgstr ""
3885
 
3886
- #: tpl/dash/dashboard.tpl.php:357 tpl/img_optm/summary.tpl.php:342
3887
  msgid "Last Request"
3888
  msgstr ""
3889
 
3890
- #: tpl/dash/dashboard.tpl.php:360
3891
  msgid "Last Pull"
3892
  msgstr ""
3893
 
3894
- #: tpl/dash/dashboard.tpl.php:388
3895
  msgid "Cache Status"
3896
  msgstr ""
3897
 
3898
- #: tpl/dash/dashboard.tpl.php:394
3899
  msgid "Public Cache"
3900
  msgstr ""
3901
 
3902
- #: tpl/dash/dashboard.tpl.php:395
3903
  msgid "Private Cache"
3904
  msgstr ""
3905
 
3906
- #: tpl/dash/dashboard.tpl.php:416 tpl/toolbox/purge.tpl.php:70
3907
  msgid "Critical CSS"
3908
  msgstr ""
3909
 
3910
- #: tpl/dash/dashboard.tpl.php:422 tpl/dash/dashboard.tpl.php:455
3911
- #: tpl/dash/dashboard.tpl.php:488 tpl/dash/dashboard.tpl.php:520
3912
  #: tpl/page_optm/settings_css.tpl.php:84 tpl/page_optm/settings_css.tpl.php:194
3913
  #: tpl/page_optm/settings_media.tpl.php:170
3914
  #: tpl/page_optm/settings_vpi.tpl.php:42
3915
  msgid "Last generated"
3916
  msgstr ""
3917
 
3918
- #: tpl/dash/dashboard.tpl.php:425 tpl/dash/dashboard.tpl.php:458
3919
- #: tpl/dash/dashboard.tpl.php:491 tpl/dash/dashboard.tpl.php:523
3920
  msgid "Time to execute previous request"
3921
  msgstr ""
3922
 
3923
- #: tpl/dash/dashboard.tpl.php:430 tpl/dash/dashboard.tpl.php:463
3924
- #: tpl/dash/dashboard.tpl.php:496 tpl/dash/dashboard.tpl.php:528
3925
  msgid "Requests in queue"
3926
  msgstr ""
3927
 
3928
- #: tpl/dash/dashboard.tpl.php:433 tpl/dash/dashboard.tpl.php:466
3929
- #: tpl/dash/dashboard.tpl.php:498 tpl/dash/dashboard.tpl.php:530
3930
  msgid "Force cron"
3931
  msgstr ""
3932
 
3933
- #: tpl/dash/dashboard.tpl.php:449 tpl/toolbox/purge.tpl.php:79
3934
  msgid "Unique CSS"
3935
  msgstr ""
3936
 
3937
- #: tpl/dash/dashboard.tpl.php:514
3938
  msgid "Viewport Image"
3939
  msgstr ""
3940
 
3941
- #: tpl/dash/dashboard.tpl.php:551
3942
  msgid "Crawler(s)"
3943
  msgstr ""
3944
 
3945
- #: tpl/dash/dashboard.tpl.php:554
3946
  msgid "Currently active crawler"
3947
  msgstr ""
3948
 
3949
- #: tpl/dash/dashboard.tpl.php:580
3950
  msgid "<b>Last crawled:</b> %d item(s)"
3951
  msgstr ""
3952
 
@@ -4137,6 +4113,7 @@ msgid "A TTL of 0 indicates do not cache."
4137
  msgstr ""
4138
 
4139
  #: tpl/general/entry.tpl.php:7 tpl/page_optm/entry.tpl.php:13
 
4140
  msgid "Tuning"
4141
  msgstr ""
4142
 
@@ -4144,16 +4121,16 @@ msgstr ""
4144
  msgid "LiteSpeed Cache General Settings"
4145
  msgstr ""
4146
 
4147
- #: tpl/general/network_settings.tpl.php:20
4148
  msgid "Use Primary Site Configuration"
4149
  msgstr ""
4150
 
4151
- #: tpl/general/network_settings.tpl.php:24
4152
  msgid ""
4153
  "Check this option to use the primary site's configuration for all subsites."
4154
  msgstr ""
4155
 
4156
- #: tpl/general/network_settings.tpl.php:25
4157
  msgid "This will disable the settings page on all subsites."
4158
  msgstr ""
4159
 
@@ -4185,148 +4162,147 @@ msgstr ""
4185
  msgid "Next available request time: <code>After %s</code>"
4186
  msgstr ""
4187
 
4188
- #: tpl/general/settings.tpl.php:73
4189
  msgid "Visit My Dashboard on QUIC.cloud"
4190
  msgstr ""
4191
 
4192
- #: tpl/general/settings.tpl.php:82 tpl/general/settings.tpl.php:93
4193
- #: tpl/general/settings.tpl.php:105 tpl/general/settings.tpl.php:182
4194
- #: tpl/general/settings.tpl.php:188 tpl/general/settings.tpl.php:194
4195
- #: tpl/general/settings.tpl.php:200 tpl/general/settings.tpl.php:217
4196
- #: tpl/page_optm/settings_media.tpl.php:231
4197
  #: tpl/page_optm/settings_vpi.tpl.php:32
4198
  msgid "Notice"
4199
  msgstr ""
4200
 
4201
- #: tpl/general/settings.tpl.php:83
4202
  msgid ""
4203
  "There was a problem with retrieving your Domain Key. Please click the %s "
4204
  "button to retry."
4205
  msgstr ""
4206
 
4207
- #: tpl/general/settings.tpl.php:84
4208
  msgid ""
4209
  "There are two reasons why we might not be able to communicate with your "
4210
  "domain:"
4211
  msgstr ""
4212
 
4213
- #: tpl/general/settings.tpl.php:85
4214
  msgid "The POST callback to %s failed."
4215
  msgstr ""
4216
 
4217
- #: tpl/general/settings.tpl.php:86
4218
  msgid "Our %s was not allowlisted."
4219
  msgstr ""
4220
 
4221
- #: tpl/general/settings.tpl.php:87
4222
  msgid ""
4223
  "Please verify that your other plugins are not blocking REST API calls, "
4224
  "allowlist our server IPs, or contact your server admin for assistance."
4225
  msgstr ""
4226
 
4227
- #: tpl/general/settings.tpl.php:94
4228
  msgid ""
4229
  "Request submitted. Please wait, then refresh the page to see approval "
4230
  "notification."
4231
  msgstr ""
4232
 
4233
- #: tpl/general/settings.tpl.php:100
4234
  msgid "Warning"
4235
  msgstr ""
4236
 
4237
- #: tpl/general/settings.tpl.php:101
4238
  msgid "You must have %1$s first before linking to QUIC.cloud."
4239
  msgstr ""
4240
 
4241
- #: tpl/general/settings.tpl.php:106
4242
  msgid ""
4243
  "You must click the %s button if you wish to associate this site with a QUIC."
4244
  "cloud account."
4245
  msgstr ""
4246
 
4247
- #: tpl/general/settings.tpl.php:107
4248
  msgid "Benefits of linking to a QUIC.cloud account"
4249
  msgstr ""
4250
 
4251
- #: tpl/general/settings.tpl.php:112
4252
  msgid "A Domain Key is required for QUIC.cloud online services."
4253
  msgstr ""
4254
 
4255
- #: tpl/general/settings.tpl.php:116
4256
  msgid "Main domain"
4257
  msgstr ""
4258
 
4259
- #: tpl/general/settings.tpl.php:119
4260
  msgid "Main domain not generated yet"
4261
  msgstr ""
4262
 
4263
- #: tpl/general/settings.tpl.php:126
4264
  msgid "Current Cloud Nodes in Service"
4265
  msgstr ""
4266
 
4267
- #: tpl/general/settings.tpl.php:127
4268
  msgid "Click to clear all nodes for further redetection."
4269
  msgstr ""
4270
 
4271
- #: tpl/general/settings.tpl.php:127
4272
  msgid "Are you sure you want to clear all cloud nodes?"
4273
  msgstr ""
4274
 
4275
- #: tpl/general/settings.tpl.php:139
4276
  msgid "No cloud services currently in use"
4277
  msgstr ""
4278
 
4279
- #: tpl/general/settings.tpl.php:160
4280
  msgid "This option enables maximum optimization for Guest Mode visitors."
4281
  msgstr ""
4282
 
4283
- #: tpl/general/settings.tpl.php:161
4284
  msgid "Please read all warnings before enabling this option."
4285
  msgstr ""
4286
 
4287
- #: tpl/general/settings.tpl.php:175
4288
  msgid "Your %1s quota on %2s will still be in use."
4289
  msgstr ""
4290
 
4291
- #: tpl/general/settings.tpl.php:182 tpl/page_optm/settings_media.tpl.php:231
4292
  #: tpl/page_optm/settings_vpi.tpl.php:32
4293
  msgid "%s must be turned ON for this setting to work."
4294
  msgstr ""
4295
 
4296
- #: tpl/general/settings.tpl.php:188 tpl/general/settings.tpl.php:200
4297
  msgid "You need to turn %s on to get maximum result."
4298
  msgstr ""
4299
 
4300
- #: tpl/general/settings.tpl.php:194
4301
  msgid ""
4302
  "You need to turn %s on and finish all WebP generation to get maximum result."
4303
  msgstr ""
4304
 
4305
- #: tpl/general/settings.tpl.php:215
4306
  msgid ""
4307
  "Enter this site's IP address to allow cloud services directly call IP "
4308
  "instead of domain name. This eliminates the overhead of DNS and CDN lookups."
4309
  msgstr ""
4310
 
4311
- #: tpl/general/settings.tpl.php:216
4312
  msgid "Your server IP"
4313
  msgstr ""
4314
 
4315
- #: tpl/general/settings.tpl.php:216
4316
  msgid "Check my public IP from"
4317
  msgstr ""
4318
 
4319
- #: tpl/general/settings.tpl.php:217
4320
  msgid ""
4321
  "the auto-detected IP may not be accurate if you have an additional outgoing "
4322
  "IP set, or you have multiple IPs configured on your server."
4323
  msgstr ""
4324
 
4325
- #: tpl/general/settings.tpl.php:218
4326
  msgid "Please make sure this IP is the correct one for visiting your site."
4327
  msgstr ""
4328
 
4329
- #: tpl/general/settings.tpl.php:233
4330
  msgid ""
4331
  "Turn this option ON to show latest news automatically, including hotfixes, "
4332
  "new releases, available beta versions, and promotions."
@@ -4367,16 +4343,17 @@ msgstr ""
4367
  msgid "Guest Mode failed to test."
4368
  msgstr ""
4369
 
4370
- #: tpl/general/settings_tuning.tpl.php:7
4371
  #: tpl/page_optm/settings_tuning.tpl.php:18
 
4372
  msgid "Tuning Settings"
4373
  msgstr ""
4374
 
4375
- #: tpl/general/settings_tuning.tpl.php:28
4376
  msgid "Listed User Agents will be considered as Guest Mode visitors."
4377
  msgstr ""
4378
 
4379
- #: tpl/general/settings_tuning.tpl.php:50
4380
  msgid "Listed IPs will be considered as Guest Mode visitors."
4381
  msgstr ""
4382
 
@@ -4390,6 +4367,10 @@ msgid "LiteSpeed Cache Image Optimization"
4390
  msgstr ""
4391
 
4392
  #: tpl/img_optm/settings.media_webp.tpl.php:14
 
 
 
 
4393
  msgid ""
4394
  "Significantly improve load time by replacing images with their optimized %s "
4395
  "versions."
@@ -4442,21 +4423,17 @@ msgstr ""
4442
  msgid "This will increase the size of optimized files."
4443
  msgstr ""
4444
 
4445
- #: tpl/img_optm/settings.tpl.php:109
4446
- msgid "Request WebP versions of original images when doing optimization."
4447
- msgstr ""
4448
-
4449
- #: tpl/img_optm/settings.tpl.php:139
4450
  msgid "Specify which element attributes will be replaced with WebP."
4451
  msgstr ""
4452
 
4453
- #: tpl/img_optm/settings.tpl.php:155
4454
  msgid ""
4455
  "Enable replacement of WebP in %s elements that were generated outside of "
4456
  "WordPress logic."
4457
  msgstr ""
4458
 
4459
- #: tpl/img_optm/settings.tpl.php:169
4460
  msgid "The image compression quality setting of WordPress out of 100."
4461
  msgstr ""
4462
 
@@ -4835,11 +4812,11 @@ msgstr ""
4835
  msgid "Localization"
4836
  msgstr ""
4837
 
4838
- #: tpl/page_optm/entry.tpl.php:20
4839
  msgid "LiteSpeed Cache Page Optimization"
4840
  msgstr ""
4841
 
4842
- #: tpl/page_optm/entry.tpl.php:32
4843
  msgid ""
4844
  "Please test thoroughly when enabling any option in this list. After changing "
4845
  "Minify/Combine settings, please do a Purge All action."
@@ -5142,7 +5119,7 @@ msgid ""
5142
  msgstr ""
5143
 
5144
  #: tpl/page_optm/settings_localization.tpl.php:127
5145
- #: tpl/toolbox/beta_test.tpl.php:32
5146
  msgid "Example"
5147
  msgstr ""
5148
 
@@ -5298,8 +5275,8 @@ msgstr ""
5298
  #: tpl/page_optm/settings_media_exc.tpl.php:28
5299
  #: tpl/page_optm/settings_tuning.tpl.php:37
5300
  #: tpl/page_optm/settings_tuning.tpl.php:58
5301
- #: tpl/page_optm/settings_tuning.tpl.php:167
5302
- #: tpl/page_optm/settings_tuning.tpl.php:188
5303
  msgid "Elements with attribute %s in html code will be excluded."
5304
  msgstr ""
5305
 
@@ -5328,166 +5305,402 @@ msgid "These images will not generate LQIP."
5328
  msgstr ""
5329
 
5330
  #: tpl/page_optm/settings_tuning.tpl.php:31
5331
- msgid "Listed CSS files or inline CSS code will not be minified/combined."
5332
  msgstr ""
5333
 
5334
  #: tpl/page_optm/settings_tuning.tpl.php:38
5335
  #: tpl/page_optm/settings_tuning.tpl.php:59
5336
- #: tpl/page_optm/settings_tuning.tpl.php:83
5337
- #: tpl/page_optm/settings_tuning.tpl.php:168
5338
  msgid "Predefined list will also be combined w/ the above settings"
5339
  msgstr ""
5340
 
5341
  #: tpl/page_optm/settings_tuning.tpl.php:52
5342
- msgid "Listed JS files or inline JS code will not be minified/combined."
5343
  msgstr ""
5344
 
5345
  #: tpl/page_optm/settings_tuning.tpl.php:73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5346
  msgid ""
5347
  "List the CSS selector that its style should be always contained in UCSS."
5348
  msgstr ""
5349
 
5350
- #: tpl/page_optm/settings_tuning.tpl.php:74
5351
  msgid "How to choose an UCSS allowlist selector?"
5352
  msgstr ""
5353
 
5354
- #: tpl/page_optm/settings_tuning.tpl.php:75
5355
  msgid "Wildcard %s supported."
5356
  msgstr ""
5357
 
5358
- #: tpl/page_optm/settings_tuning.tpl.php:79
5359
  msgid ""
5360
  "The selector must exist in the CSS. Parent classes in the HTML will not work."
5361
  msgstr ""
5362
 
5363
- #: tpl/page_optm/settings_tuning.tpl.php:97
5364
  msgid "Listed URI will not generate UCSS."
5365
  msgstr ""
5366
 
5367
- #: tpl/page_optm/settings_tuning.tpl.php:104
5368
  msgid ""
5369
  "Use %1$s to generate one single UCSS for the pages which page type is %2$s "
5370
  "while other page types still per URL."
5371
  msgstr ""
5372
 
5373
- #: tpl/page_optm/settings_tuning.tpl.php:105
5374
  msgid "Use %1$s to bypass UCSS for the pages which page type is %2$s."
5375
  msgstr ""
5376
 
5377
- #: tpl/page_optm/settings_tuning.tpl.php:119
5378
  msgid ""
5379
  "List post types where each item of that type should have its own CCSS "
5380
  "generated."
5381
  msgstr ""
5382
 
5383
- #: tpl/page_optm/settings_tuning.tpl.php:120
5384
  msgid ""
5385
  "For example, if every Page on the site has different formatting, enter %s in "
5386
  "the box. Separate critical CSS files will be stored for every Page on the "
5387
  "site."
5388
  msgstr ""
5389
 
5390
- #: tpl/page_optm/settings_tuning.tpl.php:134
5391
  msgid ""
5392
  "Separate critical CSS files will be generated for paths containing these "
5393
  "strings."
5394
  msgstr ""
5395
 
5396
- #: tpl/page_optm/settings_tuning.tpl.php:148
5397
  msgid "Specify critical CSS rules for above-the-fold content when enabling %s."
5398
  msgstr ""
5399
 
5400
- #: tpl/page_optm/settings_tuning.tpl.php:161
5401
- msgid "Listed JS files or inline JS code will not be deferred."
 
5402
  msgstr ""
5403
 
5404
- #: tpl/page_optm/settings_tuning.tpl.php:182
5405
- msgid "Listed JS files or inline JS code will not be optimized by %s."
 
 
5406
  msgstr ""
5407
 
5408
- #: tpl/page_optm/settings_tuning.tpl.php:202
5409
- msgid "Prevent any optimization of listed pages."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5410
  msgstr ""
5411
 
5412
- #: tpl/page_optm/settings_tuning.tpl.php:216
 
 
 
 
 
 
 
 
5413
  msgid ""
5414
- "Only optimize pages for guest (not logged in) visitors. If turned this OFF, "
5415
- "CSS/JS/CCSS files will be doubled by each user group."
5416
  msgstr ""
5417
 
5418
- #: tpl/page_optm/settings_tuning.tpl.php:228
5419
- msgid "Selected roles will be excluded from all optimizations."
 
 
5420
  msgstr ""
5421
 
5422
- #: tpl/page_optm/settings_vpi.tpl.php:26
 
 
 
 
 
 
 
 
 
 
 
 
5423
  msgid ""
5424
- "When you use Lazy Load, it will delay the loading of all images on a page."
 
5425
  msgstr ""
5426
 
5427
- #: tpl/page_optm/settings_vpi.tpl.php:27
5428
  msgid ""
5429
- "The Viewport Images service detects which images appear above the fold, and "
5430
- "excludes them from lazy load."
5431
  msgstr ""
5432
 
5433
- #: tpl/page_optm/settings_vpi.tpl.php:28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5434
  msgid ""
5435
- "This enables the page's initial screenful of imagery to be fully displayed "
5436
- "without delay."
 
5437
  msgstr ""
5438
 
5439
- #: tpl/page_optm/settings_vpi.tpl.php:90
5440
- msgid "Enable Viewport Images auto generation cron."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5441
  msgstr ""
5442
 
5443
- #: tpl/toolbox/beta_test.tpl.php:27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5444
  msgid "Try GitHub Version"
5445
  msgstr ""
5446
 
5447
- #: tpl/toolbox/beta_test.tpl.php:31
5448
  msgid ""
5449
  "Use this section to switch plugin versions. To beta test a GitHub commit, "
5450
  "enter the commit URL in the field below."
5451
  msgstr ""
5452
 
5453
- #: tpl/toolbox/beta_test.tpl.php:36
5454
  msgid "Use latest GitHub Dev commit"
5455
  msgstr ""
5456
 
5457
- #: tpl/toolbox/beta_test.tpl.php:38
5458
  msgid "Use latest GitHub Master commit"
5459
  msgstr ""
5460
 
5461
- #: tpl/toolbox/beta_test.tpl.php:40 tpl/toolbox/beta_test.tpl.php:56
5462
  msgid "Use latest WordPress release version"
5463
  msgstr ""
5464
 
5465
- #: tpl/toolbox/beta_test.tpl.php:40
5466
  msgid "OR"
5467
  msgstr ""
5468
 
5469
- #: tpl/toolbox/beta_test.tpl.php:51
5470
  msgid ""
5471
  "Downgrade not recommended. May cause fatal error due to refactored code."
5472
  msgstr ""
5473
 
5474
- #: tpl/toolbox/beta_test.tpl.php:55
5475
  msgid ""
5476
  "Press the %s button to use the most recent GitHub commit. Master is for "
5477
  "release candidate & Dev is for experimental testing."
5478
  msgstr ""
5479
 
5480
- #: tpl/toolbox/beta_test.tpl.php:55
5481
  msgid "Use latest GitHub Dev/Master commit"
5482
  msgstr ""
5483
 
5484
- #: tpl/toolbox/beta_test.tpl.php:56
5485
  msgid ""
5486
  "Press the %s button to stop beta testing and go back to the current release "
5487
  "from the WordPress Plugin Directory."
5488
  msgstr ""
5489
 
5490
- #: tpl/toolbox/beta_test.tpl.php:61
5491
  msgid ""
5492
  "In order to avoid an upgrade error, you must be using %1$s or later before "
5493
  "you can upgrade to %2$s versions."
@@ -5525,10 +5738,6 @@ msgstr ""
5525
  msgid "Current %s Contents"
5526
  msgstr ""
5527
 
5528
- #: tpl/toolbox/entry.tpl.php:10
5529
- msgid "Import / Export"
5530
- msgstr ""
5531
-
5532
  #: tpl/toolbox/entry.tpl.php:14
5533
  msgid "View .htaccess"
5534
  msgstr ""
@@ -5945,10 +6154,6 @@ msgstr ""
5945
  msgid "More information about the available commands can be found here."
5946
  msgstr ""
5947
 
5948
- #: tpl/toolbox/settings-debug.tpl.php:82
5949
- msgid "Basic"
5950
- msgstr ""
5951
-
5952
  #: tpl/toolbox/settings-debug.tpl.php:84
5953
  msgid "Advanced level will log more details."
5954
  msgstr ""
2
  # This file is distributed under the same license as the LiteSpeed Cache package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: LiteSpeed Cache 5.3\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
7
+ "POT-Creation-Date: 2022-10-26 18:41:09+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
41
  msgstr ""
42
 
43
  #: src/admin-display.cls.php:121
44
+ msgid "Presets"
45
+ msgstr ""
46
+
47
+ #: src/admin-display.cls.php:123
48
  msgid "General"
49
  msgstr ""
50
 
51
+ #: src/admin-display.cls.php:125 tpl/cache/entry.tpl.php:6
52
  #: tpl/cache/entry_network.tpl.php:6
53
  msgid "Cache"
54
  msgstr ""
55
 
56
+ #: src/admin-display.cls.php:127 tpl/cdn/settings.tpl.php:194
57
  msgid "CDN"
58
  msgstr ""
59
 
60
+ #: src/admin-display.cls.php:129 src/gui.cls.php:613
61
  #: tpl/dash/dashboard.tpl.php:56 tpl/dash/network_dash.tpl.php:27
62
+ #: tpl/presets/standard.tpl.php:24
63
  msgid "Image Optimization"
64
  msgstr ""
65
 
66
+ #: src/admin-display.cls.php:131 tpl/dash/dashboard.tpl.php:57
67
  msgid "Page Optimization"
68
  msgstr ""
69
 
70
+ #: src/admin-display.cls.php:133
71
  msgid "Database"
72
  msgstr ""
73
 
74
+ #: src/admin-display.cls.php:135 src/lang.cls.php:245
75
  msgid "Crawler"
76
  msgstr ""
77
 
78
+ #: src/admin-display.cls.php:137
79
  msgid "Toolbox"
80
  msgstr ""
81
 
82
+ #: src/admin-display.cls.php:211
83
  msgid "Cookie Name"
84
  msgstr ""
85
 
86
+ #: src/admin-display.cls.php:212 tpl/crawler/settings-simulation.tpl.php:51
87
  msgid "Cookie Values"
88
  msgstr ""
89
 
90
+ #: src/admin-display.cls.php:214
91
  msgid "Remove cookie simulation"
92
  msgstr ""
93
 
94
+ #: src/admin-display.cls.php:215
95
  msgid "Add new cookie to simulate"
96
  msgstr ""
97
 
98
+ #: src/admin-display.cls.php:234
99
  msgid "CDN URL to be used. For example, %s"
100
  msgstr ""
101
 
102
+ #: src/admin-display.cls.php:236
103
  msgid "Remove CDN URL"
104
  msgstr ""
105
 
106
+ #: src/admin-display.cls.php:237
107
  msgid "Add new CDN URL"
108
  msgstr ""
109
 
110
+ #: src/admin-display.cls.php:238 src/admin-display.cls.php:900
111
+ #: src/admin-display.cls.php:929 src/admin-display.cls.php:980
112
  #: tpl/cache/settings-cache.tpl.php:19
113
  #: tpl/cache/settings_inc.cache_mobile.tpl.php:71 tpl/cdn/settings.tpl.php:49
114
  #: tpl/page_optm/settings_css.tpl.php:176
117
  msgid "ON"
118
  msgstr ""
119
 
120
+ #: src/admin-display.cls.php:239 src/admin-display.cls.php:901
121
+ #: src/admin-display.cls.php:928 src/admin-display.cls.php:980
122
  #: tpl/cache/settings-cache.tpl.php:19
123
  #: tpl/cache/settings_inc.object.tpl.php:210 tpl/cdn/settings.tpl.php:54
124
  #: tpl/page_optm/settings_css.tpl.php:74 tpl/page_optm/settings_js.tpl.php:63
127
  msgid "OFF"
128
  msgstr ""
129
 
130
+ #: src/admin-display.cls.php:287 src/gui.cls.php:604
131
  msgid "Settings"
132
  msgstr ""
133
 
134
+ #: src/admin-display.cls.php:503
135
  msgid "Dismiss"
136
  msgstr ""
137
 
138
+ #: src/admin-display.cls.php:769 src/admin-display.cls.php:774
139
  msgid "Save Changes"
140
  msgstr ""
141
 
142
+ #: src/admin-display.cls.php:992
143
  msgid "This setting is overwritten by the PHP constant %s"
144
  msgstr ""
145
 
146
+ #: src/admin-display.cls.php:995
147
  msgid "This setting is overwritten by the primary site setting"
148
  msgstr ""
149
 
150
+ #: src/admin-display.cls.php:998
151
  msgid "This setting is overwritten by the Network setting"
152
  msgstr ""
153
 
154
+ #: src/admin-display.cls.php:1002
155
  msgid "currently set to %s"
156
  msgstr ""
157
 
158
+ #: src/admin-display.cls.php:1012 tpl/cache/settings_inc.object.tpl.php:103
159
  #: tpl/crawler/settings-general.tpl.php:60
160
  #: tpl/crawler/settings-general.tpl.php:74
161
  #: tpl/crawler/settings-general.tpl.php:89 tpl/esi_widget_edit.php:70
162
  msgid "seconds"
163
  msgstr ""
164
 
165
+ #: src/admin-display.cls.php:1043 src/admin-display.cls.php:1048
166
  #: tpl/cdn/settings.tpl.php:99
167
  msgid "Default value"
168
  msgstr ""
169
 
170
+ #: src/admin-display.cls.php:1072
171
  msgid "Invalid rewrite rule"
172
  msgstr ""
173
 
174
+ #: src/admin-display.cls.php:1089
175
  msgid "Path must end with %s"
176
  msgstr ""
177
 
178
+ #: src/admin-display.cls.php:1107
179
  msgid "Minimum value"
180
  msgstr ""
181
 
182
+ #: src/admin-display.cls.php:1110
183
  msgid "Maximum value"
184
  msgstr ""
185
 
186
+ #: src/admin-display.cls.php:1122
187
  msgid "Zero, or"
188
  msgstr ""
189
 
190
+ #: src/admin-display.cls.php:1129
191
  msgid "Larger than"
192
  msgstr ""
193
 
194
+ #: src/admin-display.cls.php:1132
195
  msgid "Smaller than"
196
  msgstr ""
197
 
198
+ #: src/admin-display.cls.php:1135
199
  msgid "Value range"
200
  msgstr ""
201
 
202
+ #: src/admin-display.cls.php:1160
203
  msgid "Invalid IP"
204
  msgstr ""
205
 
206
+ #: src/admin-display.cls.php:1180 tpl/cache/settings-esi.tpl.php:95
207
  #: tpl/page_optm/settings_css.tpl.php:178
208
  #: tpl/page_optm/settings_html.tpl.php:85
209
  #: tpl/page_optm/settings_media.tpl.php:235
210
  #: tpl/page_optm/settings_media_exc.tpl.php:26
211
  #: tpl/page_optm/settings_tuning.tpl.php:35
212
  #: tpl/page_optm/settings_tuning.tpl.php:56
213
+ #: tpl/page_optm/settings_tuning.tpl.php:77
214
+ #: tpl/page_optm/settings_tuning_css.tpl.php:24
215
+ #: tpl/page_optm/settings_tuning_css.tpl.php:84
216
  #: tpl/toolbox/edit_htaccess.tpl.php:54 tpl/toolbox/edit_htaccess.tpl.php:71
217
  msgid "API"
218
  msgstr ""
219
 
220
+ #: src/admin-display.cls.php:1181
221
  msgid "Server variable(s) %s available to override this setting."
222
  msgstr ""
223
 
224
+ #: src/admin-display.cls.php:1193
225
  msgid "The URLs will be compared to the REQUEST_URI server variable."
226
  msgstr ""
227
 
228
+ #: src/admin-display.cls.php:1194
229
  msgid "For example, for %s, %s can be used here."
230
  msgstr ""
231
 
232
+ #: src/admin-display.cls.php:1196
233
  msgid "To match the beginning, add %s to the beginning of the item."
234
  msgstr ""
235
 
236
+ #: src/admin-display.cls.php:1197
237
  msgid "To do an exact match, add %s to the end of the URL."
238
  msgstr ""
239
 
240
+ #: src/admin-display.cls.php:1198 src/doc.cls.php:74
241
  msgid "One per line."
242
  msgstr ""
243
 
244
+ #: src/admin-display.cls.php:1212
245
  msgid "%s groups"
246
  msgstr ""
247
 
248
+ #: src/admin-display.cls.php:1215
249
  msgid "%s images"
250
  msgstr ""
251
 
252
+ #: src/admin-display.cls.php:1225
253
  msgid "%s group"
254
  msgstr ""
255
 
256
+ #: src/admin-display.cls.php:1228
257
  msgid "%s image"
258
  msgstr ""
259
 
324
  "that the account still exists and must be deleted separately."
325
  msgstr ""
326
 
327
+ #: src/cdn-setup.cls.php:322 src/cloud.cls.php:773 src/cloud.cls.php:781
328
+ #: src/cloud.cls.php:1171
329
  msgid "Message from QUIC.cloud server"
330
  msgstr ""
331
 
332
+ #: src/cloud.cls.php:379 src/cloud.cls.php:392 src/cloud.cls.php:437
333
+ #: src/cloud.cls.php:462 src/cloud.cls.php:600 src/cloud.cls.php:1140
334
  msgid "Cloud Error"
335
  msgstr ""
336
 
337
+ #: src/cloud.cls.php:437
338
  msgid "No available Cloud Node."
339
  msgstr ""
340
 
341
+ #: src/cloud.cls.php:462
342
  msgid "No available Cloud Node after checked server load."
343
  msgstr ""
344
 
345
+ #: src/cloud.cls.php:600
346
  msgid "Please try after %1$s for service %2$s."
347
  msgstr ""
348
 
349
+ #: src/cloud.cls.php:687 src/cloud.cls.php:708
350
  msgid "Failed to request via WordPress"
351
  msgstr ""
352
 
353
+ #: src/cloud.cls.php:728
354
  msgid "Redetected node"
355
  msgstr ""
356
 
357
+ #: src/cloud.cls.php:736
358
  msgid ""
359
  "We are working hard to improve your online service experience. The service "
360
  "will be unavailable while we work. We apologize for any inconvenience."
361
  msgstr ""
362
 
363
+ #: src/cloud.cls.php:789
364
  msgid "Good news from QUIC.cloud server"
365
  msgstr ""
366
 
367
+ #: src/cloud.cls.php:798
368
  msgid "%1$s plugin version %2$s required for this action."
369
  msgstr ""
370
 
371
+ #: src/cloud.cls.php:855 src/cloud.cls.php:1160
372
  msgid "Failed to communicate with QUIC.cloud server"
373
  msgstr ""
374
 
375
+ #: src/cloud.cls.php:897
376
  msgid ""
377
  "Site not recognized. Domain Key has been automatically removed. Please "
378
  "request a new one."
379
  msgstr ""
380
 
381
+ #: src/cloud.cls.php:898 src/error.cls.php:48
382
  msgid "Click here to set."
383
  msgstr ""
384
 
385
+ #: src/cloud.cls.php:963
386
  msgid "Cannot request REST API, no token saved."
387
  msgstr ""
388
 
389
+ #: src/cloud.cls.php:989
390
  msgid "Cloud REST Error"
391
  msgstr ""
392
 
393
+ #: src/cloud.cls.php:1007
394
  msgid "Cloud REST API returned error: "
395
  msgstr ""
396
 
397
+ #: src/cloud.cls.php:1179
398
  msgid ""
399
  "Applied for Domain Key successfully. Please wait for result. Domain Key will "
400
  "be automatically sent to your WordPress."
401
  msgstr ""
402
 
403
+ #: src/cloud.cls.php:1233
404
  msgid ""
405
  "Congratulations, your Domain Key has been approved! The setting has been "
406
  "updated accordingly."
407
  msgstr ""
408
 
409
+ #: src/cloud.cls.php:1317
410
  msgid "Domain Key hash mismatch"
411
  msgstr ""
412
 
413
+ #: src/cloud.cls.php:1439
414
  msgid "Sync credit allowance with Cloud Server successfully."
415
  msgstr ""
416
 
417
+ #: src/conf.cls.php:710
418
  msgid "Changed setting successfully."
419
  msgstr ""
420
 
421
+ #: src/core.cls.php:319
422
  msgid "Notified LiteSpeed Web Server to purge everything."
423
  msgstr ""
424
 
425
+ #: src/core.cls.php:324
426
  msgid "Notified LiteSpeed Web Server to purge the list."
427
  msgstr ""
428
 
442
  msgid "Crawler disabled list is cleared! All crawlers are set to active! "
443
  msgstr ""
444
 
445
+ #: src/crawler.cls.php:881
446
  msgid "Guest"
447
  msgstr ""
448
 
449
+ #: src/crawler.cls.php:1032
450
  msgid "Manually added to blocklist"
451
  msgstr ""
452
 
453
+ #: src/crawler.cls.php:1035
454
  msgid "Previously existed in blocklist"
455
  msgstr ""
456
 
457
+ #: src/data.cls.php:224
458
  msgid ""
459
  "The database has been upgrading in the background since %s. This message "
460
  "will disappear once upgrade is complete."
461
  msgstr ""
462
 
463
+ #: src/data.upgrade.func.php:118
464
  msgid ""
465
  "LiteSpeed Cache upgraded successfully. NOTE: Due to changes in this version, "
466
  "the settings %1$s and %2$s have been turned OFF. Please turn them back on "
468
  "errors."
469
  msgstr ""
470
 
471
+ #: src/data.upgrade.func.php:118 src/lang.cls.php:148
472
  msgid "JS Combine"
473
  msgstr ""
474
 
475
+ #: src/data.upgrade.func.php:118
476
  msgid "JS Defer"
477
  msgstr ""
478
 
479
+ #: src/data.upgrade.func.php:119
480
  msgid "Click here to settings"
481
  msgstr ""
482
 
572
  "Before generating key, please verify all IPs on this list are allowlisted"
573
  msgstr ""
574
 
575
+ #: src/doc.cls.php:119 tpl/general/settings.tpl.php:87
576
  msgid "Current Online Server IPs"
577
  msgstr ""
578
 
804
  msgstr ""
805
 
806
  #: src/gui.cls.php:497 src/gui.cls.php:657 src/lang.cls.php:114
807
+ #: tpl/dash/dashboard.tpl.php:421 tpl/toolbox/purge.tpl.php:52
808
  msgid "Object Cache"
809
  msgstr ""
810
 
821
  msgid "LQIP Cache"
822
  msgstr ""
823
 
824
+ #: src/gui.cls.php:556 src/gui.cls.php:716 src/lang.cls.php:177
825
+ #: tpl/presets/standard.tpl.php:42 tpl/toolbox/purge.tpl.php:106
826
  msgid "Gravatar Cache"
827
  msgstr ""
828
 
883
  msgid "No new image gathered."
884
  msgstr ""
885
 
886
+ #: src/img-optm.cls.php:182
887
  msgid "Gathered %d images successfully."
888
  msgstr ""
889
 
890
+ #: src/img-optm.cls.php:474
891
  msgid "Pushed %1$s to Cloud server, accepted %2$s."
892
  msgstr ""
893
 
894
+ #: src/img-optm.cls.php:511
895
  msgid "Bypassed %1$s duplicated images."
896
  msgstr ""
897
 
898
+ #: src/img-optm.cls.php:549
899
  msgid "Cleared %1$s invalid images."
900
  msgstr ""
901
 
902
+ #: src/img-optm.cls.php:628
903
  msgid "No valid image found in the current request."
904
  msgstr ""
905
 
906
+ #: src/img-optm.cls.php:651
907
  msgid "No valid image found by Cloud server in the current request."
908
  msgstr ""
909
 
910
+ #: src/img-optm.cls.php:890
911
  msgid "Pull Cron is running"
912
  msgstr ""
913
 
914
+ #: src/img-optm.cls.php:949
915
  msgid "Some optimized image file(s) has expired and was cleared."
916
  msgstr ""
917
 
918
+ #: src/img-optm.cls.php:966
919
  msgid "One or more pulled images does not match with the notified image md5"
920
  msgstr ""
921
 
922
+ #: src/img-optm.cls.php:1010
923
  msgid "Optimized WebP file expired and was cleared."
924
  msgstr ""
925
 
926
+ #: src/img-optm.cls.php:1027
927
  msgid "Pulled WebP image md5 does not match the notified WebP image md5."
928
  msgstr ""
929
 
930
+ #: src/img-optm.cls.php:1087
931
  msgid "Pulled %d image(s)"
932
  msgstr ""
933
 
934
+ #: src/img-optm.cls.php:1174
935
  msgid "Cleaned up unfinished data successfully."
936
  msgstr ""
937
 
938
+ #: src/img-optm.cls.php:1245
939
  msgid "Destroy all optimization data successfully."
940
  msgstr ""
941
 
942
+ #: src/img-optm.cls.php:1277 src/img-optm.cls.php:1342
943
  msgid "Rescanned successfully."
944
  msgstr ""
945
 
946
+ #: src/img-optm.cls.php:1342
947
  msgid "Rescanned %d images successfully."
948
  msgstr ""
949
 
950
+ #: src/img-optm.cls.php:1401
951
  msgid "Calculated backups successfully."
952
  msgstr ""
953
 
954
+ #: src/img-optm.cls.php:1463
955
  msgid "Removed backups successfully."
956
  msgstr ""
957
 
958
+ #: src/img-optm.cls.php:1658
959
  msgid "Switched images successfully."
960
  msgstr ""
961
 
962
+ #: src/img-optm.cls.php:1686
963
  msgid "Disabled WebP file successfully."
964
  msgstr ""
965
 
966
+ #: src/img-optm.cls.php:1692
967
  msgid "Enabled WebP file successfully."
968
  msgstr ""
969
 
970
+ #: src/img-optm.cls.php:1708
971
  msgid "Restored original file successfully."
972
  msgstr ""
973
 
974
+ #: src/img-optm.cls.php:1715
975
  msgid "Switched to optimized file successfully."
976
  msgstr ""
977
 
978
+ #: src/img-optm.cls.php:1778
979
  msgid "Reset the optimized data successfully."
980
  msgstr ""
981
 
995
  msgid "Images not requested"
996
  msgstr ""
997
 
998
+ #: src/lang.cls.php:24 tpl/dash/dashboard.tpl.php:362
999
  msgid "Images requested"
1000
  msgstr ""
1001
 
1002
+ #: src/lang.cls.php:25 tpl/dash/dashboard.tpl.php:372
1003
  msgid "Images notified to pull"
1004
  msgstr ""
1005
 
1070
  msgid "Enable Cache"
1071
  msgstr ""
1072
 
1073
+ #: src/lang.cls.php:91 tpl/dash/dashboard.tpl.php:422
1074
+ #: tpl/presets/standard.tpl.php:12
1075
  msgid "Browser Cache"
1076
  msgstr ""
1077
 
1272
  msgstr ""
1273
 
1274
  #: src/lang.cls.php:144
1275
+ msgid "UCSS Selector Allowlist"
1276
  msgstr ""
1277
 
1278
  #: src/lang.cls.php:145
1279
+ msgid "UCSS File Excludes and Inline"
1280
  msgstr ""
1281
 
1282
  #: src/lang.cls.php:146
1283
+ msgid "UCSS URI Excludes"
1284
+ msgstr ""
1285
+
1286
+ #: src/lang.cls.php:147
1287
  msgid "JS Minify"
1288
  msgstr ""
1289
 
1290
+ #: src/lang.cls.php:149
1291
  msgid "JS Combine External and Inline"
1292
  msgstr ""
1293
 
1294
+ #: src/lang.cls.php:150
1295
  msgid "HTML Minify"
1296
  msgstr ""
1297
 
1298
+ #: src/lang.cls.php:151
1299
  msgid "HTML Lazy Load Selectors"
1300
  msgstr ""
1301
 
1302
+ #: src/lang.cls.php:152 tpl/page_optm/settings_tuning_css.tpl.php:131
1303
  msgid "Load CSS Asynchronously"
1304
  msgstr ""
1305
 
1306
+ #: src/lang.cls.php:153
1307
  msgid "CCSS Per URL"
1308
  msgstr ""
1309
 
1310
+ #: src/lang.cls.php:154
1311
  msgid "Inline CSS Async Lib"
1312
  msgstr ""
1313
 
1314
+ #: src/lang.cls.php:155 tpl/presets/standard.tpl.php:39
1315
  msgid "Font Display Optimization"
1316
  msgstr ""
1317
 
1318
+ #: src/lang.cls.php:156
1319
  msgid "Load JS Deferred"
1320
  msgstr ""
1321
 
1322
+ #: src/lang.cls.php:157
1323
  msgid "Localize Resources"
1324
  msgstr ""
1325
 
1326
+ #: src/lang.cls.php:158
1327
  msgid "Localization Files"
1328
  msgstr ""
1329
 
1330
+ #: src/lang.cls.php:159
1331
  msgid "DNS Prefetch"
1332
  msgstr ""
1333
 
1334
+ #: src/lang.cls.php:160
1335
  msgid "DNS Prefetch Control"
1336
  msgstr ""
1337
 
1338
+ #: src/lang.cls.php:161
1339
  msgid "CSS Excludes"
1340
  msgstr ""
1341
 
1342
+ #: src/lang.cls.php:162
1343
  msgid "JS Excludes"
1344
  msgstr ""
1345
 
1346
+ #: src/lang.cls.php:163
1347
  msgid "Remove Query Strings"
1348
  msgstr ""
1349
 
1350
+ #: src/lang.cls.php:164
1351
  msgid "Load Google Fonts Asynchronously"
1352
  msgstr ""
1353
 
1354
+ #: src/lang.cls.php:165
1355
  msgid "Remove Google Fonts"
1356
  msgstr ""
1357
 
1358
+ #: src/lang.cls.php:166
1359
  msgid "Critical CSS Rules"
1360
  msgstr ""
1361
 
1362
+ #: src/lang.cls.php:167
1363
  msgid "Separate CCSS Cache Post Types"
1364
  msgstr ""
1365
 
1366
+ #: src/lang.cls.php:168
1367
  msgid "Separate CCSS Cache URIs"
1368
  msgstr ""
1369
 
1370
+ #: src/lang.cls.php:169
1371
  msgid "JS Deferred Excludes"
1372
  msgstr ""
1373
 
1374
+ #: src/lang.cls.php:170
1375
  msgid "Guest Mode JS Excludes"
1376
  msgstr ""
1377
 
1378
+ #: src/lang.cls.php:171 tpl/presets/standard.tpl.php:44
1379
  msgid "Remove WordPress Emoji"
1380
  msgstr ""
1381
 
1382
+ #: src/lang.cls.php:172 tpl/presets/standard.tpl.php:45
1383
  msgid "Remove Noscript Tags"
1384
  msgstr ""
1385
 
1386
+ #: src/lang.cls.php:173
1387
  msgid "URI Excludes"
1388
  msgstr ""
1389
 
1390
+ #: src/lang.cls.php:174
1391
  msgid "Optimize for Guests Only"
1392
  msgstr ""
1393
 
1394
+ #: src/lang.cls.php:175
1395
  msgid "Role Excludes"
1396
  msgstr ""
1397
 
1398
+ #: src/lang.cls.php:178
1399
  msgid "Gravatar Cache Cron"
1400
  msgstr ""
1401
 
1402
+ #: src/lang.cls.php:179
1403
  msgid "Gravatar Cache TTL"
1404
  msgstr ""
1405
 
1406
+ #: src/lang.cls.php:181
1407
  msgid "Lazy Load Images"
1408
  msgstr ""
1409
 
1410
+ #: src/lang.cls.php:182
1411
  msgid "Lazy Load Image Excludes"
1412
  msgstr ""
1413
 
1414
+ #: src/lang.cls.php:183
1415
  msgid "Lazy Load Image Class Name Excludes"
1416
  msgstr ""
1417
 
1418
+ #: src/lang.cls.php:184
1419
  msgid "Lazy Load Image Parent Class Name Excludes"
1420
  msgstr ""
1421
 
1422
+ #: src/lang.cls.php:185
1423
  msgid "Lazy Load Iframe Class Name Excludes"
1424
  msgstr ""
1425
 
1426
+ #: src/lang.cls.php:186
1427
  msgid "Lazy Load Iframe Parent Class Name Excludes"
1428
  msgstr ""
1429
 
1430
+ #: src/lang.cls.php:187
1431
  msgid "Lazy Load URI Excludes"
1432
  msgstr ""
1433
 
1434
+ #: src/lang.cls.php:188
1435
  msgid "LQIP Excludes"
1436
  msgstr ""
1437
 
1438
+ #: src/lang.cls.php:189
1439
  msgid "Basic Image Placeholder"
1440
  msgstr ""
1441
 
1442
+ #: src/lang.cls.php:190
1443
  msgid "Responsive Placeholder"
1444
  msgstr ""
1445
 
1446
+ #: src/lang.cls.php:191
1447
  msgid "Responsive Placeholder Color"
1448
  msgstr ""
1449
 
1450
+ #: src/lang.cls.php:192
1451
  msgid "Responsive Placeholder SVG"
1452
  msgstr ""
1453
 
1454
+ #: src/lang.cls.php:193
1455
  msgid "LQIP Cloud Generator"
1456
  msgstr ""
1457
 
1458
+ #: src/lang.cls.php:194
1459
  msgid "LQIP Quality"
1460
  msgstr ""
1461
 
1462
+ #: src/lang.cls.php:195
1463
  msgid "LQIP Minimum Dimensions"
1464
  msgstr ""
1465
 
1466
+ #: src/lang.cls.php:197
1467
  msgid "Generate LQIP In Background"
1468
  msgstr ""
1469
 
1470
+ #: src/lang.cls.php:198
1471
  msgid "Lazy Load Iframes"
1472
  msgstr ""
1473
 
1474
+ #: src/lang.cls.php:199
1475
  msgid "Add Missing Sizes"
1476
  msgstr ""
1477
 
1478
+ #: src/lang.cls.php:200 src/metabox.cls.php:31 src/metabox.cls.php:32
1479
  #: tpl/page_optm/settings_vpi.tpl.php:12
1480
  msgid "Viewport Images"
1481
  msgstr ""
1482
 
1483
+ #: src/lang.cls.php:201
1484
  msgid "Viewport Images Cron"
1485
  msgstr ""
1486
 
1487
+ #: src/lang.cls.php:203
1488
  msgid "Auto Request Cron"
1489
  msgstr ""
1490
 
1491
+ #: src/lang.cls.php:204
1492
  msgid "Auto Pull Cron"
1493
  msgstr ""
1494
 
1495
+ #: src/lang.cls.php:205
1496
  msgid "Optimize Original Images"
1497
  msgstr ""
1498
 
1499
+ #: src/lang.cls.php:206
1500
  msgid "Remove Original Backups"
1501
  msgstr ""
1502
 
1503
+ #: src/lang.cls.php:207
1504
+ msgid "Image WebP Replacement"
1505
  msgstr ""
1506
 
1507
+ #: src/lang.cls.php:208
1508
  msgid "Optimize Losslessly"
1509
  msgstr ""
1510
 
1511
+ #: src/lang.cls.php:209
1512
  msgid "Preserve EXIF/XMP data"
1513
  msgstr ""
1514
 
1515
+ #: src/lang.cls.php:210
1516
  msgid "WebP Attribute To Replace"
1517
  msgstr ""
1518
 
1519
+ #: src/lang.cls.php:211
1520
  msgid "WebP For Extra srcset"
1521
  msgstr ""
1522
 
1523
+ #: src/lang.cls.php:212
1524
  msgid "WordPress Image Quality Control"
1525
  msgstr ""
1526
 
1527
+ #: src/lang.cls.php:213 tpl/esi_widget_edit.php:36
1528
  msgid "Enable ESI"
1529
  msgstr ""
1530
 
1531
+ #: src/lang.cls.php:214
1532
  msgid "Cache Admin Bar"
1533
  msgstr ""
1534
 
1535
+ #: src/lang.cls.php:215
1536
  msgid "Cache Comment Form"
1537
  msgstr ""
1538
 
1539
+ #: src/lang.cls.php:216
1540
  msgid "ESI Nonces"
1541
  msgstr ""
1542
 
1543
+ #: src/lang.cls.php:217 tpl/page_optm/settings_css.tpl.php:112
1544
  #: tpl/page_optm/settings_css.tpl.php:222 tpl/page_optm/settings_vpi.tpl.php:67
1545
  msgid "Vary Group"
1546
  msgstr ""
1547
 
 
 
 
 
1548
  #: src/lang.cls.php:218
1549
+ msgid "Purge All Hooks"
1550
  msgstr ""
1551
 
1552
  #: src/lang.cls.php:219
1553
+ msgid "Improve HTTP/HTTPS Compatibility"
1554
  msgstr ""
1555
 
1556
  #: src/lang.cls.php:220
1557
+ msgid "Instant Click"
1558
  msgstr ""
1559
 
1560
  #: src/lang.cls.php:221
1561
+ msgid "Do Not Cache Cookies"
1562
  msgstr ""
1563
 
1564
  #: src/lang.cls.php:222
1565
+ msgid "Do Not Cache User Agents"
1566
  msgstr ""
1567
 
1568
  #: src/lang.cls.php:223
1569
+ msgid "Login Cookie"
1570
  msgstr ""
1571
 
1572
  #: src/lang.cls.php:225
1842
  msgid "Mobile"
1843
  msgstr ""
1844
 
1845
+ #: src/metabox.cls.php:58
1846
  msgid "LiteSpeed Options"
1847
  msgstr ""
1848
 
1854
  msgid "LQIP image preview for size %s"
1855
  msgstr ""
1856
 
1857
+ #: src/purge.cls.php:205
1858
  msgid "Purged all caches successfully."
1859
  msgstr ""
1860
 
1861
+ #: src/purge.cls.php:224
1862
  msgid "Notified LiteSpeed Web Server to purge all LSCache entries."
1863
  msgstr ""
1864
 
1865
+ #: src/purge.cls.php:243
1866
  msgid "Cleaned all Critical CSS files."
1867
  msgstr ""
1868
 
1869
+ #: src/purge.cls.php:262
1870
  msgid "Cleaned all Unique CSS files."
1871
  msgstr ""
1872
 
1873
+ #: src/purge.cls.php:300
1874
  msgid "Cleaned all LQIP files."
1875
  msgstr ""
1876
 
1877
+ #: src/purge.cls.php:317
1878
  msgid "Cleaned all Gravatar files."
1879
  msgstr ""
1880
 
1881
+ #: src/purge.cls.php:334
1882
  msgid "Cleaned all localized resource entries."
1883
  msgstr ""
1884
 
1885
+ #: src/purge.cls.php:368
1886
  msgid "Notified LiteSpeed Web Server to purge CSS/JS entries."
1887
  msgstr ""
1888
 
1889
+ #: src/purge.cls.php:384
1890
  msgid "Opcode cache is not enabled."
1891
  msgstr ""
1892
 
1893
+ #: src/purge.cls.php:396
1894
  msgid "Reset the entire opcode cache successfully."
1895
  msgstr ""
1896
 
1897
+ #: src/purge.cls.php:424
1898
  msgid "Object cache is not enabled."
1899
  msgstr ""
1900
 
1901
+ #: src/purge.cls.php:437
1902
  msgid "Purge all object caches successfully."
1903
  msgstr ""
1904
 
1905
+ #: src/purge.cls.php:650
1906
  msgid "Notified LiteSpeed Web Server to purge the front page."
1907
  msgstr ""
1908
 
1909
+ #: src/purge.cls.php:663
1910
  msgid "Notified LiteSpeed Web Server to purge all pages."
1911
  msgstr ""
1912
 
1913
+ #: src/purge.cls.php:682
1914
  msgid "Notified LiteSpeed Web Server to purge error pages."
1915
  msgstr ""
1916
 
1917
+ #: src/purge.cls.php:709
1918
  msgid "Purge category %s"
1919
  msgstr ""
1920
 
1921
+ #: src/purge.cls.php:736
1922
  msgid "Purge tag %s"
1923
  msgstr ""
1924
 
1925
+ #: src/purge.cls.php:767
1926
  msgid "Purge url %s"
1927
  msgstr ""
1928
 
1983
  msgstr ""
1984
 
1985
  #: thirdparty/woocommerce.content.tpl.php:31
 
 
 
 
 
 
 
 
 
 
1986
  msgid "Product Update Interval"
1987
  msgstr ""
1988
 
1989
+ #: thirdparty/woocommerce.content.tpl.php:36
1990
  msgid "Purge product on changes to the quantity or stock status."
1991
  msgstr ""
1992
 
1993
+ #: thirdparty/woocommerce.content.tpl.php:36
1994
  msgid "Purge categories only when stock status changes."
1995
  msgstr ""
1996
 
1997
+ #: thirdparty/woocommerce.content.tpl.php:37
1998
  msgid "Purge product and categories only when the stock status changes."
1999
  msgstr ""
2000
 
2001
+ #: thirdparty/woocommerce.content.tpl.php:38
2002
  msgid "Purge product only when the stock status changes."
2003
  msgstr ""
2004
 
2005
+ #: thirdparty/woocommerce.content.tpl.php:38
2006
  msgid "Do not purge categories on changes to the quantity or stock status."
2007
  msgstr ""
2008
 
2009
+ #: thirdparty/woocommerce.content.tpl.php:39
2010
  msgid ""
2011
  "Always purge both product and categories on changes to the quantity or stock "
2012
  "status."
2013
  msgstr ""
2014
 
2015
+ #: thirdparty/woocommerce.content.tpl.php:52
2016
  msgid ""
2017
  "Determines how changes in product quantity and product stock status affect "
2018
  "product pages and their associated category pages."
2019
  msgstr ""
2020
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2021
  #: thirdparty/woocommerce.tab.tpl.php:3
2022
  msgid "WooCommerce"
2023
  msgstr ""
2046
  msgid "Dismiss this notice"
2047
  msgstr ""
2048
 
2049
+ #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 5.3) #-#-#-#-#
2050
  #. Plugin Name of the plugin/theme
2051
  #: tpl/banner/new_version.php:57 tpl/banner/new_version_dev.tpl.php:12
2052
  #: tpl/cache/more_settings_tip.tpl.php:15 tpl/inc/admin_footer.php:8
2062
  msgstr ""
2063
 
2064
  #: tpl/banner/new_version.php:69 tpl/banner/new_version_dev.tpl.php:24
2065
+ #: tpl/toolbox/beta_test.tpl.php:65
2066
  msgid "Upgrade"
2067
  msgstr ""
2068
 
2086
  msgid "Thank You for Using the LiteSpeed Cache Plugin!"
2087
  msgstr ""
2088
 
2089
+ #: tpl/banner/score.php:28 tpl/dash/dashboard.tpl.php:203
2090
  msgid "Page Load Time"
2091
  msgstr ""
2092
 
2093
  #: tpl/banner/score.php:34 tpl/banner/score.php:74
2094
+ #: tpl/dash/dashboard.tpl.php:216 tpl/dash/dashboard.tpl.php:284
2095
  msgid "Before"
2096
  msgstr ""
2097
 
2098
  #: tpl/banner/score.php:45 tpl/banner/score.php:84
2099
+ #: tpl/dash/dashboard.tpl.php:225 tpl/dash/dashboard.tpl.php:292
2100
  msgid "After"
2101
  msgstr ""
2102
 
2103
  #: tpl/banner/score.php:55 tpl/banner/score.php:94
2104
+ #: tpl/dash/dashboard.tpl.php:233 tpl/dash/dashboard.tpl.php:300
2105
  msgid "Improved by"
2106
  msgstr ""
2107
 
2108
+ #: tpl/banner/score.php:68 tpl/dash/dashboard.tpl.php:260
2109
  msgid "PageSpeed Score"
2110
  msgstr ""
2111
 
2268
  msgid "Please visit the <a %s>Information</a> page on how to test the cache."
2269
  msgstr ""
2270
 
2271
+ #: tpl/cache/settings-cache.tpl.php:27 tpl/page_optm/entry.tpl.php:32
2272
  msgid "NOTICE"
2273
  msgstr ""
2274
 
2408
  #: tpl/page_optm/settings_media_exc.tpl.php:27
2409
  #: tpl/page_optm/settings_tuning.tpl.php:36
2410
  #: tpl/page_optm/settings_tuning.tpl.php:57
2411
+ #: tpl/page_optm/settings_tuning.tpl.php:78
2412
+ #: tpl/page_optm/settings_tuning_css.tpl.php:25
2413
+ #: tpl/page_optm/settings_tuning_css.tpl.php:85
2414
  msgid "Filter %s is supported."
2415
  msgstr ""
2416
 
2544
 
2545
  #: tpl/cache/settings-purge.tpl.php:50 tpl/cache/settings-purge.tpl.php:89
2546
  #: tpl/cache/settings-purge.tpl.php:113
2547
+ #: tpl/page_optm/settings_tuning_css.tpl.php:60
2548
  msgid "Note"
2549
  msgstr ""
2550
 
3042
  msgid "Begin QUIC.cloud CDN Setup"
3043
  msgstr ""
3044
 
3045
+ #: tpl/cdn/auto_setup.tpl.php:132 tpl/general/settings.tpl.php:76
3046
+ #: tpl/general/settings.tpl.php:78 tpl/general/settings.tpl.php:107
3047
  msgid "Link to QUIC.cloud"
3048
  msgstr ""
3049
 
3315
  "Specify which HTML element attributes will be replaced with CDN Mapping."
3316
  msgstr ""
3317
 
3318
+ #: tpl/cdn/settings.tpl.php:127 tpl/img_optm/settings.tpl.php:127
3319
  msgid "Only attributes listed here will be replaced."
3320
  msgstr ""
3321
 
3322
+ #: tpl/cdn/settings.tpl.php:128 tpl/img_optm/settings.tpl.php:128
3323
  msgid "Use the format %1$s or %2$s (element is optional)."
3324
  msgstr ""
3325
 
3448
  msgstr ""
3449
 
3450
  #: tpl/crawler/entry.tpl.php:9 tpl/general/entry.tpl.php:6
3451
+ #: tpl/general/entry.tpl.php:12 tpl/general/network_settings.tpl.php:9
3452
+ #: tpl/general/settings.tpl.php:43
3453
  msgid "General Settings"
3454
  msgstr ""
3455
 
3485
  msgid "Sitemap Total"
3486
  msgstr ""
3487
 
3488
+ #: tpl/crawler/map.tpl.php:44 tpl/dash/dashboard.tpl.php:571
3489
  msgid "Crawler Status"
3490
  msgstr ""
3491
 
3658
  msgid "Run time for previous crawler"
3659
  msgstr ""
3660
 
3661
+ #: tpl/crawler/summary.tpl.php:85 tpl/dash/dashboard.tpl.php:584
3662
  msgid "Current crawler started at"
3663
  msgstr ""
3664
 
3665
+ #: tpl/crawler/summary.tpl.php:92 tpl/dash/dashboard.tpl.php:591
3666
  msgid "Last interval"
3667
  msgstr ""
3668
 
3669
+ #: tpl/crawler/summary.tpl.php:99 tpl/dash/dashboard.tpl.php:598
3670
  msgid "Ended reason"
3671
  msgstr ""
3672
 
3770
  msgid "CDN Bandwidth"
3771
  msgstr ""
3772
 
3773
+ #: tpl/dash/dashboard.tpl.php:59 tpl/dash/dashboard.tpl.php:507
3774
  msgid "Low Quality Image Placeholder"
3775
  msgstr ""
3776
 
3806
  msgid "Remaining Daily Quota"
3807
  msgstr ""
3808
 
3809
+ #: tpl/dash/dashboard.tpl.php:171
3810
+ msgid "Partner Benefits Provided by"
3811
+ msgstr ""
3812
+
3813
+ #: tpl/dash/dashboard.tpl.php:194
3814
  msgid "Go to QUIC.cloud dashboard"
3815
  msgstr ""
3816
 
3817
+ #: tpl/dash/dashboard.tpl.php:206
3818
  msgid "Refresh page load time"
3819
  msgstr ""
3820
 
3821
+ #: tpl/dash/dashboard.tpl.php:247 tpl/dash/dashboard.tpl.php:316
3822
+ #: tpl/dash/dashboard.tpl.php:466 tpl/dash/dashboard.tpl.php:499
3823
+ #: tpl/dash/dashboard.tpl.php:531 tpl/dash/dashboard.tpl.php:563
3824
  msgid "Last requested"
3825
  msgstr ""
3826
 
3827
+ #: tpl/dash/dashboard.tpl.php:252
3828
  msgid "Current closest Cloud server is %s.&#10;Click to redetect."
3829
  msgstr ""
3830
 
3831
+ #: tpl/dash/dashboard.tpl.php:252 tpl/img_optm/summary.tpl.php:57
3832
  #: tpl/page_optm/settings_css.tpl.php:93 tpl/page_optm/settings_css.tpl.php:203
3833
  #: tpl/page_optm/settings_media.tpl.php:176
3834
  #: tpl/page_optm/settings_vpi.tpl.php:48
3836
  "Are you sure you want to redetect the closest cloud server for this service?"
3837
  msgstr ""
3838
 
3839
+ #: tpl/dash/dashboard.tpl.php:263
3840
  msgid "Refresh page score"
3841
  msgstr ""
3842
 
3843
+ #: tpl/dash/dashboard.tpl.php:324 tpl/img_optm/entry.tpl.php:6
3844
  msgid "Image Optimization Summary"
3845
  msgstr ""
3846
 
3847
+ #: tpl/dash/dashboard.tpl.php:325 tpl/dash/dashboard.tpl.php:414
3848
+ #: tpl/dash/dashboard.tpl.php:442 tpl/dash/dashboard.tpl.php:475
3849
+ #: tpl/dash/dashboard.tpl.php:508 tpl/dash/dashboard.tpl.php:540
3850
+ #: tpl/dash/dashboard.tpl.php:572
3851
  msgid "More"
3852
  msgstr ""
3853
 
3854
+ #: tpl/dash/dashboard.tpl.php:335
3855
  msgid "Image Groups Prepared"
3856
  msgstr ""
3857
 
3858
+ #: tpl/dash/dashboard.tpl.php:350
3859
  msgid "Images Requested"
3860
  msgstr ""
3861
 
3862
+ #: tpl/dash/dashboard.tpl.php:382 tpl/img_optm/summary.tpl.php:342
3863
  msgid "Last Request"
3864
  msgstr ""
3865
 
3866
+ #: tpl/dash/dashboard.tpl.php:385
3867
  msgid "Last Pull"
3868
  msgstr ""
3869
 
3870
+ #: tpl/dash/dashboard.tpl.php:413
3871
  msgid "Cache Status"
3872
  msgstr ""
3873
 
3874
+ #: tpl/dash/dashboard.tpl.php:419
3875
  msgid "Public Cache"
3876
  msgstr ""
3877
 
3878
+ #: tpl/dash/dashboard.tpl.php:420
3879
  msgid "Private Cache"
3880
  msgstr ""
3881
 
3882
+ #: tpl/dash/dashboard.tpl.php:441 tpl/toolbox/purge.tpl.php:70
3883
  msgid "Critical CSS"
3884
  msgstr ""
3885
 
3886
+ #: tpl/dash/dashboard.tpl.php:447 tpl/dash/dashboard.tpl.php:480
3887
+ #: tpl/dash/dashboard.tpl.php:513 tpl/dash/dashboard.tpl.php:545
3888
  #: tpl/page_optm/settings_css.tpl.php:84 tpl/page_optm/settings_css.tpl.php:194
3889
  #: tpl/page_optm/settings_media.tpl.php:170
3890
  #: tpl/page_optm/settings_vpi.tpl.php:42
3891
  msgid "Last generated"
3892
  msgstr ""
3893
 
3894
+ #: tpl/dash/dashboard.tpl.php:450 tpl/dash/dashboard.tpl.php:483
3895
+ #: tpl/dash/dashboard.tpl.php:516 tpl/dash/dashboard.tpl.php:548
3896
  msgid "Time to execute previous request"
3897
  msgstr ""
3898
 
3899
+ #: tpl/dash/dashboard.tpl.php:455 tpl/dash/dashboard.tpl.php:488
3900
+ #: tpl/dash/dashboard.tpl.php:521 tpl/dash/dashboard.tpl.php:553
3901
  msgid "Requests in queue"
3902
  msgstr ""
3903
 
3904
+ #: tpl/dash/dashboard.tpl.php:458 tpl/dash/dashboard.tpl.php:491
3905
+ #: tpl/dash/dashboard.tpl.php:523 tpl/dash/dashboard.tpl.php:555
3906
  msgid "Force cron"
3907
  msgstr ""
3908
 
3909
+ #: tpl/dash/dashboard.tpl.php:474 tpl/toolbox/purge.tpl.php:79
3910
  msgid "Unique CSS"
3911
  msgstr ""
3912
 
3913
+ #: tpl/dash/dashboard.tpl.php:539
3914
  msgid "Viewport Image"
3915
  msgstr ""
3916
 
3917
+ #: tpl/dash/dashboard.tpl.php:576
3918
  msgid "Crawler(s)"
3919
  msgstr ""
3920
 
3921
+ #: tpl/dash/dashboard.tpl.php:579
3922
  msgid "Currently active crawler"
3923
  msgstr ""
3924
 
3925
+ #: tpl/dash/dashboard.tpl.php:605
3926
  msgid "<b>Last crawled:</b> %d item(s)"
3927
  msgstr ""
3928
 
4113
  msgstr ""
4114
 
4115
  #: tpl/general/entry.tpl.php:7 tpl/page_optm/entry.tpl.php:13
4116
+ #: tpl/page_optm/entry.tpl.php:14
4117
  msgid "Tuning"
4118
  msgstr ""
4119
 
4121
  msgid "LiteSpeed Cache General Settings"
4122
  msgstr ""
4123
 
4124
+ #: tpl/general/network_settings.tpl.php:21
4125
  msgid "Use Primary Site Configuration"
4126
  msgstr ""
4127
 
4128
+ #: tpl/general/network_settings.tpl.php:25
4129
  msgid ""
4130
  "Check this option to use the primary site's configuration for all subsites."
4131
  msgstr ""
4132
 
4133
+ #: tpl/general/network_settings.tpl.php:26
4134
  msgid "This will disable the settings page on all subsites."
4135
  msgstr ""
4136
 
4162
  msgid "Next available request time: <code>After %s</code>"
4163
  msgstr ""
4164
 
4165
+ #: tpl/general/settings.tpl.php:74
4166
  msgid "Visit My Dashboard on QUIC.cloud"
4167
  msgstr ""
4168
 
4169
+ #: tpl/general/settings.tpl.php:83 tpl/general/settings.tpl.php:94
4170
+ #: tpl/general/settings.tpl.php:106 tpl/general/settings.tpl.php:183
4171
+ #: tpl/general/settings.tpl.php:189 tpl/general/settings.tpl.php:195
4172
+ #: tpl/general/settings.tpl.php:212 tpl/page_optm/settings_media.tpl.php:231
 
4173
  #: tpl/page_optm/settings_vpi.tpl.php:32
4174
  msgid "Notice"
4175
  msgstr ""
4176
 
4177
+ #: tpl/general/settings.tpl.php:84
4178
  msgid ""
4179
  "There was a problem with retrieving your Domain Key. Please click the %s "
4180
  "button to retry."
4181
  msgstr ""
4182
 
4183
+ #: tpl/general/settings.tpl.php:85
4184
  msgid ""
4185
  "There are two reasons why we might not be able to communicate with your "
4186
  "domain:"
4187
  msgstr ""
4188
 
4189
+ #: tpl/general/settings.tpl.php:86
4190
  msgid "The POST callback to %s failed."
4191
  msgstr ""
4192
 
4193
+ #: tpl/general/settings.tpl.php:87
4194
  msgid "Our %s was not allowlisted."
4195
  msgstr ""
4196
 
4197
+ #: tpl/general/settings.tpl.php:88
4198
  msgid ""
4199
  "Please verify that your other plugins are not blocking REST API calls, "
4200
  "allowlist our server IPs, or contact your server admin for assistance."
4201
  msgstr ""
4202
 
4203
+ #: tpl/general/settings.tpl.php:95
4204
  msgid ""
4205
  "Request submitted. Please wait, then refresh the page to see approval "
4206
  "notification."
4207
  msgstr ""
4208
 
4209
+ #: tpl/general/settings.tpl.php:101
4210
  msgid "Warning"
4211
  msgstr ""
4212
 
4213
+ #: tpl/general/settings.tpl.php:102
4214
  msgid "You must have %1$s first before linking to QUIC.cloud."
4215
  msgstr ""
4216
 
4217
+ #: tpl/general/settings.tpl.php:107
4218
  msgid ""
4219
  "You must click the %s button if you wish to associate this site with a QUIC."
4220
  "cloud account."
4221
  msgstr ""
4222
 
4223
+ #: tpl/general/settings.tpl.php:108
4224
  msgid "Benefits of linking to a QUIC.cloud account"
4225
  msgstr ""
4226
 
4227
+ #: tpl/general/settings.tpl.php:113
4228
  msgid "A Domain Key is required for QUIC.cloud online services."
4229
  msgstr ""
4230
 
4231
+ #: tpl/general/settings.tpl.php:117
4232
  msgid "Main domain"
4233
  msgstr ""
4234
 
4235
+ #: tpl/general/settings.tpl.php:120
4236
  msgid "Main domain not generated yet"
4237
  msgstr ""
4238
 
4239
+ #: tpl/general/settings.tpl.php:127
4240
  msgid "Current Cloud Nodes in Service"
4241
  msgstr ""
4242
 
4243
+ #: tpl/general/settings.tpl.php:128
4244
  msgid "Click to clear all nodes for further redetection."
4245
  msgstr ""
4246
 
4247
+ #: tpl/general/settings.tpl.php:128
4248
  msgid "Are you sure you want to clear all cloud nodes?"
4249
  msgstr ""
4250
 
4251
+ #: tpl/general/settings.tpl.php:140
4252
  msgid "No cloud services currently in use"
4253
  msgstr ""
4254
 
4255
+ #: tpl/general/settings.tpl.php:161
4256
  msgid "This option enables maximum optimization for Guest Mode visitors."
4257
  msgstr ""
4258
 
4259
+ #: tpl/general/settings.tpl.php:162
4260
  msgid "Please read all warnings before enabling this option."
4261
  msgstr ""
4262
 
4263
+ #: tpl/general/settings.tpl.php:176
4264
  msgid "Your %1s quota on %2s will still be in use."
4265
  msgstr ""
4266
 
4267
+ #: tpl/general/settings.tpl.php:183 tpl/page_optm/settings_media.tpl.php:231
4268
  #: tpl/page_optm/settings_vpi.tpl.php:32
4269
  msgid "%s must be turned ON for this setting to work."
4270
  msgstr ""
4271
 
4272
+ #: tpl/general/settings.tpl.php:189
4273
  msgid "You need to turn %s on to get maximum result."
4274
  msgstr ""
4275
 
4276
+ #: tpl/general/settings.tpl.php:195
4277
  msgid ""
4278
  "You need to turn %s on and finish all WebP generation to get maximum result."
4279
  msgstr ""
4280
 
4281
+ #: tpl/general/settings.tpl.php:210
4282
  msgid ""
4283
  "Enter this site's IP address to allow cloud services directly call IP "
4284
  "instead of domain name. This eliminates the overhead of DNS and CDN lookups."
4285
  msgstr ""
4286
 
4287
+ #: tpl/general/settings.tpl.php:211
4288
  msgid "Your server IP"
4289
  msgstr ""
4290
 
4291
+ #: tpl/general/settings.tpl.php:211
4292
  msgid "Check my public IP from"
4293
  msgstr ""
4294
 
4295
+ #: tpl/general/settings.tpl.php:212
4296
  msgid ""
4297
  "the auto-detected IP may not be accurate if you have an additional outgoing "
4298
  "IP set, or you have multiple IPs configured on your server."
4299
  msgstr ""
4300
 
4301
+ #: tpl/general/settings.tpl.php:213
4302
  msgid "Please make sure this IP is the correct one for visiting your site."
4303
  msgstr ""
4304
 
4305
+ #: tpl/general/settings.tpl.php:228
4306
  msgid ""
4307
  "Turn this option ON to show latest news automatically, including hotfixes, "
4308
  "new releases, available beta versions, and promotions."
4343
  msgid "Guest Mode failed to test."
4344
  msgstr ""
4345
 
4346
+ #: tpl/general/settings_tuning.tpl.php:8
4347
  #: tpl/page_optm/settings_tuning.tpl.php:18
4348
+ #: tpl/page_optm/settings_tuning_css.tpl.php:7
4349
  msgid "Tuning Settings"
4350
  msgstr ""
4351
 
4352
+ #: tpl/general/settings_tuning.tpl.php:29
4353
  msgid "Listed User Agents will be considered as Guest Mode visitors."
4354
  msgstr ""
4355
 
4356
+ #: tpl/general/settings_tuning.tpl.php:51
4357
  msgid "Listed IPs will be considered as Guest Mode visitors."
4358
  msgstr ""
4359
 
4367
  msgstr ""
4368
 
4369
  #: tpl/img_optm/settings.media_webp.tpl.php:14
4370
+ msgid "Request WebP versions of original images when doing optimization."
4371
+ msgstr ""
4372
+
4373
+ #: tpl/img_optm/settings.media_webp.tpl.php:15
4374
  msgid ""
4375
  "Significantly improve load time by replacing images with their optimized %s "
4376
  "versions."
4423
  msgid "This will increase the size of optimized files."
4424
  msgstr ""
4425
 
4426
+ #: tpl/img_optm/settings.tpl.php:126
 
 
 
 
4427
  msgid "Specify which element attributes will be replaced with WebP."
4428
  msgstr ""
4429
 
4430
+ #: tpl/img_optm/settings.tpl.php:142
4431
  msgid ""
4432
  "Enable replacement of WebP in %s elements that were generated outside of "
4433
  "WordPress logic."
4434
  msgstr ""
4435
 
4436
+ #: tpl/img_optm/settings.tpl.php:156
4437
  msgid "The image compression quality setting of WordPress out of 100."
4438
  msgstr ""
4439
 
4812
  msgid "Localization"
4813
  msgstr ""
4814
 
4815
+ #: tpl/page_optm/entry.tpl.php:21
4816
  msgid "LiteSpeed Cache Page Optimization"
4817
  msgstr ""
4818
 
4819
+ #: tpl/page_optm/entry.tpl.php:33
4820
  msgid ""
4821
  "Please test thoroughly when enabling any option in this list. After changing "
4822
  "Minify/Combine settings, please do a Purge All action."
5119
  msgstr ""
5120
 
5121
  #: tpl/page_optm/settings_localization.tpl.php:127
5122
+ #: tpl/toolbox/beta_test.tpl.php:33
5123
  msgid "Example"
5124
  msgstr ""
5125
 
5275
  #: tpl/page_optm/settings_media_exc.tpl.php:28
5276
  #: tpl/page_optm/settings_tuning.tpl.php:37
5277
  #: tpl/page_optm/settings_tuning.tpl.php:58
5278
+ #: tpl/page_optm/settings_tuning.tpl.php:79
5279
+ #: tpl/page_optm/settings_tuning_css.tpl.php:26
5280
  msgid "Elements with attribute %s in html code will be excluded."
5281
  msgstr ""
5282
 
5305
  msgstr ""
5306
 
5307
  #: tpl/page_optm/settings_tuning.tpl.php:31
5308
+ msgid "Listed JS files or inline JS code will not be minified/combined."
5309
  msgstr ""
5310
 
5311
  #: tpl/page_optm/settings_tuning.tpl.php:38
5312
  #: tpl/page_optm/settings_tuning.tpl.php:59
5313
+ #: tpl/page_optm/settings_tuning_css.tpl.php:27
5314
+ #: tpl/page_optm/settings_tuning_css.tpl.php:66
5315
  msgid "Predefined list will also be combined w/ the above settings"
5316
  msgstr ""
5317
 
5318
  #: tpl/page_optm/settings_tuning.tpl.php:52
5319
+ msgid "Listed JS files or inline JS code will not be deferred."
5320
  msgstr ""
5321
 
5322
  #: tpl/page_optm/settings_tuning.tpl.php:73
5323
+ msgid "Listed JS files or inline JS code will not be optimized by %s."
5324
+ msgstr ""
5325
+
5326
+ #: tpl/page_optm/settings_tuning.tpl.php:93
5327
+ msgid "Prevent any optimization of listed pages."
5328
+ msgstr ""
5329
+
5330
+ #: tpl/page_optm/settings_tuning.tpl.php:107
5331
+ msgid ""
5332
+ "Only optimize pages for guest (not logged in) visitors. If turned this OFF, "
5333
+ "CSS/JS/CCSS files will be doubled by each user group."
5334
+ msgstr ""
5335
+
5336
+ #: tpl/page_optm/settings_tuning.tpl.php:119
5337
+ msgid "Selected roles will be excluded from all optimizations."
5338
+ msgstr ""
5339
+
5340
+ #: tpl/page_optm/settings_tuning_css.tpl.php:20
5341
+ msgid "Listed CSS files or inline CSS code will not be minified/combined."
5342
+ msgstr ""
5343
+
5344
+ #: tpl/page_optm/settings_tuning_css.tpl.php:41
5345
+ msgid "Listed CSS files will be excluded from UCSS and saved to inline."
5346
+ msgstr ""
5347
+
5348
+ #: tpl/page_optm/settings_tuning_css.tpl.php:56
5349
  msgid ""
5350
  "List the CSS selector that its style should be always contained in UCSS."
5351
  msgstr ""
5352
 
5353
+ #: tpl/page_optm/settings_tuning_css.tpl.php:57
5354
  msgid "How to choose an UCSS allowlist selector?"
5355
  msgstr ""
5356
 
5357
+ #: tpl/page_optm/settings_tuning_css.tpl.php:58
5358
  msgid "Wildcard %s supported."
5359
  msgstr ""
5360
 
5361
+ #: tpl/page_optm/settings_tuning_css.tpl.php:62
5362
  msgid ""
5363
  "The selector must exist in the CSS. Parent classes in the HTML will not work."
5364
  msgstr ""
5365
 
5366
+ #: tpl/page_optm/settings_tuning_css.tpl.php:80
5367
  msgid "Listed URI will not generate UCSS."
5368
  msgstr ""
5369
 
5370
+ #: tpl/page_optm/settings_tuning_css.tpl.php:87
5371
  msgid ""
5372
  "Use %1$s to generate one single UCSS for the pages which page type is %2$s "
5373
  "while other page types still per URL."
5374
  msgstr ""
5375
 
5376
+ #: tpl/page_optm/settings_tuning_css.tpl.php:88
5377
  msgid "Use %1$s to bypass UCSS for the pages which page type is %2$s."
5378
  msgstr ""
5379
 
5380
+ #: tpl/page_optm/settings_tuning_css.tpl.php:102
5381
  msgid ""
5382
  "List post types where each item of that type should have its own CCSS "
5383
  "generated."
5384
  msgstr ""
5385
 
5386
+ #: tpl/page_optm/settings_tuning_css.tpl.php:103
5387
  msgid ""
5388
  "For example, if every Page on the site has different formatting, enter %s in "
5389
  "the box. Separate critical CSS files will be stored for every Page on the "
5390
  "site."
5391
  msgstr ""
5392
 
5393
+ #: tpl/page_optm/settings_tuning_css.tpl.php:117
5394
  msgid ""
5395
  "Separate critical CSS files will be generated for paths containing these "
5396
  "strings."
5397
  msgstr ""
5398
 
5399
+ #: tpl/page_optm/settings_tuning_css.tpl.php:131
5400
  msgid "Specify critical CSS rules for above-the-fold content when enabling %s."
5401
  msgstr ""
5402
 
5403
+ #: tpl/page_optm/settings_vpi.tpl.php:26
5404
+ msgid ""
5405
+ "When you use Lazy Load, it will delay the loading of all images on a page."
5406
  msgstr ""
5407
 
5408
+ #: tpl/page_optm/settings_vpi.tpl.php:27
5409
+ msgid ""
5410
+ "The Viewport Images service detects which images appear above the fold, and "
5411
+ "excludes them from lazy load."
5412
  msgstr ""
5413
 
5414
+ #: tpl/page_optm/settings_vpi.tpl.php:28
5415
+ msgid ""
5416
+ "This enables the page's initial screenful of imagery to be fully displayed "
5417
+ "without delay."
5418
+ msgstr ""
5419
+
5420
+ #: tpl/page_optm/settings_vpi.tpl.php:90
5421
+ msgid "Enable Viewport Images auto generation cron."
5422
+ msgstr ""
5423
+
5424
+ #: tpl/presets/entry.tpl.php:6
5425
+ msgid "Standard Presets"
5426
+ msgstr ""
5427
+
5428
+ #: tpl/presets/entry.tpl.php:7 tpl/toolbox/entry.tpl.php:10
5429
+ msgid "Import / Export"
5430
+ msgstr ""
5431
+
5432
+ #: tpl/presets/entry.tpl.php:14
5433
+ msgid "LiteSpeed Cache Configuration Presets"
5434
+ msgstr ""
5435
+
5436
+ #: tpl/presets/standard.tpl.php:8
5437
+ msgid "Essentials"
5438
  msgstr ""
5439
 
5440
+ #: tpl/presets/standard.tpl.php:10
5441
+ msgid "Default Cache"
5442
+ msgstr ""
5443
+
5444
+ #: tpl/presets/standard.tpl.php:11
5445
+ msgid "Higher TTL"
5446
+ msgstr ""
5447
+
5448
+ #: tpl/presets/standard.tpl.php:15
5449
  msgid ""
5450
+ "This no-risk preset is appropriate for all websites. Good for new users, "
5451
+ "simple websites, or cache-oriented development."
5452
  msgstr ""
5453
 
5454
+ #: tpl/presets/standard.tpl.php:16
5455
+ msgid ""
5456
+ "A Domain Key is not required to use this preset. Only basic caching features "
5457
+ "are enabled."
5458
  msgstr ""
5459
 
5460
+ #: tpl/presets/standard.tpl.php:21 tpl/toolbox/settings-debug.tpl.php:82
5461
+ msgid "Basic"
5462
+ msgstr ""
5463
+
5464
+ #: tpl/presets/standard.tpl.php:23
5465
+ msgid "Everything in Essentials, Plus"
5466
+ msgstr ""
5467
+
5468
+ #: tpl/presets/standard.tpl.php:25
5469
+ msgid "Mobile Cache"
5470
+ msgstr ""
5471
+
5472
+ #: tpl/presets/standard.tpl.php:28
5473
  msgid ""
5474
+ "This low-risk preset introduces basic optimizations for speed and user "
5475
+ "experience. Appropriate for enthusiastic beginners."
5476
  msgstr ""
5477
 
5478
+ #: tpl/presets/standard.tpl.php:29
5479
  msgid ""
5480
+ "A Domain Key is required to use this preset. Includes optimizations known to "
5481
+ "improve site score in page speed measurement tools."
5482
  msgstr ""
5483
 
5484
+ #: tpl/presets/standard.tpl.php:34
5485
+ msgid "Advanced (Recommended)"
5486
+ msgstr ""
5487
+
5488
+ #: tpl/presets/standard.tpl.php:36
5489
+ msgid "Everything in Basic, Plus"
5490
+ msgstr ""
5491
+
5492
+ #: tpl/presets/standard.tpl.php:37
5493
+ msgid "Guest Mode and Guest Optimization"
5494
+ msgstr ""
5495
+
5496
+ #: tpl/presets/standard.tpl.php:38
5497
+ msgid "CSS, JS and HTML Minification"
5498
+ msgstr ""
5499
+
5500
+ #: tpl/presets/standard.tpl.php:40
5501
+ msgid "JS Defer for both external and inline JS"
5502
+ msgstr ""
5503
+
5504
+ #: tpl/presets/standard.tpl.php:41
5505
+ msgid "DNS Prefetch for static files"
5506
+ msgstr ""
5507
+
5508
+ #: tpl/presets/standard.tpl.php:43
5509
+ msgid "Remove Query Strings from Static Files"
5510
+ msgstr ""
5511
+
5512
+ #: tpl/presets/standard.tpl.php:48
5513
  msgid ""
5514
+ "This preset is good for most websites, and is unlikely to cause conflicts. "
5515
+ "Any CSS or JS conflicts may be resolved with Page Optimization > Tuning "
5516
+ "tools."
5517
  msgstr ""
5518
 
5519
+ #: tpl/presets/standard.tpl.php:49 tpl/presets/standard.tpl.php:64
5520
+ msgid ""
5521
+ "A Domain Key is required to use this preset. Includes many optimizations "
5522
+ "known to improve page speed scores."
5523
+ msgstr ""
5524
+
5525
+ #: tpl/presets/standard.tpl.php:54
5526
+ msgid "Aggressive"
5527
+ msgstr ""
5528
+
5529
+ #: tpl/presets/standard.tpl.php:56
5530
+ msgid "Everything in Advanced, Plus"
5531
+ msgstr ""
5532
+
5533
+ #: tpl/presets/standard.tpl.php:57
5534
+ msgid "CSS & JS Combine"
5535
+ msgstr ""
5536
+
5537
+ #: tpl/presets/standard.tpl.php:58
5538
+ msgid "Asynchronous CSS Loading with Critical CSS"
5539
+ msgstr ""
5540
+
5541
+ #: tpl/presets/standard.tpl.php:59
5542
+ msgid "Removed Unused CSS for Users"
5543
+ msgstr ""
5544
+
5545
+ #: tpl/presets/standard.tpl.php:60
5546
+ msgid "Lazy Load for Iframes"
5547
+ msgstr ""
5548
+
5549
+ #: tpl/presets/standard.tpl.php:63
5550
+ msgid ""
5551
+ "This preset might work out of the box for some websites, but be sure to "
5552
+ "test! Some CSS or JS exclusions may be necessary in Page Optimization > "
5553
+ "Tuning."
5554
+ msgstr ""
5555
+
5556
+ #: tpl/presets/standard.tpl.php:69
5557
+ msgid "Extreme"
5558
+ msgstr ""
5559
+
5560
+ #: tpl/presets/standard.tpl.php:71
5561
+ msgid "Everything in Aggressive, Plus"
5562
+ msgstr ""
5563
+
5564
+ #: tpl/presets/standard.tpl.php:72
5565
+ msgid "Lazy Load for Images"
5566
+ msgstr ""
5567
+
5568
+ #: tpl/presets/standard.tpl.php:73
5569
+ msgid "Viewport Image Generation"
5570
+ msgstr ""
5571
+
5572
+ #: tpl/presets/standard.tpl.php:74
5573
+ msgid "JS Delayed"
5574
+ msgstr ""
5575
+
5576
+ #: tpl/presets/standard.tpl.php:75
5577
+ msgid "Inline JS added to Combine"
5578
+ msgstr ""
5579
+
5580
+ #: tpl/presets/standard.tpl.php:76
5581
+ msgid "Inline CSS added to Combine"
5582
+ msgstr ""
5583
+
5584
+ #: tpl/presets/standard.tpl.php:79
5585
+ msgid ""
5586
+ "This preset almost certainly will require testing and exclusions for some "
5587
+ "CSS, JS and Lazy Loaded images. Pay special attention to logos, or HTML-"
5588
+ "based slider images."
5589
  msgstr ""
5590
 
5591
+ #: tpl/presets/standard.tpl.php:80
5592
+ msgid ""
5593
+ "A Domain Key is required to use this preset. Enables the maximum level of "
5594
+ "optimizations for improved page speed scores."
5595
+ msgstr ""
5596
+
5597
+ #: tpl/presets/standard.tpl.php:87
5598
+ msgid "LiteSpeed Cache Standard Presets"
5599
+ msgstr ""
5600
+
5601
+ #: tpl/presets/standard.tpl.php:91
5602
+ msgid ""
5603
+ "Use an official LiteSpeed-designed Preset to configure your site in one "
5604
+ "click. Try no-risk caching essentials, extreme optimization, or something in "
5605
+ "between."
5606
+ msgstr ""
5607
+
5608
+ #: tpl/presets/standard.tpl.php:116
5609
+ msgid "Who should use this preset?"
5610
+ msgstr ""
5611
+
5612
+ #: tpl/presets/standard.tpl.php:126
5613
+ msgid ""
5614
+ "This will back up your current settings and replace them with the %1$s "
5615
+ "preset settings. Do you want to continue?"
5616
+ msgstr ""
5617
+
5618
+ #: tpl/presets/standard.tpl.php:128
5619
+ msgid "Apply Preset"
5620
+ msgstr ""
5621
+
5622
+ #: tpl/presets/standard.tpl.php:147
5623
+ msgid "unknown"
5624
+ msgstr ""
5625
+
5626
+ #: tpl/presets/standard.tpl.php:158
5627
+ msgid "History"
5628
+ msgstr ""
5629
+
5630
+ #: tpl/presets/standard.tpl.php:168
5631
+ msgid "Error: Failed to apply the settings %1$s"
5632
+ msgstr ""
5633
+
5634
+ #: tpl/presets/standard.tpl.php:170
5635
+ msgid "Restored backup settings %1$s"
5636
+ msgstr ""
5637
+
5638
+ #: tpl/presets/standard.tpl.php:173
5639
+ msgid "Applied the %1$s preset %2$s"
5640
+ msgstr ""
5641
+
5642
+ #: tpl/presets/standard.tpl.php:184
5643
+ msgid "Backup created %1$s before applying the %2$s preset"
5644
+ msgstr ""
5645
+
5646
+ #: tpl/presets/standard.tpl.php:188
5647
+ msgid ""
5648
+ "This will restore the backup settings created %1$s before applying the %2$s "
5649
+ "preset. Any changes made since then will be lost. Do you want to continue?"
5650
+ msgstr ""
5651
+
5652
+ #: tpl/presets/standard.tpl.php:190
5653
+ msgid "Restore Settings"
5654
+ msgstr ""
5655
+
5656
+ #: tpl/toolbox/beta_test.tpl.php:28
5657
  msgid "Try GitHub Version"
5658
  msgstr ""
5659
 
5660
+ #: tpl/toolbox/beta_test.tpl.php:32
5661
  msgid ""
5662
  "Use this section to switch plugin versions. To beta test a GitHub commit, "
5663
  "enter the commit URL in the field below."
5664
  msgstr ""
5665
 
5666
+ #: tpl/toolbox/beta_test.tpl.php:37
5667
  msgid "Use latest GitHub Dev commit"
5668
  msgstr ""
5669
 
5670
+ #: tpl/toolbox/beta_test.tpl.php:39
5671
  msgid "Use latest GitHub Master commit"
5672
  msgstr ""
5673
 
5674
+ #: tpl/toolbox/beta_test.tpl.php:41 tpl/toolbox/beta_test.tpl.php:57
5675
  msgid "Use latest WordPress release version"
5676
  msgstr ""
5677
 
5678
+ #: tpl/toolbox/beta_test.tpl.php:41
5679
  msgid "OR"
5680
  msgstr ""
5681
 
5682
+ #: tpl/toolbox/beta_test.tpl.php:52
5683
  msgid ""
5684
  "Downgrade not recommended. May cause fatal error due to refactored code."
5685
  msgstr ""
5686
 
5687
+ #: tpl/toolbox/beta_test.tpl.php:56
5688
  msgid ""
5689
  "Press the %s button to use the most recent GitHub commit. Master is for "
5690
  "release candidate & Dev is for experimental testing."
5691
  msgstr ""
5692
 
5693
+ #: tpl/toolbox/beta_test.tpl.php:56
5694
  msgid "Use latest GitHub Dev/Master commit"
5695
  msgstr ""
5696
 
5697
+ #: tpl/toolbox/beta_test.tpl.php:57
5698
  msgid ""
5699
  "Press the %s button to stop beta testing and go back to the current release "
5700
  "from the WordPress Plugin Directory."
5701
  msgstr ""
5702
 
5703
+ #: tpl/toolbox/beta_test.tpl.php:62
5704
  msgid ""
5705
  "In order to avoid an upgrade error, you must be using %1$s or later before "
5706
  "you can upgrade to %2$s versions."
5738
  msgid "Current %s Contents"
5739
  msgstr ""
5740
 
 
 
 
 
5741
  #: tpl/toolbox/entry.tpl.php:14
5742
  msgid "View .htaccess"
5743
  msgstr ""
6154
  msgid "More information about the available commands can be found here."
6155
  msgstr ""
6156
 
 
 
 
 
6157
  #: tpl/toolbox/settings-debug.tpl.php:84
6158
  msgid "Advanced level will log more details."
6159
  msgstr ""
litespeed-cache.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: LiteSpeed Cache
4
  * Plugin URI: https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration
5
  * Description: High-performance page caching and site optimization from LiteSpeed
6
- * Version: 5.2.1
7
  * Author: LiteSpeed Technologies
8
  * Author URI: https://www.litespeedtech.com
9
  * License: GPLv3
@@ -33,7 +33,7 @@ if ( defined( 'LSCWP_V' ) ) {
33
  return;
34
  }
35
 
36
- ! defined( 'LSCWP_V' ) && define( 'LSCWP_V', '5.2.1' );
37
 
38
  ! defined( 'LSCWP_CONTENT_DIR' ) && define( 'LSCWP_CONTENT_DIR', WP_CONTENT_DIR ) ;
39
  ! defined( 'LSCWP_DIR' ) && define( 'LSCWP_DIR', __DIR__ . '/' ) ;// Full absolute path '/var/www/html/***/wp-content/plugins/litespeed-cache/' or MU
3
  * Plugin Name: LiteSpeed Cache
4
  * Plugin URI: https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration
5
  * Description: High-performance page caching and site optimization from LiteSpeed
6
+ * Version: 5.3
7
  * Author: LiteSpeed Technologies
8
  * Author URI: https://www.litespeedtech.com
9
  * License: GPLv3
33
  return;
34
  }
35
 
36
+ ! defined( 'LSCWP_V' ) && define( 'LSCWP_V', '5.3' );
37
 
38
  ! defined( 'LSCWP_CONTENT_DIR' ) && define( 'LSCWP_CONTENT_DIR', WP_CONTENT_DIR ) ;
39
  ! defined( 'LSCWP_DIR' ) && define( 'LSCWP_DIR', __DIR__ . '/' ) ;// Full absolute path '/var/www/html/***/wp-content/plugins/litespeed-cache/' or MU
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: LiteSpeedTech
3
  Tags: caching, optimize, performance, pagespeed, core web vitals, seo, speed, image optimize, compress, object cache, redis, memcached, database cleaner
4
  Requires at least: 4.0
5
- Tested up to: 6.0.2
6
- Stable tag: 5.2.1
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl.html
9
 
@@ -250,6 +250,25 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The
250
 
251
  == Changelog ==
252
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
253
  = 5.2.1 - Sep 7 2022 =
254
  * 🐞**Core** Fixed a fatal error that occurred when uninstalling. (#894556 Hostinger)
255
  * **Dash** Show partner info on the dashboard for partner-tier QC accounts.
2
  Contributors: LiteSpeedTech
3
  Tags: caching, optimize, performance, pagespeed, core web vitals, seo, speed, image optimize, compress, object cache, redis, memcached, database cleaner
4
  Requires at least: 4.0
5
+ Tested up to: 6.0.3
6
+ Stable tag: 5.3
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl.html
9
 
250
 
251
  == Changelog ==
252
 
253
+ = 5.3 - Oct 31 2022 =
254
+ * 🌱**Presets** New `Presets` feature and menu item.
255
+ * 🌱**UCSS** New option `UCSS File Excludes and Inline` to increase page score. (Ankit)
256
+ * **UCSS** When UCSS is purged, automatically append URL to UCSS generation queue. (Ankit)
257
+ * **Page Optimize** Removed a redundant `defer` attribute from Lazy Load image library usage. (#928019)
258
+ * **Image Optimize** Dropped `Create WebP Versions` setting. Will automatically enable when `Image WebP Replacement` is activated.
259
+ * **Cloud** Fixed a bug where internal updates were delayed for API keys.
260
+ * **Cloud** Improved auto alias feature by waiting for second request from alias domain validation before removing a pending alias.
261
+ * **Purge** Automatically Purge All when plugin auto update is done.
262
+ * **Purge** Fixed a potential PHP8 error that occurred when removing unused widgets. (acsnaterse)
263
+ * **Cache** Fixed an infinite 301 redirection caused by UTM-encoded link.
264
+ * **CLI** Added syntax examples for values that include line breaks (xLukii)
265
+ * **CLI** Purge requests will now be included with the original request to avoid potential CSS/JS 404 issues.
266
+ * **ESI** Check all user roles for cache vary and page optimization excludes.
267
+ * **GUI** Added a LiteSpeed icon to admin message banners to indicate the banners are from our plugin. (Michael D)
268
+ * **Crawler** Fixed a cache-miss issue that occurred when Guest Mode was ON and WebP Replacement was OFF.
269
+ * **3rd** Remove WooCommerce private cache.
270
+ * **3rd** Removed LiteSpeed metabox from ACF field group edit page. (keepmovingdk)
271
+
272
  = 5.2.1 - Sep 7 2022 =
273
  * 🐞**Core** Fixed a fatal error that occurred when uninstalling. (#894556 Hostinger)
274
  * **Dash** Show partner info on the dashboard for partner-tier QC accounts.
src/admin-display.cls.php CHANGED
@@ -118,6 +118,8 @@ class Admin_Display extends Base {
118
  // sub menus
119
  $this->_add_submenu( __( 'Dashboard', 'litespeed-cache' ), 'litespeed', 'show_menu_dash' );
120
 
 
 
121
  $this->_add_submenu( __( 'General', 'litespeed-cache' ), 'litespeed-general', 'show_menu_general' );
122
 
123
  $this->_add_submenu( __( 'Cache', 'litespeed-cache' ), 'litespeed-cache', 'show_menu_cache' );
@@ -321,7 +323,7 @@ class Admin_Display extends Base {
321
  // possible translation
322
  $str = Lang::maybe_translate( $str );
323
 
324
- return '<div class="' . $cls . '"><p>'. $str . '</p></div>';
325
  }
326
 
327
  /**
@@ -581,6 +583,16 @@ class Admin_Display extends Base {
581
  require_once LSCWP_DIR . 'tpl/dash/entry.tpl.php';
582
  }
583
 
 
 
 
 
 
 
 
 
 
 
584
  /**
585
  * Displays the General page.
586
  *
118
  // sub menus
119
  $this->_add_submenu( __( 'Dashboard', 'litespeed-cache' ), 'litespeed', 'show_menu_dash' );
120
 
121
+ $this->_add_submenu( __( 'Presets', 'litespeed-cache' ), 'litespeed-presets', 'show_menu_presets' );
122
+
123
  $this->_add_submenu( __( 'General', 'litespeed-cache' ), 'litespeed-general', 'show_menu_general' );
124
 
125
  $this->_add_submenu( __( 'Cache', 'litespeed-cache' ), 'litespeed-cache', 'show_menu_cache' );
323
  // possible translation
324
  $str = Lang::maybe_translate( $str );
325
 
326
+ return '<div class="litespeed_icon ' . $cls . '"><p>'. $str . '</p></div>';
327
  }
328
 
329
  /**
583
  require_once LSCWP_DIR . 'tpl/dash/entry.tpl.php';
584
  }
585
 
586
+ /**
587
+ * Displays the General page.
588
+ *
589
+ * @since 5.3
590
+ * @access public
591
+ */
592
+ public function show_menu_presets() {
593
+ require_once LSCWP_DIR . 'tpl/presets/entry.tpl.php';
594
+ }
595
+
596
  /**
597
  * Displays the General page.
598
  *
src/admin.cls.php CHANGED
@@ -41,24 +41,6 @@ class Admin extends Root {
41
  // add link to plugin list page
42
  add_filter( 'plugin_action_links_' . LSCWP_BASENAME, array( $this->cls( 'Admin_Display' ), 'add_plugin_links' ) );
43
 
44
- if ( defined( 'LITESPEED_ON' ) ) {
45
- // register purge_all actions
46
- $purge_all_events = $this->conf( Base::O_PURGE_HOOK_ALL );
47
-
48
- // purge all on upgrade
49
- if ( $this->conf( Base::O_PURGE_ON_UPGRADE ) ) {
50
- $purge_all_events[] = 'upgrader_process_complete';
51
- $purge_all_events[] = 'admin_action_do-plugin-upgrade';
52
- }
53
- foreach ( $purge_all_events as $event ) {
54
- // Don't allow hook to update_option bcos purge_all will cause infinite loop of update_option
55
- if ( in_array( $event, array( 'update_option' ) ) ) {
56
- continue;
57
- }
58
- add_action( $event, __NAMESPACE__ . '\Purge::purge_all' );
59
- }
60
- // add_filter( 'upgrader_pre_download', 'Purge::filter_with_purge_all' );
61
- }
62
  }
63
 
64
  /**
41
  // add link to plugin list page
42
  add_filter( 'plugin_action_links_' . LSCWP_BASENAME, array( $this->cls( 'Admin_Display' ), 'add_plugin_links' ) );
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  }
45
 
46
  /**
src/base.cls.php CHANGED
@@ -125,7 +125,8 @@ class Base extends Root {
125
  const O_OPTM_CSS_COMB_EXT_INL = 'optm-css_comb_ext_inl';
126
  const O_OPTM_UCSS = 'optm-ucss';
127
  const O_OPTM_UCSS_INLINE = 'optm-ucss_inline';
128
- const O_OPTM_UCSS_WHITELIST = 'optm-ucss_whitelist';
 
129
  const O_OPTM_UCSS_EXC = 'optm-ucss_exc';
130
  const O_OPTM_CSS_EXC = 'optm-css_exc';
131
  const O_OPTM_JS_MIN = 'optm-js_min';
@@ -216,7 +217,6 @@ class Base extends Root {
216
  const O_IMG_OPTM_WEBP = 'img_optm-webp';
217
  const O_IMG_OPTM_LOSSLESS = 'img_optm-lossless';
218
  const O_IMG_OPTM_EXIF = 'img_optm-exif';
219
- const O_IMG_OPTM_WEBP_REPLACE = 'img_optm-webp_replace';
220
  const O_IMG_OPTM_WEBP_ATTR = 'img_optm-webp_attr';
221
  const O_IMG_OPTM_WEBP_REPLACE_SRCSET = 'img_optm-webp_replace_srcset';
222
  const O_IMG_OPTM_JPG_QUALITY = 'img_optm-jpg_quality';
@@ -413,7 +413,8 @@ class Base extends Root {
413
  self::O_OPTM_CSS_COMB_EXT_INL => false,
414
  self::O_OPTM_UCSS => false,
415
  self::O_OPTM_UCSS_INLINE => false,
416
- self::O_OPTM_UCSS_WHITELIST => array(),
 
417
  self::O_OPTM_UCSS_EXC => array(),
418
  self::O_OPTM_CSS_EXC => array(),
419
  self::O_OPTM_JS_MIN => false,
@@ -496,7 +497,6 @@ class Base extends Root {
496
  self::O_IMG_OPTM_WEBP => false,
497
  self::O_IMG_OPTM_LOSSLESS => false,
498
  self::O_IMG_OPTM_EXIF => false,
499
- self::O_IMG_OPTM_WEBP_REPLACE => false,
500
  self::O_IMG_OPTM_WEBP_ATTR => array(),
501
  self::O_IMG_OPTM_WEBP_REPLACE_SRCSET => false,
502
  self::O_IMG_OPTM_JPG_QUALITY => 0,
@@ -588,7 +588,7 @@ class Base extends Root {
588
  self::O_DEBUG_EXC => array(),
589
  self::O_DEBUG_EXC_STRINGS => array(),
590
 
591
- self::O_IMG_OPTM_WEBP_REPLACE => false,
592
 
593
  );
594
 
125
  const O_OPTM_CSS_COMB_EXT_INL = 'optm-css_comb_ext_inl';
126
  const O_OPTM_UCSS = 'optm-ucss';
127
  const O_OPTM_UCSS_INLINE = 'optm-ucss_inline';
128
+ const O_OPTM_UCSS_SELECTOR_WHITELIST = 'optm-ucss_whitelist';
129
+ const O_OPTM_UCSS_FILE_EXC_INLINE = 'optm-ucss_file_exc_inline';
130
  const O_OPTM_UCSS_EXC = 'optm-ucss_exc';
131
  const O_OPTM_CSS_EXC = 'optm-css_exc';
132
  const O_OPTM_JS_MIN = 'optm-js_min';
217
  const O_IMG_OPTM_WEBP = 'img_optm-webp';
218
  const O_IMG_OPTM_LOSSLESS = 'img_optm-lossless';
219
  const O_IMG_OPTM_EXIF = 'img_optm-exif';
 
220
  const O_IMG_OPTM_WEBP_ATTR = 'img_optm-webp_attr';
221
  const O_IMG_OPTM_WEBP_REPLACE_SRCSET = 'img_optm-webp_replace_srcset';
222
  const O_IMG_OPTM_JPG_QUALITY = 'img_optm-jpg_quality';
413
  self::O_OPTM_CSS_COMB_EXT_INL => false,
414
  self::O_OPTM_UCSS => false,
415
  self::O_OPTM_UCSS_INLINE => false,
416
+ self::O_OPTM_UCSS_SELECTOR_WHITELIST => array(),
417
+ self::O_OPTM_UCSS_FILE_EXC_INLINE => array(),
418
  self::O_OPTM_UCSS_EXC => array(),
419
  self::O_OPTM_CSS_EXC => array(),
420
  self::O_OPTM_JS_MIN => false,
497
  self::O_IMG_OPTM_WEBP => false,
498
  self::O_IMG_OPTM_LOSSLESS => false,
499
  self::O_IMG_OPTM_EXIF => false,
 
500
  self::O_IMG_OPTM_WEBP_ATTR => array(),
501
  self::O_IMG_OPTM_WEBP_REPLACE_SRCSET => false,
502
  self::O_IMG_OPTM_JPG_QUALITY => 0,
588
  self::O_DEBUG_EXC => array(),
589
  self::O_DEBUG_EXC_STRINGS => array(),
590
 
591
+ self::O_IMG_OPTM_WEBP => false,
592
 
593
  );
594
 
src/cdn-setup.cls.php CHANGED
@@ -156,7 +156,7 @@ class Cdn_Setup extends Base {
156
 
157
  if (!$json) {
158
  return;
159
- } else if (is_string($json)) {
160
  self::save_summary( array( 'cdn_setup_err' => $json ) );
161
  return;
162
  }
@@ -191,7 +191,7 @@ class Cdn_Setup extends Base {
191
  if ( isset( $this->_summary[ 'cdn_dns_summary' ] ) ) {
192
  unset( $this->_summary[ 'cdn_dns_summary' ] );
193
  }
194
- self::save_summary();
195
 
196
  $this->_setup_token = '';
197
  $this->cls( 'Conf' )->update_confs( array( self::O_QC_TOKEN => '', self::O_QC_NAMESERVERS => '', self::O_CDN_QUIC => false ) );
@@ -230,9 +230,9 @@ class Cdn_Setup extends Base {
230
  'site_url' => home_url(),
231
  'ref' => get_admin_url( null, 'admin.php?page=litespeed-cdn' ),
232
  );
233
-
234
- if ($this->_api_key) {
235
- $data['domain_hash'] = md5( substr( $this->_api_key, 0, 8 ) );
236
  }
237
 
238
  wp_redirect( Cloud::CLOUD_SERVER_DASH . '/u/wptoken?data=' . Utility::arr2str( $data ) );
@@ -277,8 +277,9 @@ class Cdn_Setup extends Base {
277
  'server_ip' => $this->conf( self::O_SERVER_IP ),
278
  );
279
 
280
- if ( $this->_api_key ) {
281
- $data['domain_hash'] = md5( substr( $this->_api_key, 0, 8 ) );
 
282
  }
283
 
284
  $__cloud = $this->cls( 'Cloud' );
156
 
157
  if (!$json) {
158
  return;
159
+ } else if (is_string($json) && $json != 'unauthorized access to REST API.') {
160
  self::save_summary( array( 'cdn_setup_err' => $json ) );
161
  return;
162
  }
191
  if ( isset( $this->_summary[ 'cdn_dns_summary' ] ) ) {
192
  unset( $this->_summary[ 'cdn_dns_summary' ] );
193
  }
194
+ self::save_summary($this->_summary, false, true);
195
 
196
  $this->_setup_token = '';
197
  $this->cls( 'Conf' )->update_confs( array( self::O_QC_TOKEN => '', self::O_QC_NAMESERVERS => '', self::O_CDN_QUIC => false ) );
230
  'site_url' => home_url(),
231
  'ref' => get_admin_url( null, 'admin.php?page=litespeed-cdn' ),
232
  );
233
+ $api_key = $this->conf( self::O_API_KEY );
234
+ if ($api_key) {
235
+ $data['domain_hash'] = md5( substr( $api_key, 0, 8 ) );
236
  }
237
 
238
  wp_redirect( Cloud::CLOUD_SERVER_DASH . '/u/wptoken?data=' . Utility::arr2str( $data ) );
277
  'server_ip' => $this->conf( self::O_SERVER_IP ),
278
  );
279
 
280
+ $api_key = $this->conf( self::O_API_KEY );
281
+ if ($api_key) {
282
+ $data['domain_hash'] = md5( substr( $api_key, 0, 8 ) );
283
  }
284
 
285
  $__cloud = $this->cls( 'Cloud' );
src/cloud.cls.php CHANGED
@@ -104,7 +104,6 @@ class Cloud extends Base {
104
  const TYPE_LINK = 'link';
105
  const TYPE_SYNC_USAGE = 'sync_usage';
106
 
107
- private $_api_key;
108
  private $_setup_token;
109
  protected $_summary;
110
 
@@ -114,11 +113,18 @@ class Cloud extends Base {
114
  * @since 3.0
115
  */
116
  public function __construct() {
117
- $this->_api_key = $this->conf( self::O_API_KEY );
118
  $this->_setup_token = $this->conf( self::O_QC_TOKEN );
119
  $this->_summary = self::get_summary();
120
  }
121
 
 
 
 
 
 
 
 
 
122
  /**
123
  * Show latest commit version always if is on dev
124
  *
@@ -522,7 +528,7 @@ class Cloud extends Base {
522
 
523
  $param = array(
524
  'site_url' => home_url(),
525
- 'domain_key' => $this->_api_key,
526
  'main_domain' => ! empty( $this->_summary[ 'main_domain' ] ) ? $this->_summary[ 'main_domain' ] : '',
527
  'ver' => Core::VER,
528
  );
@@ -564,7 +570,7 @@ class Cloud extends Base {
564
  return true;
565
  }
566
 
567
- if ( $service_tag == self::SVC_D_SYNC_CONF && $this->_setup_token && ! $this->_api_key ) {
568
  self::debug( "Skip sync conf if API key is not available yet." );
569
  return false;
570
  }
@@ -580,7 +586,7 @@ class Cloud extends Base {
580
  }
581
  else {
582
  // For all other requests, if is under debug mode, will always allow
583
- if ( $this->conf( self::O_DEBUG ) && $this->_api_key ) {
584
  return true;
585
  }
586
  }
@@ -603,7 +609,7 @@ class Cloud extends Base {
603
  return true;
604
  }
605
 
606
- if ( ! $this->_api_key ) {
607
  Admin_Display::error( Error::msg( 'lack_of_api_key' ) );
608
  return false;
609
  }
@@ -653,7 +659,7 @@ class Cloud extends Base {
653
 
654
  $param = array(
655
  'site_url' => home_url(),
656
- 'domain_key' => $this->_api_key,
657
  'main_domain' => ! empty( $this->_summary[ 'main_domain' ] ) ? $this->_summary[ 'main_domain' ] : '',
658
  'ver' => Core::VER,
659
  'data' => $data,
@@ -904,16 +910,16 @@ class Cloud extends Base {
904
  return self::err( 'lack_of_param' );
905
  }
906
 
907
- if ( ! $this->_api_key || $_POST[ 'hash' ] !== md5( substr( $this->_api_key, 1, 8 ) ) ) {
908
  return self::err( 'wrong_hash' );
909
  }
910
 
911
  list( $post_data ) = $this->extract_msg( $_POST, 'Quic.cloud', false, true );
912
 
913
  if ( $this->_is_err_domain( $_POST[ 'alias' ] ) ) {
914
- $this->_remove_domain_from_err_list( $_POST[ 'alias' ] );
915
 
916
- $res_hash = substr( $this->_api_key, 2, 4 );
917
 
918
  self::debug( '__callback IP request hash: md5(' . $res_hash . ')' );
919
 
@@ -982,6 +988,8 @@ class Cloud extends Base {
982
  self::debug( 'failed to request REST API: ' . $error_message );
983
  Admin_Display::error( __( 'Cloud REST Error', 'litespeed-cache' ) . ': ' . $error_message );
984
  return $error_message;
 
 
985
  }
986
 
987
  $json = json_decode( $response[ 'body' ], true );
@@ -1010,7 +1018,7 @@ class Cloud extends Base {
1010
  * @access public
1011
  */
1012
  public function show_promo() {
1013
- // if ( ! $this->_api_key && ! defined( 'LITESPEED_DISMISS_DOMAIN_KEY' ) ) {
1014
  // Admin_Display::error( Error::msg( 'lack_of_api_key' ), true );
1015
  // }
1016
 
@@ -1070,12 +1078,12 @@ class Cloud extends Base {
1070
  return self::err( 'lack_of_param' );
1071
  }
1072
 
1073
- if ( empty( $this->_api_key ) ) {
1074
  self::debug( 'Lack of API key' );
1075
  return self::err( 'lack_of_api_key' );
1076
  }
1077
 
1078
- $to_validate = substr( $this->_api_key, 0, 4 );
1079
  if ( $_POST[ 'hash' ] !== md5( $to_validate ) ) {
1080
  self::debug( '__callback IP request hash wrong: md5(' . $to_validate . ') !== ' . $_POST[ 'hash' ] );
1081
  return self::err( 'err_hash' );
@@ -1083,7 +1091,7 @@ class Cloud extends Base {
1083
 
1084
  Control::set_nocache( 'Cloud IP hash validation' );
1085
 
1086
- $res_hash = substr( $this->_api_key, 2, 4 );
1087
 
1088
  self::debug( '__callback IP request hash: md5(' . $res_hash . ')' );
1089
 
@@ -1255,7 +1263,7 @@ class Cloud extends Base {
1255
  * @since 3.0
1256
  */
1257
  public function can_link_qc() {
1258
- return empty( $this->_summary[ 'is_linked' ] ) && $this->_api_key;
1259
  }
1260
 
1261
  /**
@@ -1270,7 +1278,7 @@ class Cloud extends Base {
1270
 
1271
  $data = array(
1272
  'site_url' => home_url(),
1273
- 'domain_hash' => md5( substr( $this->_api_key, 0, 8 ) ),
1274
  'ref' => get_admin_url( null, 'admin.php?page=litespeed-general' ),
1275
  );
1276
 
@@ -1293,7 +1301,7 @@ class Cloud extends Base {
1293
 
1294
  $extraRet = array();
1295
  $qsDrop = array();
1296
- if ( ! $this->_api_key && ! empty( $this->_summary[ 'is_linked' ] ) ) {
1297
  $this->_summary[ 'is_linked' ] = 0;
1298
  self::save_summary();
1299
  }
@@ -1305,7 +1313,7 @@ class Cloud extends Base {
1305
 
1306
  if ( ! empty( $_GET[ 'domain_hash' ] ) ) {
1307
 
1308
- if ( md5( substr( $this->_api_key, 2, 8 ) ) !== $_GET[ 'domain_hash' ] ) {
1309
  Admin_Display::error( __( 'Domain Key hash mismatch', 'litespeed-cache' ), true );
1310
  return $extraRet;
1311
  }
104
  const TYPE_LINK = 'link';
105
  const TYPE_SYNC_USAGE = 'sync_usage';
106
 
 
107
  private $_setup_token;
108
  protected $_summary;
109
 
113
  * @since 3.0
114
  */
115
  public function __construct() {
 
116
  $this->_setup_token = $this->conf( self::O_QC_TOKEN );
117
  $this->_summary = self::get_summary();
118
  }
119
 
120
+ /**
121
+ * Get api key from conf
122
+ * @since 5.3
123
+ */
124
+ private function _api_key() {
125
+ return $this->conf( self::O_API_KEY );
126
+ }
127
+
128
  /**
129
  * Show latest commit version always if is on dev
130
  *
528
 
529
  $param = array(
530
  'site_url' => home_url(),
531
+ 'domain_key' => $this->_api_key(),
532
  'main_domain' => ! empty( $this->_summary[ 'main_domain' ] ) ? $this->_summary[ 'main_domain' ] : '',
533
  'ver' => Core::VER,
534
  );
570
  return true;
571
  }
572
 
573
+ if ( $service_tag == self::SVC_D_SYNC_CONF && $this->_setup_token && ! $this->_api_key() ) {
574
  self::debug( "Skip sync conf if API key is not available yet." );
575
  return false;
576
  }
586
  }
587
  else {
588
  // For all other requests, if is under debug mode, will always allow
589
+ if ( $this->conf( self::O_DEBUG ) && $this->_api_key() ) {
590
  return true;
591
  }
592
  }
609
  return true;
610
  }
611
 
612
+ if ( ! $this->_api_key() ) {
613
  Admin_Display::error( Error::msg( 'lack_of_api_key' ) );
614
  return false;
615
  }
659
 
660
  $param = array(
661
  'site_url' => home_url(),
662
+ 'domain_key' => $this->_api_key(),
663
  'main_domain' => ! empty( $this->_summary[ 'main_domain' ] ) ? $this->_summary[ 'main_domain' ] : '',
664
  'ver' => Core::VER,
665
  'data' => $data,
910
  return self::err( 'lack_of_param' );
911
  }
912
 
913
+ if ( ! $this->_api_key() || $_POST[ 'hash' ] !== md5( substr( $this->_api_key(), 1, 8 ) ) ) {
914
  return self::err( 'wrong_hash' );
915
  }
916
 
917
  list( $post_data ) = $this->extract_msg( $_POST, 'Quic.cloud', false, true );
918
 
919
  if ( $this->_is_err_domain( $_POST[ 'alias' ] ) ) {
920
+ if ( $_POST[ 'alias' ] == home_url() ) $this->_remove_domain_from_err_list( $_POST[ 'alias' ] );
921
 
922
+ $res_hash = substr( $this->_api_key(), 2, 4 );
923
 
924
  self::debug( '__callback IP request hash: md5(' . $res_hash . ')' );
925
 
988
  self::debug( 'failed to request REST API: ' . $error_message );
989
  Admin_Display::error( __( 'Cloud REST Error', 'litespeed-cache' ) . ': ' . $error_message );
990
  return $error_message;
991
+ } else if ( wp_remote_retrieve_response_code( $response ) == '401' ) {
992
+ return 'unauthorized access to REST API.';
993
  }
994
 
995
  $json = json_decode( $response[ 'body' ], true );
1018
  * @access public
1019
  */
1020
  public function show_promo() {
1021
+ // if ( ! $this->_api_key() && ! defined( 'LITESPEED_DISMISS_DOMAIN_KEY' ) ) {
1022
  // Admin_Display::error( Error::msg( 'lack_of_api_key' ), true );
1023
  // }
1024
 
1078
  return self::err( 'lack_of_param' );
1079
  }
1080
 
1081
+ if ( empty( $this->_api_key() ) ) {
1082
  self::debug( 'Lack of API key' );
1083
  return self::err( 'lack_of_api_key' );
1084
  }
1085
 
1086
+ $to_validate = substr( $this->_api_key(), 0, 4 );
1087
  if ( $_POST[ 'hash' ] !== md5( $to_validate ) ) {
1088
  self::debug( '__callback IP request hash wrong: md5(' . $to_validate . ') !== ' . $_POST[ 'hash' ] );
1089
  return self::err( 'err_hash' );
1091
 
1092
  Control::set_nocache( 'Cloud IP hash validation' );
1093
 
1094
+ $res_hash = substr( $this->_api_key(), 2, 4 );
1095
 
1096
  self::debug( '__callback IP request hash: md5(' . $res_hash . ')' );
1097
 
1263
  * @since 3.0
1264
  */
1265
  public function can_link_qc() {
1266
+ return empty( $this->_summary[ 'is_linked' ] ) && $this->_api_key();
1267
  }
1268
 
1269
  /**
1278
 
1279
  $data = array(
1280
  'site_url' => home_url(),
1281
+ 'domain_hash' => md5( substr( $this->_api_key(), 0, 8 ) ),
1282
  'ref' => get_admin_url( null, 'admin.php?page=litespeed-general' ),
1283
  );
1284
 
1301
 
1302
  $extraRet = array();
1303
  $qsDrop = array();
1304
+ if ( ! $this->_api_key() && ! empty( $this->_summary[ 'is_linked' ] ) ) {
1305
  $this->_summary[ 'is_linked' ] = 0;
1306
  self::save_summary();
1307
  }
1313
 
1314
  if ( ! empty( $_GET[ 'domain_hash' ] ) ) {
1315
 
1316
+ if ( md5( substr( $this->_api_key(), 2, 8 ) ) !== $_GET[ 'domain_hash' ] ) {
1317
  Admin_Display::error( __( 'Domain Key hash mismatch', 'litespeed-cache' ), true );
1318
  return $extraRet;
1319
  }
src/conf.cls.php CHANGED
@@ -488,7 +488,7 @@ class Conf extends Base {
488
  }
489
 
490
  // Reset crawler bypassed list when any of the options WebP replace, guest mode, or cache mobile got changed
491
- if ( $id == self::O_IMG_OPTM_WEBP_REPLACE || $id == self::O_GUEST || $id == self::O_CACHE_MOBILE ) {
492
  $this->cls( 'Crawler' )->clear_disabled_list();
493
  }
494
  }
@@ -659,7 +659,10 @@ class Conf extends Base {
659
  return false;
660
  }
661
 
662
- return in_array( $role, $this->conf( self::O_OPTM_EXC_ROLES ) ) ? $role : false;
 
 
 
663
  }
664
 
665
  /**
488
  }
489
 
490
  // Reset crawler bypassed list when any of the options WebP replace, guest mode, or cache mobile got changed
491
+ if ( $id == self::O_IMG_OPTM_WEBP || $id == self::O_GUEST || $id == self::O_CACHE_MOBILE ) {
492
  $this->cls( 'Crawler' )->clear_disabled_list();
493
  }
494
  }
659
  return false;
660
  }
661
 
662
+ $roles = explode( ',', $role );
663
+ $found = array_intersect( $roles, $this->conf( self::O_OPTM_EXC_ROLES ) );
664
+
665
+ return $found ? implode(',', $found) : false;
666
  }
667
 
668
  /**
src/control.cls.php CHANGED
@@ -12,6 +12,8 @@ namespace LiteSpeed;
12
  defined( 'WPINC' ) || exit;
13
 
14
  class Control extends Root {
 
 
15
  const BM_CACHEABLE = 1;
16
  const BM_PRIVATE = 2;
17
  const BM_SHARED = 4;
@@ -91,7 +93,10 @@ class Control extends Root {
91
  return false;
92
  }
93
 
94
- return in_array( $role, $this->conf( Base::O_CACHE_EXC_ROLES ) ) ? $role : false;
 
 
 
95
  }
96
 
97
  /**
@@ -495,8 +500,8 @@ class Control extends Root {
495
  */
496
  public function check_redirect( $location, $status ) { // TODO: some env don't have SCRIPT_URI but only REQUEST_URI, need to be compatible
497
  if ( ! empty( $_SERVER[ 'SCRIPT_URI' ] ) ) { // dont check $status == '301' anymore
498
- Debug2::debug( "[Ctrl] 301 from " . $_SERVER[ 'SCRIPT_URI' ] );
499
- Debug2::debug( "[Ctrl] 301 to $location" );
500
 
501
  $to_check = array(
502
  PHP_URL_SCHEME,
@@ -508,9 +513,19 @@ class Control extends Root {
508
  $is_same_redirect = true;
509
 
510
  foreach ( $to_check as $v ) {
511
- if ( parse_url( $_SERVER[ 'SCRIPT_URI' ], $v ) != parse_url( $location, $v ) ) {
 
 
 
 
 
 
 
 
 
 
512
  $is_same_redirect = false;
513
- Debug2::debug( "[Ctrl] 301 different redirection" );
514
  break;
515
  }
516
  }
12
  defined( 'WPINC' ) || exit;
13
 
14
  class Control extends Root {
15
+ const LOG_TAG = '💵';
16
+
17
  const BM_CACHEABLE = 1;
18
  const BM_PRIVATE = 2;
19
  const BM_SHARED = 4;
93
  return false;
94
  }
95
 
96
+ $roles = explode( ',', $role );
97
+ $found = array_intersect( $roles, array_keys( $this->conf( Base::O_CACHE_EXC_ROLES ) ) );
98
+
99
+ return $found ? implode( ',', $found ) : false;
100
  }
101
 
102
  /**
500
  */
501
  public function check_redirect( $location, $status ) { // TODO: some env don't have SCRIPT_URI but only REQUEST_URI, need to be compatible
502
  if ( ! empty( $_SERVER[ 'SCRIPT_URI' ] ) ) { // dont check $status == '301' anymore
503
+ self::debug( "301 from " . $_SERVER[ 'SCRIPT_URI' ] );
504
+ self::debug( "301 to $location" );
505
 
506
  $to_check = array(
507
  PHP_URL_SCHEME,
513
  $is_same_redirect = true;
514
 
515
  foreach ( $to_check as $v ) {
516
+ $url_parsed = $v == PHP_URL_QUERY ? $_SERVER[ 'QUERY_STRING' ] : parse_url( $_SERVER[ 'SCRIPT_URI' ], $v );
517
+ $target = parse_url( $location, $v );
518
+
519
+ self::debug("Compare [from] $url_parsed [to] $target");
520
+
521
+ if($v==PHP_URL_QUERY) {
522
+ $url_parsed = urldecode($url_parsed);
523
+ $target = urldecode($target);
524
+ }
525
+
526
+ if ( $url_parsed != $target ) {
527
  $is_same_redirect = false;
528
+ self::debug( "301 different redirection" );
529
  break;
530
  }
531
  }
src/core.cls.php CHANGED
@@ -76,24 +76,48 @@ class Core extends Root {
76
  // }
77
 
78
  add_action( 'plugins_loaded', array( $this, 'plugins_loaded' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  add_action( 'after_setup_theme', array( $this, 'init' ) );
80
 
81
  // Check if there is a purge request in queue
82
- $purge_queue = Purge::get_option( Purge::DB_QUEUE );
83
- if ( $purge_queue && $purge_queue != -1 ) {
84
- @header( $purge_queue );
85
- Debug2::debug( '[Core] Purge Queue found&sent: ' . $purge_queue );
86
- }
87
- if ( $purge_queue != -1 ) {
88
- Purge::update_option( Purge::DB_QUEUE, -1 ); // Use 0 to bypass purge while still enable db update as WP's update_option will check value===false to bypass update
89
- }
90
- $purge_queue = Purge::get_option( Purge::DB_QUEUE2 );
91
- if ( $purge_queue && $purge_queue != -1 ) {
92
- @header( $purge_queue );
93
- Debug2::debug( '[Core] Purge2 Queue found&sent: ' . $purge_queue );
94
- }
95
- if ( $purge_queue != -1 ) {
96
- Purge::update_option( Purge::DB_QUEUE2, -1 );
 
 
 
97
  }
98
 
99
  /**
@@ -190,6 +214,10 @@ class Core extends Root {
190
 
191
  // Load 3rd party hooks
192
  add_action( 'wp_loaded', array( $this, 'load_thirdparty' ), 2 );
 
 
 
 
193
  }
194
 
195
  /**
@@ -546,34 +574,25 @@ class Core extends Root {
546
 
547
  // send Control header
548
  if ( defined( 'LITESPEED_ON' ) && $control_header ) {
549
- @header( $control_header );
550
- if ( defined( 'LSCWP_LOG' ) ) {
551
- Debug2::debug( '💰 ' . $control_header );
552
- if ( $running_info_showing ) {
553
- $this->footer_comment .= "\n<!-- " . $control_header . " -->";
554
- }
555
  }
556
  }
557
  // send PURGE header (Always send regardless of cache setting disabled/enabled)
558
  if ( defined( 'LITESPEED_ON' ) && $purge_header ) {
559
- @header( $purge_header );
560
  Debug2::log_purge( $purge_header );
561
 
562
- if ( defined( 'LSCWP_LOG' ) ) {
563
- Debug2::debug( '💰 ' . $purge_header );
564
- if ( $running_info_showing ) {
565
- $this->footer_comment .= "\n<!-- " . $purge_header . " -->";
566
- }
567
  }
568
  }
569
  // send Vary header
570
  if ( defined( 'LITESPEED_ON' ) && $vary_header ) {
571
- @header( $vary_header );
572
- if ( defined( 'LSCWP_LOG' ) ) {
573
- Debug2::debug( '💰 ' . $vary_header );
574
- if ( $running_info_showing ) {
575
- $this->footer_comment .= "\n<!-- " . $vary_header . " -->";
576
- }
577
  }
578
  }
579
 
@@ -592,18 +611,14 @@ class Core extends Root {
592
  if ( $vary_header ) {
593
  $debug_header .= $vary_header . '; ';
594
  }
595
- @header( $debug_header );
596
- Debug2::debug( $debug_header );
597
  }
598
  else {
599
  // Control header
600
  if ( defined( 'LITESPEED_ON' ) && Control::is_cacheable() && $tag_header ) {
601
- @header( $tag_header );
602
- if ( defined( 'LSCWP_LOG' ) ) {
603
- Debug2::debug( '💰 ' . $tag_header );
604
- if ( $running_info_showing ) {
605
- $this->footer_comment .= "\n<!-- " . $tag_header . " -->";
606
- }
607
  }
608
  }
609
  }
@@ -621,6 +636,43 @@ class Core extends Root {
621
  Debug2::debug( '--forced--' );
622
  }
623
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
624
  }
625
 
626
  }
76
  // }
77
 
78
  add_action( 'plugins_loaded', array( $this, 'plugins_loaded' ) );
79
+
80
+ if ( defined( 'LITESPEED_ON' ) ) {
81
+ // register purge_all actions
82
+ $purge_all_events = $this->conf( Base::O_PURGE_HOOK_ALL );
83
+
84
+ // purge all on upgrade
85
+ if ( $this->conf( Base::O_PURGE_ON_UPGRADE ) ) {
86
+ $purge_all_events[] = 'automatic_updates_complete';
87
+ $purge_all_events[] = 'upgrader_process_complete';
88
+ $purge_all_events[] = 'admin_action_do-plugin-upgrade';
89
+ }
90
+ foreach ( $purge_all_events as $event ) {
91
+ // Don't allow hook to update_option bcos purge_all will cause infinite loop of update_option
92
+ if ( in_array( $event, array( 'update_option' ) ) ) {
93
+ continue;
94
+ }
95
+ add_action( $event, __NAMESPACE__ . '\Purge::purge_all' );
96
+ }
97
+ // add_filter( 'upgrader_pre_download', 'Purge::filter_with_purge_all' );
98
+ }
99
+
100
  add_action( 'after_setup_theme', array( $this, 'init' ) );
101
 
102
  // Check if there is a purge request in queue
103
+ if (!defined( 'LITESPEED_CLI' )) {
104
+ $purge_queue = Purge::get_option( Purge::DB_QUEUE );
105
+ if ( $purge_queue && $purge_queue != -1 ) {
106
+ $this->_http_header( $purge_queue );
107
+ Debug2::debug( '[Core] Purge Queue found&sent: ' . $purge_queue );
108
+ }
109
+ if ( $purge_queue != -1 ) {
110
+ Purge::update_option( Purge::DB_QUEUE, -1 ); // Use 0 to bypass purge while still enable db update as WP's update_option will check value===false to bypass update
111
+ }
112
+
113
+ $purge_queue = Purge::get_option( Purge::DB_QUEUE2 );
114
+ if ( $purge_queue && $purge_queue != -1 ) {
115
+ $this->_http_header( $purge_queue );
116
+ Debug2::debug( '[Core] Purge2 Queue found&sent: ' . $purge_queue );
117
+ }
118
+ if ( $purge_queue != -1 ) {
119
+ Purge::update_option( Purge::DB_QUEUE2, -1 );
120
+ }
121
  }
122
 
123
  /**
214
 
215
  // Load 3rd party hooks
216
  add_action( 'wp_loaded', array( $this, 'load_thirdparty' ), 2 );
217
+
218
+ // test: Simulate a purge all
219
+ // if (defined( 'LITESPEED_CLI' )) Purge::add('test'.date('Ymd.His'));
220
+
221
  }
222
 
223
  /**
574
 
575
  // send Control header
576
  if ( defined( 'LITESPEED_ON' ) && $control_header ) {
577
+ $this->_http_header( $control_header );
578
+ if ( defined( 'LSCWP_LOG' ) && $running_info_showing) {
579
+ $this->footer_comment .= "\n<!-- " . $control_header . " -->";
 
 
 
580
  }
581
  }
582
  // send PURGE header (Always send regardless of cache setting disabled/enabled)
583
  if ( defined( 'LITESPEED_ON' ) && $purge_header ) {
584
+ $this->_http_header( $purge_header );
585
  Debug2::log_purge( $purge_header );
586
 
587
+ if ( defined( 'LSCWP_LOG' ) && $running_info_showing) {
588
+ $this->footer_comment .= "\n<!-- " . $purge_header . " -->";
 
 
 
589
  }
590
  }
591
  // send Vary header
592
  if ( defined( 'LITESPEED_ON' ) && $vary_header ) {
593
+ $this->_http_header( $vary_header );
594
+ if ( defined( 'LSCWP_LOG' ) && $running_info_showing ) {
595
+ $this->footer_comment .= "\n<!-- " . $vary_header . " -->";
 
 
 
596
  }
597
  }
598
 
611
  if ( $vary_header ) {
612
  $debug_header .= $vary_header . '; ';
613
  }
614
+ $this->_http_header( $debug_header );
 
615
  }
616
  else {
617
  // Control header
618
  if ( defined( 'LITESPEED_ON' ) && Control::is_cacheable() && $tag_header ) {
619
+ $this->_http_header( $tag_header );
620
+ if ( defined( 'LSCWP_LOG' ) && $running_info_showing ) {
621
+ $this->footer_comment .= "\n<!-- " . $tag_header . " -->";
 
 
 
622
  }
623
  }
624
  }
636
  Debug2::debug( '--forced--' );
637
  }
638
 
639
+ /**
640
+ * If is CLI and contains Purge Header, then issue a HTTP req to Purge
641
+ * @since v5.3
642
+ */
643
+ if (defined( 'LITESPEED_CLI' )) {
644
+ $purge_queue = Purge::get_option( Purge::DB_QUEUE );
645
+ if ( ! $purge_queue || $purge_queue == -1 ) {
646
+ $purge_queue = Purge::get_option( Purge::DB_QUEUE2 );
647
+ }
648
+ if ( $purge_queue && $purge_queue != -1 ) {
649
+ self::debug( '[Core] Purge Queue found, issue a HTTP req to purge: ' . $purge_queue );
650
+ // Kick off HTTP req
651
+ $url = admin_url( 'admin-ajax.php' );
652
+ $resp = wp_remote_get($url);
653
+ if ( is_wp_error( $resp ) ) {
654
+ $error_message = $resp->get_error_message();
655
+ self::debug( '[URL]' . $url );
656
+ self::debug( 'failed to request: ' . $error_message );
657
+ }
658
+ else {
659
+ self::debug('HTTP req res: ' . $resp['body']);
660
+ }
661
+ }
662
+ }
663
+ }
664
+
665
+ /**
666
+ * Send HTTP header
667
+ * @since 5.3
668
+ */
669
+ private function _http_header( $header ) {
670
+ if ( defined( 'LITESPEED_CLI' ) ) return;
671
+
672
+ @header( $header );
673
+
674
+ if ( ! defined( 'LSCWP_LOG' ) ) return;
675
+ Debug2::debug( '💰 ' . $header );
676
  }
677
 
678
  }
src/crawler.cls.php CHANGED
@@ -156,6 +156,7 @@ class Crawler extends Root {
156
  'crawler_stats' => array(), // this will store all crawlers hit/miss crawl status
157
  );
158
 
 
159
  $summary = parent::get_summary();
160
  $summary = array_merge( $_default, $summary );
161
 
@@ -880,7 +881,7 @@ class Crawler extends Root {
880
  $crawler_factors[ 'uid' ] = array( 0 => __( 'Guest', 'litespeed-cache' ) );
881
 
882
  // WebP on/off
883
- if ( $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) {
884
  $crawler_factors[ 'webp' ] = array( 1 => 'WebP', 0 => '' );
885
  }
886
 
156
  'crawler_stats' => array(), // this will store all crawlers hit/miss crawl status
157
  );
158
 
159
+ wp_cache_delete( 'alloptions', 'options' ); // ensure the summary is current
160
  $summary = parent::get_summary();
161
  $summary = array_merge( $_default, $summary );
162
 
881
  $crawler_factors[ 'uid' ] = array( 0 => __( 'Guest', 'litespeed-cache' ) );
882
 
883
  // WebP on/off
884
+ if ( $this->conf( Base::O_GUEST ) || $this->conf( Base::O_IMG_OPTM_WEBP ) ) {
885
  $crawler_factors[ 'webp' ] = array( 1 => 'WebP', 0 => '' );
886
  }
887
 
src/data.upgrade.func.php CHANGED
@@ -399,10 +399,10 @@ function litespeed_update_3_0( $ver ) {
399
  'media_optm_cron' => 'img_optm-cron',
400
  'media_optm_ori' => 'img_optm-ori',
401
  'media_rm_ori_bkup' => 'img_optm-rm_bkup',
402
- 'media_optm_webp' => 'img_optm-webp',
 
403
  'media_optm_lossless' => 'img_optm-lossless',
404
  'media_optm_exif' => 'img_optm-exif',
405
- 'media_webp_replace' => 'img_optm-webp_replace',
406
  'media_webp_replace_srcset' => 'img_optm-webp_replace_srcset',
407
 
408
  'css_minify' => 'optm-css_min',
@@ -588,7 +588,7 @@ function litespeed_update_3_0( $ver ) {
588
  'cache_browser' => 'cache-browser',
589
  'cache_browser_ttl' => 'cache-ttl_browser',
590
 
591
- 'media_webp_replace' => 'img_optm-webp_replace',
592
  ) ;
593
  foreach ( $data as $k => $v ) {
594
  if ( ! isset( $previous_site_options[ $k ] ) ) {
399
  'media_optm_cron' => 'img_optm-cron',
400
  'media_optm_ori' => 'img_optm-ori',
401
  'media_rm_ori_bkup' => 'img_optm-rm_bkup',
402
+ // 'media_optm_webp' => 'img_optm-webp',
403
+ 'media_webp_replace' => 'img_optm-webp',
404
  'media_optm_lossless' => 'img_optm-lossless',
405
  'media_optm_exif' => 'img_optm-exif',
 
406
  'media_webp_replace_srcset' => 'img_optm-webp_replace_srcset',
407
 
408
  'css_minify' => 'optm-css_min',
588
  'cache_browser' => 'cache-browser',
589
  'cache_browser_ttl' => 'cache-ttl_browser',
590
 
591
+ 'media_webp_replace' => 'img_optm-webp',
592
  ) ;
593
  foreach ( $data as $k => $v ) {
594
  if ( ! isset( $previous_site_options[ $k ] ) ) {
src/debug2.cls.php CHANGED
@@ -302,7 +302,7 @@ class Debug2 extends Root {
302
  if ( isset( $_SERVER[ 'USER' ] ) ) {
303
  $addr .= $_SERVER[ 'USER' ];
304
  }
305
- elseif ( $_SERVER[ 'HTTP_X_FORWARDED_FOR' ] ) {
306
  $addr .= $_SERVER[ 'HTTP_X_FORWARDED_FOR' ];
307
  }
308
  }
302
  if ( isset( $_SERVER[ 'USER' ] ) ) {
303
  $addr .= $_SERVER[ 'USER' ];
304
  }
305
+ elseif ( !empty($_SERVER[ 'HTTP_X_FORWARDED_FOR' ]) ) {
306
  $addr .= $_SERVER[ 'HTTP_X_FORWARDED_FOR' ];
307
  }
308
  }
src/htaccess.cls.php CHANGED
@@ -562,7 +562,7 @@ class Htaccess extends Root {
562
  }
563
 
564
  // webp support
565
- $id = Base::O_IMG_OPTM_WEBP_REPLACE;
566
  if ( ! empty( $cfg[ $id ] ) || ! empty( $cfg[ Base::O_GUEST ] ) ) {
567
  $new_rules[] = self::MARKER_WEBP . self::MARKER_START;
568
  $new_rules[] = 'RewriteCond %{HTTP_ACCEPT} "image/webp"';
562
  }
563
 
564
  // webp support
565
+ $id = Base::O_IMG_OPTM_WEBP;
566
  if ( ! empty( $cfg[ $id ] ) || ! empty( $cfg[ Base::O_GUEST ] ) ) {
567
  $new_rules[] = self::MARKER_WEBP . self::MARKER_START;
568
  $new_rules[] = 'RewriteCond %{HTTP_ACCEPT} "image/webp"';
src/lang.cls.php CHANGED
@@ -141,7 +141,8 @@ class Lang extends Base {
141
  self::O_OPTM_CSS_COMB_EXT_INL => __( 'CSS Combine External and Inline', 'litespeed-cache' ),
142
  self::O_OPTM_UCSS => __( 'Generate UCSS', 'litespeed-cache' ),
143
  self::O_OPTM_UCSS_INLINE => __( 'UCSS Inline', 'litespeed-cache' ),
144
- self::O_OPTM_UCSS_WHITELIST => __( 'UCSS Allowlist', 'litespeed-cache' ),
 
145
  self::O_OPTM_UCSS_EXC => __( 'UCSS URI Excludes', 'litespeed-cache' ),
146
  self::O_OPTM_JS_MIN => __( 'JS Minify', 'litespeed-cache' ),
147
  self::O_OPTM_JS_COMB => __( 'JS Combine', 'litespeed-cache' ),
@@ -203,7 +204,7 @@ class Lang extends Base {
203
  self::O_IMG_OPTM_CRON => __( 'Auto Pull Cron', 'litespeed-cache' ),
204
  self::O_IMG_OPTM_ORI => __( 'Optimize Original Images', 'litespeed-cache' ),
205
  self::O_IMG_OPTM_RM_BKUP => __( 'Remove Original Backups', 'litespeed-cache' ),
206
- self::O_IMG_OPTM_WEBP => __( 'Create WebP Versions', 'litespeed-cache' ),
207
  self::O_IMG_OPTM_LOSSLESS => __( 'Optimize Losslessly', 'litespeed-cache' ),
208
  self::O_IMG_OPTM_EXIF => __( 'Preserve EXIF/XMP data', 'litespeed-cache' ),
209
  self::O_IMG_OPTM_WEBP_ATTR => __( 'WebP Attribute To Replace', 'litespeed-cache' ),
@@ -220,7 +221,6 @@ class Lang extends Base {
220
  self::O_CACHE_EXC_COOKIES => __( 'Do Not Cache Cookies', 'litespeed-cache' ),
221
  self::O_CACHE_EXC_USERAGENTS => __( 'Do Not Cache User Agents', 'litespeed-cache' ),
222
  self::O_CACHE_LOGIN_COOKIE => __( 'Login Cookie', 'litespeed-cache' ),
223
- self::O_IMG_OPTM_WEBP_REPLACE => __( 'Image WebP Replacement', 'litespeed-cache' ),
224
 
225
  self::O_MISC_HEARTBEAT_FRONT => __( 'Frontend Heartbeat Control', 'litespeed-cache' ),
226
  self::O_MISC_HEARTBEAT_FRONT_TTL => __( 'Frontend Heartbeat TTL', 'litespeed-cache' ),
141
  self::O_OPTM_CSS_COMB_EXT_INL => __( 'CSS Combine External and Inline', 'litespeed-cache' ),
142
  self::O_OPTM_UCSS => __( 'Generate UCSS', 'litespeed-cache' ),
143
  self::O_OPTM_UCSS_INLINE => __( 'UCSS Inline', 'litespeed-cache' ),
144
+ self::O_OPTM_UCSS_SELECTOR_WHITELIST => __( 'UCSS Selector Allowlist', 'litespeed-cache' ),
145
+ self::O_OPTM_UCSS_FILE_EXC_INLINE => __( 'UCSS File Excludes and Inline', 'litespeed-cache' ),
146
  self::O_OPTM_UCSS_EXC => __( 'UCSS URI Excludes', 'litespeed-cache' ),
147
  self::O_OPTM_JS_MIN => __( 'JS Minify', 'litespeed-cache' ),
148
  self::O_OPTM_JS_COMB => __( 'JS Combine', 'litespeed-cache' ),
204
  self::O_IMG_OPTM_CRON => __( 'Auto Pull Cron', 'litespeed-cache' ),
205
  self::O_IMG_OPTM_ORI => __( 'Optimize Original Images', 'litespeed-cache' ),
206
  self::O_IMG_OPTM_RM_BKUP => __( 'Remove Original Backups', 'litespeed-cache' ),
207
+ self::O_IMG_OPTM_WEBP => __( 'Image WebP Replacement', 'litespeed-cache' ),
208
  self::O_IMG_OPTM_LOSSLESS => __( 'Optimize Losslessly', 'litespeed-cache' ),
209
  self::O_IMG_OPTM_EXIF => __( 'Preserve EXIF/XMP data', 'litespeed-cache' ),
210
  self::O_IMG_OPTM_WEBP_ATTR => __( 'WebP Attribute To Replace', 'litespeed-cache' ),
221
  self::O_CACHE_EXC_COOKIES => __( 'Do Not Cache Cookies', 'litespeed-cache' ),
222
  self::O_CACHE_EXC_USERAGENTS => __( 'Do Not Cache User Agents', 'litespeed-cache' ),
223
  self::O_CACHE_LOGIN_COOKIE => __( 'Login Cookie', 'litespeed-cache' ),
 
224
 
225
  self::O_MISC_HEARTBEAT_FRONT => __( 'Frontend Heartbeat Control', 'litespeed-cache' ),
226
  self::O_MISC_HEARTBEAT_FRONT_TTL => __( 'Frontend Heartbeat TTL', 'litespeed-cache' ),
src/media.cls.php CHANGED
@@ -43,7 +43,7 @@ class Media extends Root {
43
  }
44
 
45
  // Due to ajax call doesn't send correct accept header, have to limit webp to HTML only
46
- if ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) {
47
  if ( $this->webp_support() ) {
48
  // Hook to srcset
49
  if ( function_exists( 'wp_calculate_image_srcset' ) ) {
@@ -446,7 +446,7 @@ class Media extends Root {
446
  * Use webp for optimized images
447
  * @since 1.6.2
448
  */
449
- if ( ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) && $this->webp_support() ) {
450
  $this->content = $this->_replace_buffer_img_webp( $this->content );
451
  }
452
 
@@ -521,7 +521,7 @@ class Media extends Root {
521
 
522
  // Include lazyload lib js and init lazyload
523
  if ( $cfg_lazy || $cfg_iframe_lazy ) {
524
- $lazy_lib = '<script data-no-optimize="1" defer>' . File::read( LSCWP_DIR . self::LIB_FILE_IMG_LAZYLOAD ) . '</script>';
525
  $this->content = str_replace( '</body>', $lazy_lib . '</body>', $this->content );
526
  }
527
  }
@@ -810,7 +810,7 @@ class Media extends Root {
810
  }
811
 
812
  // Replace background-image
813
- if ( ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) && $this->webp_support() ) {
814
  $content = $this->replace_background_webp( $content );
815
  }
816
 
43
  }
44
 
45
  // Due to ajax call doesn't send correct accept header, have to limit webp to HTML only
46
+ if ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP ) ) {
47
  if ( $this->webp_support() ) {
48
  // Hook to srcset
49
  if ( function_exists( 'wp_calculate_image_srcset' ) ) {
446
  * Use webp for optimized images
447
  * @since 1.6.2
448
  */
449
+ if ( ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP ) ) && $this->webp_support() ) {
450
  $this->content = $this->_replace_buffer_img_webp( $this->content );
451
  }
452
 
521
 
522
  // Include lazyload lib js and init lazyload
523
  if ( $cfg_lazy || $cfg_iframe_lazy ) {
524
+ $lazy_lib = '<script data-no-optimize="1">' . File::read( LSCWP_DIR . self::LIB_FILE_IMG_LAZYLOAD ) . '</script>';
525
  $this->content = str_replace( '</body>', $lazy_lib . '</body>', $this->content );
526
  }
527
  }
810
  }
811
 
812
  // Replace background-image
813
+ if ( ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP ) ) && $this->webp_support() ) {
814
  $content = $this->replace_background_webp( $content );
815
  }
816
 
src/metabox.cls.php CHANGED
@@ -50,6 +50,11 @@ class Metabox extends Root {
50
  if ( apply_filters( 'litespeed_bypass_metabox', false, $post_type ) ) {
51
  return;
52
  }
 
 
 
 
 
53
  add_meta_box( 'litespeed_meta_boxes', __( 'LiteSpeed Options', 'litespeed-cache' ), array( $this, 'meta_box_options' ), $post_type, 'side', 'core' );
54
  }
55
 
@@ -97,9 +102,11 @@ class Metabox extends Root {
97
  public function setting( $conf, $post_id = false ) {
98
  // Check if has metabox non-cacheable setting or not
99
  if ( ! $post_id ) {
 
100
  if ( is_singular() ) {
101
  $post_id = get_the_ID();
102
-
 
103
  }
104
  }
105
 
50
  if ( apply_filters( 'litespeed_bypass_metabox', false, $post_type ) ) {
51
  return;
52
  }
53
+ $post_type_obj = get_post_type_object( $post_type );
54
+ if ( !$post_type_obj->public ) {
55
+ self::debug('post type public=false, bypass add_meta_boxes');
56
+ return;
57
+ }
58
  add_meta_box( 'litespeed_meta_boxes', __( 'LiteSpeed Options', 'litespeed-cache' ), array( $this, 'meta_box_options' ), $post_type, 'side', 'core' );
59
  }
60
 
102
  public function setting( $conf, $post_id = false ) {
103
  // Check if has metabox non-cacheable setting or not
104
  if ( ! $post_id ) {
105
+ $home_id = get_option( 'page_for_posts' );
106
  if ( is_singular() ) {
107
  $post_id = get_the_ID();
108
+ } elseif ( $home_id > 0 && is_home() ) {
109
+ $post_id = $home_id;
110
  }
111
  }
112
 
src/optimize.cls.php CHANGED
@@ -681,7 +681,7 @@ class Optimize extends Base {
681
  private function _src_queue_handler( $src_list, $html_list, $file_type = 'css' ) {
682
  $html_list_ori = $html_list;
683
 
684
- $can_webp = ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) && $this->cls( 'Media' )->webp_support();
685
 
686
  $tag = $file_type == 'css' ? 'link' : 'script';
687
  foreach ( $src_list as $key => $src_info ) {
@@ -968,6 +968,7 @@ class Optimize extends Base {
968
  */
969
  private function _parse_css() {
970
  $excludes = apply_filters( 'litespeed_optimize_css_excludes', $this->conf( self::O_OPTM_CSS_EXC ) );
 
971
 
972
  $combine_ext_inl = $this->conf( self::O_OPTM_CSS_COMB_EXT_INL );
973
 
@@ -1013,6 +1014,16 @@ class Optimize extends Base {
1013
  continue;
1014
  }
1015
 
 
 
 
 
 
 
 
 
 
 
1016
  // Check Google fonts hit
1017
  if ( strpos( $attrs[ 'href' ], 'fonts.googleapis.com' ) !== false ) {
1018
  /**
681
  private function _src_queue_handler( $src_list, $html_list, $file_type = 'css' ) {
682
  $html_list_ori = $html_list;
683
 
684
+ $can_webp = ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP ) ) && $this->cls( 'Media' )->webp_support();
685
 
686
  $tag = $file_type == 'css' ? 'link' : 'script';
687
  foreach ( $src_list as $key => $src_info ) {
968
  */
969
  private function _parse_css() {
970
  $excludes = apply_filters( 'litespeed_optimize_css_excludes', $this->conf( self::O_OPTM_CSS_EXC ) );
971
+ $ucss_file_exc_inline = apply_filters( 'litespeed_optimize_ucss_file_exc_inline', $this->conf( self::O_OPTM_UCSS_FILE_EXC_INLINE ) );
972
 
973
  $combine_ext_inl = $this->conf( self::O_OPTM_CSS_COMB_EXT_INL );
974
 
1014
  continue;
1015
  }
1016
 
1017
+ // Check if need to inline this css file
1018
+ if ( Utility::str_hit_array( $attrs[ 'href' ], $ucss_file_exc_inline ) ) {
1019
+ Debug2::debug( '[Optm] ucss_file_exc_inline hit ' . $attrs[ 'href' ] );
1020
+ // Replace this css to inline from orig html
1021
+ $inline_script = '<style>' . $this->__optimizer->load_file($attrs[ 'href' ]) . '</style>';
1022
+ $this->content = str_replace( $match[ 0 ], $inline_script, $this->content );
1023
+
1024
+ continue;
1025
+ }
1026
+
1027
  // Check Google fonts hit
1028
  if ( strpos( $attrs[ 'href' ], 'fonts.googleapis.com' ) !== false ) {
1029
  /**
src/optimizer.cls.php CHANGED
@@ -161,7 +161,7 @@ class Optimizer extends Root {
161
 
162
  $content = $this->cls( 'CDN' )->finalize( $content );
163
 
164
- if ( ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) && $this->cls( 'Media' )->webp_support() ) {
165
  $content = $this->cls( 'Media' )->replace_background_webp( $content );
166
  }
167
 
161
 
162
  $content = $this->cls( 'CDN' )->finalize( $content );
163
 
164
+ if ( ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP ) ) && $this->cls( 'Media' )->webp_support() ) {
165
  $content = $this->cls( 'Media' )->replace_background_webp( $content );
166
  }
167
 
src/preset.cls.php ADDED
@@ -0,0 +1,264 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The preset class.
4
+ *
5
+ * @since 5.3.0
6
+ */
7
+ namespace LiteSpeed;
8
+
9
+ defined( 'WPINC' ) || exit;
10
+
11
+ class Preset extends Import {
12
+ protected $_summary;
13
+
14
+ const MAX_BACKUPS = 10;
15
+
16
+ const TYPE_APPLY = 'apply';
17
+ const TYPE_RESTORE = 'restore';
18
+
19
+ const STANDARD_DIR = LSCWP_DIR . 'data/preset';
20
+ const BACKUP_DIR = LITESPEED_STATIC_DIR . '/auto-backup';
21
+
22
+ /**
23
+ * Returns sorted backup names
24
+ *
25
+ * @since 5.3.0
26
+ * @access public
27
+ */
28
+ public static function get_backups() {
29
+ self::init_filesystem();
30
+ global $wp_filesystem;
31
+
32
+ $backups = array_map(
33
+ function( $path ) { return self::basename( $path['name'] ); },
34
+ $wp_filesystem->dirlist( self::BACKUP_DIR ) ?: []
35
+ );
36
+ rsort( $backups );
37
+
38
+ return $backups;
39
+ }
40
+
41
+ /**
42
+ * Removes extra backup files
43
+ *
44
+ * @since 5.3.0
45
+ * @access public
46
+ */
47
+ public static function prune_backups() {
48
+ $backups = self::get_backups();
49
+ global $wp_filesystem;
50
+
51
+ foreach ( array_slice( $backups, self::MAX_BACKUPS ) as $backup ) {
52
+ $path = self::get_backup( $backup );
53
+ $wp_filesystem->delete( $path );
54
+ Debug2::debug('[Preset] Deleted old backup from ' . $backup );
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Returns a settings file's extensionless basename given its filesystem path
60
+ *
61
+ * @since 5.3.0
62
+ * @access public
63
+ */
64
+ public static function basename( $path ) {
65
+ return basename( $path, '.data' );
66
+ }
67
+
68
+ /**
69
+ * Returns a standard preset's path given its extensionless basename
70
+ *
71
+ * @since 5.3.0
72
+ * @access public
73
+ */
74
+ public static function get_standard( $name ) {
75
+ return path_join( self::STANDARD_DIR, $name . '.data' );
76
+ }
77
+
78
+ /**
79
+ * Returns a backup's path given its extensionless basename
80
+ *
81
+ * @since 5.3.0
82
+ * @access public
83
+ */
84
+ public static function get_backup( $name ) {
85
+ return path_join( self::BACKUP_DIR, $name . '.data' );
86
+ }
87
+
88
+ /**
89
+ * Initializes the global $wp_filesystem object and clears stat cache
90
+ *
91
+ * @since 5.3.0
92
+ */
93
+ static function init_filesystem() {
94
+ require_once ( ABSPATH . '/wp-admin/includes/file.php' );
95
+ \WP_Filesystem();
96
+ clearstatcache();
97
+ }
98
+
99
+
100
+ /**
101
+ * Init
102
+ *
103
+ * @since 5.3.0
104
+ */
105
+ public function __construct() {
106
+ Debug2::debug( '[Preset] Init' );
107
+ $this->_summary = self::get_summary();
108
+ }
109
+
110
+ /**
111
+ * Applies a standard preset's settings given its extensionless basename
112
+ *
113
+ * @since 5.3.0
114
+ * @access public
115
+ */
116
+ public function apply( $preset ) {
117
+ $this->make_backup( $preset );
118
+
119
+ $path = self::get_standard( $preset );
120
+ $result = $this->import_file( $path ) ? $preset : 'error';
121
+
122
+ $this->log( $result );
123
+ }
124
+
125
+ /**
126
+ * Restores settings from the backup file with the given timestamp, then deletes the file
127
+ *
128
+ * @since 5.3.0
129
+ * @access public
130
+ */
131
+ public function restore( $timestamp ) {
132
+ $backups = array();
133
+ foreach ( self::get_backups() as $backup ) {
134
+ if ( preg_match( '/^backup-' . $timestamp . '(-|$)/', $backup ) === 1 ) {
135
+ $backups[] = $backup;
136
+ }
137
+ };
138
+
139
+ if ( empty( $backups ) ) {
140
+ $this->log( 'error' );
141
+ return;
142
+ }
143
+
144
+ $backup = $backups[0];
145
+ $path = self::get_backup( $backup );
146
+
147
+ if ( ! $this->import_file( $path ) ) {
148
+ $this->log( 'error' );
149
+ return;
150
+ }
151
+
152
+ self::init_filesystem();
153
+ global $wp_filesystem;
154
+
155
+ $wp_filesystem->delete( $path );
156
+ Debug2::debug('[Preset] Deleted most recent backup from ' . $backup );
157
+
158
+ $this->log( 'backup' );
159
+ }
160
+
161
+ /**
162
+ * Saves current settings as a backup file, then prunes extra backup files
163
+ *
164
+ * @since 5.3.0
165
+ * @access public
166
+ */
167
+ public function make_backup( $preset ) {
168
+ $backup = 'backup-' . time() . '-before-' . $preset;
169
+ $data = $this->export( true );
170
+
171
+ $path = self::get_backup( $backup );
172
+ File::save( $path, $data, true );
173
+ Debug2::debug( '[Preset] Backup saved to ' . $backup );
174
+
175
+ self::prune_backups();
176
+ }
177
+
178
+ /**
179
+ * Tries to import from a given settings file
180
+ *
181
+ * @since 5.3.0
182
+ */
183
+ function import_file( $path ) {
184
+ $debug = function( $result, $name ) {
185
+ $action = $result ? 'Applied' : 'Failed to apply';
186
+ Debug2::debug( '[Preset] ' . $action . ' settings from ' . $name );
187
+ return $result;
188
+ };
189
+
190
+ $name = self::basename( $path );
191
+ $contents = file_get_contents( $path );
192
+
193
+ if ( false === $contents ) {
194
+ Debug2::debug( '[Preset] ❌ Failed to get file contents' );
195
+ return $debug( false, $name );
196
+ }
197
+
198
+ $parsed = array();
199
+ try {
200
+ // Check if the data is v4+
201
+ if ( strpos( $contents, '["_version",' ) === 0 ) {
202
+ $contents = explode( "\n", $contents );
203
+ foreach ( $contents as $line ) {
204
+ $line = trim( $line );
205
+ if ( empty( $line ) ) {
206
+ continue;
207
+ }
208
+ list( $key, $value ) = json_decode( $line, true );
209
+ $parsed[ $key ] = $value;
210
+ }
211
+ } else {
212
+ $parsed = json_decode( base64_decode( $contents ), true );
213
+ }
214
+ } catch ( \Exception $ex ) {
215
+ Debug2::debug( '[Preset] ❌ Failed to parse serialized data' );
216
+ return $debug( false, $name );
217
+ }
218
+
219
+ if ( empty( $parsed ) ) {
220
+ Debug2::debug( '[Preset] ❌ Nothing to apply' );
221
+ return $debug( false, $name );
222
+ }
223
+
224
+ $this->cls( 'Conf' )->update_confs( $parsed );
225
+
226
+ return $debug( true, $name );
227
+ }
228
+
229
+ /**
230
+ * Updates the log
231
+ *
232
+ * @since 5.3.0
233
+ */
234
+ function log( $preset ) {
235
+ $this->_summary[ 'preset' ] = $preset;
236
+ $this->_summary[ 'preset_timestamp' ] = time();
237
+ self::save_summary();
238
+ }
239
+
240
+ /**
241
+ * Handles all request actions from main cls
242
+ *
243
+ * @since 5.3.0
244
+ * @access public
245
+ */
246
+ public function handler() {
247
+ $type = Router::verify_type();
248
+
249
+ switch ( $type ) {
250
+ case self::TYPE_APPLY:
251
+ $this->apply( ! empty( $_GET['preset'] ) ? $_GET['preset'] : false );
252
+ break;
253
+
254
+ case self::TYPE_RESTORE:
255
+ $this->restore( ! empty( $_GET['timestamp'] ) ? $_GET['timestamp'] : false );
256
+ break;
257
+
258
+ default:
259
+ break;
260
+ }
261
+
262
+ Admin::redirect();
263
+ }
264
+ }
src/purge.cls.php CHANGED
@@ -177,13 +177,20 @@ class Purge extends Base {
177
  * @access private
178
  */
179
  private function _purge_all( $reason = false ) {
180
- $this->_purge_all_lscache( true );
181
- $this->_purge_all_cssjs( true );
182
- $this->_purge_all_localres( true );
183
- // $this->_purge_all_ccss( true );
184
- // $this->_purge_all_lqip( true );
185
- $this->_purge_all_object( true );
186
- $this->purge_all_opcache( true );
 
 
 
 
 
 
 
187
 
188
  if ( ! is_string( $reason ) ) {
189
  $reason = false;
@@ -1136,9 +1143,9 @@ class Purge extends Base {
1136
  $post_type = $post->post_type;
1137
 
1138
  global $wp_widget_factory;
1139
- $recent_posts = $wp_widget_factory->widgets['WP_Widget_Recent_Posts'];
1140
- if ( ! is_null($recent_posts) ) {
1141
- $purge_tags[] = Tag::TYPE_WIDGET . $recent_posts->id;
1142
  }
1143
 
1144
  // get adjacent posts id as related post tag
177
  * @access private
178
  */
179
  private function _purge_all( $reason = false ) {
180
+ // if ( defined( 'LITESPEED_CLI' ) ) {
181
+ // // Can't send, already has output, need to save and wait for next run
182
+ // self::update_option( self::DB_QUEUE, $curr_built );
183
+ // self::debug( 'CLI request, queue stored: ' . $curr_built );
184
+ // }
185
+ // else {
186
+ $this->_purge_all_lscache( true );
187
+ $this->_purge_all_cssjs( true );
188
+ $this->_purge_all_localres( true );
189
+ // $this->_purge_all_ccss( true );
190
+ // $this->_purge_all_lqip( true );
191
+ $this->_purge_all_object( true );
192
+ $this->purge_all_opcache( true );
193
+ // }
194
 
195
  if ( ! is_string( $reason ) ) {
196
  $reason = false;
1143
  $post_type = $post->post_type;
1144
 
1145
  global $wp_widget_factory;
1146
+ // recent_posts
1147
+ if ( ! is_null( $wp_widget_factory->widgets['WP_Widget_Recent_Posts'] ) ) {
1148
+ $purge_tags[] = Tag::TYPE_WIDGET . $wp_widget_factory->widgets['WP_Widget_Recent_Posts']->id;
1149
  }
1150
 
1151
  // get adjacent posts id as related post tag
src/router.cls.php CHANGED
@@ -30,6 +30,7 @@ class Router extends Base {
30
  const ACTION_CSS = 'css';
31
  const ACTION_UCSS = 'ucss';
32
  const ACTION_VPI = 'vpi';
 
33
  const ACTION_IMPORT = 'import';
34
  const ACTION_REPORT = 'report';
35
  const ACTION_DEBUG2 = 'debug2';
@@ -51,6 +52,7 @@ class Router extends Base {
51
  self::ACTION_DEBUG2,
52
  self::ACTION_HEALTH,
53
  self::ACTION_IMG_OPTM,
 
54
  self::ACTION_IMPORT,
55
  self::ACTION_PLACEHOLDER,
56
  self::ACTION_PURGE,
@@ -297,7 +299,7 @@ class Router extends Base {
297
  $user = get_userdata( $uid );
298
  if ( isset( $user->roles ) && is_array( $user->roles ) ) {
299
  $tmp = array_values( $user->roles );
300
- $role = array_shift( $tmp );
301
  }
302
  }
303
  Debug2::debug( '[Router] get_role: ' . $role );
@@ -566,6 +568,7 @@ class Router extends Base {
566
  case self::ACTION_CDN_SETUP:
567
  case self::ACTION_CDN_CLOUDFLARE:
568
  case self::ACTION_CRAWLER:
 
569
  case self::ACTION_IMPORT:
570
  case self::ACTION_REPORT:
571
  case self::ACTION_CSS:
30
  const ACTION_CSS = 'css';
31
  const ACTION_UCSS = 'ucss';
32
  const ACTION_VPI = 'vpi';
33
+ const ACTION_PRESET = 'preset';
34
  const ACTION_IMPORT = 'import';
35
  const ACTION_REPORT = 'report';
36
  const ACTION_DEBUG2 = 'debug2';
52
  self::ACTION_DEBUG2,
53
  self::ACTION_HEALTH,
54
  self::ACTION_IMG_OPTM,
55
+ self::ACTION_PRESET,
56
  self::ACTION_IMPORT,
57
  self::ACTION_PLACEHOLDER,
58
  self::ACTION_PURGE,
299
  $user = get_userdata( $uid );
300
  if ( isset( $user->roles ) && is_array( $user->roles ) ) {
301
  $tmp = array_values( $user->roles );
302
+ $role = implode( ',', $tmp ); // Combine for PHP5.3 const comaptibility
303
  }
304
  }
305
  Debug2::debug( '[Router] get_role: ' . $role );
568
  case self::ACTION_CDN_SETUP:
569
  case self::ACTION_CDN_CLOUDFLARE:
570
  case self::ACTION_CRAWLER:
571
+ case self::ACTION_PRESET:
572
  case self::ACTION_IMPORT:
573
  case self::ACTION_REPORT:
574
  case self::ACTION_CSS:
src/ucss.cls.php CHANGED
@@ -130,7 +130,6 @@ class UCSS extends Base {
130
  * @since 5.3
131
  */
132
  public function add_to_q($url_files) {
133
- return; // will enable in v5.4
134
  // Store it for cron
135
  $this->_queue = $this->load_queue( 'ucss' );
136
 
@@ -159,10 +158,10 @@ class UCSS extends Base {
159
  'url_tag' => $url_tag,
160
  ); // Current UA will be used to request
161
 
 
162
  $this->_queue[ $queue_k ] = $q;
163
  }
164
  $this->save_queue( 'ucss', $this->_queue );
165
- self::debug( 'Added queue_ucss [url_tag] ' . $url_tag . ' [UA] ' . $ua . ' [vary] ' . $vary . ' [uid] false' );
166
 
167
 
168
  }
@@ -465,7 +464,7 @@ class UCSS extends Base {
465
  */
466
  private function _filter_whitelist() {
467
  $whitelist = array();
468
- $list = apply_filters( 'litespeed_ucss_whitelist', $this->conf( self::O_OPTM_UCSS_WHITELIST ) );
469
  foreach ( $list as $k => $v ) {
470
  if ( substr( $v, 0, 2 ) === '//' ) {
471
  continue;
130
  * @since 5.3
131
  */
132
  public function add_to_q($url_files) {
 
133
  // Store it for cron
134
  $this->_queue = $this->load_queue( 'ucss' );
135
 
158
  'url_tag' => $url_tag,
159
  ); // Current UA will be used to request
160
 
161
+ self::debug( 'Added queue_ucss [url_tag] ' . $url_tag . ' [UA] ' . $ua . ' [vary] ' . $vary . ' [uid] false' );
162
  $this->_queue[ $queue_k ] = $q;
163
  }
164
  $this->save_queue( 'ucss', $this->_queue );
 
165
 
166
 
167
  }
464
  */
465
  private function _filter_whitelist() {
466
  $whitelist = array();
467
+ $list = apply_filters( 'litespeed_ucss_whitelist', $this->conf( self::O_OPTM_UCSS_SELECTOR_WHITELIST ) );
468
  foreach ( $list as $k => $v ) {
469
  if ( substr( $v, 0, 2 ) === '//' ) {
470
  continue;
src/vary.cls.php CHANGED
@@ -429,10 +429,16 @@ class Vary extends Root {
429
  public function in_vary_group( $role ) {
430
  $group = 0;
431
  $vary_groups = $this->conf( Base::O_CACHE_VARY_GROUP );
432
- if ( array_key_exists( $role, $vary_groups ) ) {
433
- $group = $vary_groups[ $role ];
 
 
 
 
 
 
434
  }
435
- elseif ( $role === 'administrator' ) {
436
  $group = 99;
437
  }
438
 
429
  public function in_vary_group( $role ) {
430
  $group = 0;
431
  $vary_groups = $this->conf( Base::O_CACHE_VARY_GROUP );
432
+
433
+ $roles = explode( ',', $role );
434
+ if ( $found = array_intersect( $roles, array_keys( $vary_groups ) ) ) {
435
+ $groups = array();
436
+ foreach ( $found as $curr_role ) {
437
+ $groups[] = $vary_groups[ $curr_role ];
438
+ }
439
+ $group = implode( ',', array_unique( $groups ) );
440
  }
441
+ elseif ( in_array( 'administrator', $roles ) ) {
442
  $group = 99;
443
  }
444
 
src/vpi.cls.php CHANGED
@@ -43,12 +43,14 @@ class VPI extends Base {
43
  return;
44
  }
45
 
46
- if ( ! is_singular() ) {
 
 
47
  self::debug( 'not single post ID' );
48
  return;
49
  }
50
 
51
- $post_id = get_the_ID();
52
 
53
  $queue_k = ( $is_mobile ? 'mobile' : '' ) . ' ' . $request_url;
54
  if ( ! empty( $this->_queue[ $queue_k ] ) ) {
43
  return;
44
  }
45
 
46
+ $home_id = get_option( 'page_for_posts' );
47
+
48
+ if ( ! is_singular() && ! ( $home_id > 0 && is_home() ) ) {
49
  self::debug( 'not single post ID' );
50
  return;
51
  }
52
 
53
+ $post_id = is_home() ? $home_id : get_the_ID();
54
 
55
  $queue_k = ( $is_mobile ? 'mobile' : '' ) . ' ' . $request_url;
56
  if ( ! empty( $this->_queue[ $queue_k ] ) ) {
thirdparty/woocommerce.cls.php CHANGED
@@ -20,10 +20,7 @@ class WooCommerce extends Base {
20
 
21
  const CACHETAG_SHOP = 'WC_S' ;
22
  const CACHETAG_TERM = 'WC_T.' ;
23
- const O_ESI_CACHE_CART = 'wc_esi_cache_cart';
24
  const O_UPDATE_INTERVAL = 'wc_update_interval' ;
25
- const O_SHOP_FRONT_TTL = 'wc_shop_use_front_ttl' ;
26
- const O_WOO_CACHE_CART = 'woo_cache_cart' ;
27
  const O_PQS_CS = 0 ; // flush product on quantity + stock change, categories on stock change
28
  const O_PS_CS = 1 ; // flush product and categories on stock change
29
  const O_PS_CN = 2 ; // flush product on stock change, categories no flush
@@ -35,7 +32,6 @@ class WooCommerce extends Base {
35
  const ESI_PARAM_PATH = 'wc_path' ;
36
  const ESI_PARAM_LOCATED = 'wc_located' ;
37
 
38
- private $cache_cart ;
39
  private $esi_enabled ;
40
 
41
  /**
@@ -64,7 +60,6 @@ class WooCommerce extends Base {
64
  {
65
  $this->_option_append() ;
66
 
67
- $this->cache_cart = apply_filters( 'litespeed_conf', self::O_WOO_CACHE_CART ) ;
68
  $this->esi_enabled = apply_filters( 'litespeed_esi_status', false );
69
 
70
  add_action( 'litespeed_control_finalize', array( $this, 'set_control' ) );
@@ -90,16 +85,6 @@ class WooCommerce extends Base {
90
  add_filter( 'litespeed_esi_params', array( $this, 'add_post_id' ), 10, 2 );
91
  }
92
 
93
- /**
94
- * Only when cart is not empty, give it an ESI with private cache
95
- * Call when template_include to make sure woo cart is initialized
96
- * @since 1.7.2
97
- */
98
- if ( apply_filters( 'litespeed_conf', self::O_ESI_CACHE_CART ) ) {
99
- add_action( 'template_include', array( $this, 'check_if_need_esi' ) );
100
- add_filter( 'litespeed_vary', array( $this, 'vary_maintain' ) );
101
- }
102
-
103
  }
104
 
105
  if ( is_admin() ) {
@@ -110,26 +95,6 @@ class WooCommerce extends Base {
110
  add_filter( 'litespeed_widget_default_options', array( $this, 'wc_widget_default' ), 10, 2 );
111
  }
112
 
113
- // Purge cart if is ESI / Purge private if not enabled ESI
114
- if ( $this->cache_cart ) {
115
- $hooks_to_purge = array(
116
- 'woocommerce_add_to_cart', 'woocommerce_ajax_added_to_cart',
117
- 'woocommerce_remove_cart_item',
118
- 'woocommerce_restore_cart_item',
119
- 'woocommerce_after_cart_item_quantity_update',
120
- 'woocommerce_applied_coupon', 'woocommerce_removed_coupon',
121
- 'woocommerce_checkout_order_processed',
122
- ) ;
123
- foreach ( $hooks_to_purge as $v ) {
124
- if ( $this->esi_enabled ) {
125
- add_action( $v, array( $this, 'purge_esi' ) ) ;
126
- }
127
- else {
128
- add_action( $v, array( $this, 'purge_private_all' ) ) ;
129
- }
130
- }
131
- }
132
-
133
  }
134
 
135
  /**
@@ -550,13 +515,6 @@ class WooCommerce extends Base {
550
  return ;
551
  }
552
 
553
- // Set TTL
554
- if ( function_exists( 'is_shop' ) && is_shop() ) {
555
- if ( apply_filters( 'litespeed_conf', self::O_SHOP_FRONT_TTL ) ) {
556
- do_action( 'litespeed_control_set_ttl', apply_filters( 'litespeed_conf', self::O_CACHE_TTL_FRONTPAGE ) );
557
- }
558
- }
559
-
560
  // For later versions, DONOTCACHEPAGE should be set.
561
  // No need to check uri/qs.
562
  if ( version_compare($woocom->version, '1.4.2', '>=') ) {
@@ -574,36 +532,12 @@ class WooCommerce extends Base {
574
  * From woo/inc/class-wc-cache-helper.php:prevent_caching()
575
  * @since 1.4
576
  */
577
- $page_ids = array_filter( array( wc_get_page_id( 'cart' ), wc_get_page_id( 'checkout' ), wc_get_page_id( 'myaccount' ) ) );
578
  if ( isset( $_GET['download_file'] ) || isset( $_GET['add-to-cart'] ) || is_page( $page_ids ) ) {
579
  $err = 'woo non cacheable pages' ;
580
  }
581
- elseif ( is_null($woocom->cart) ) {
582
- $err = 'null cart' ;
583
- }
584
- elseif ( ! $this->esi_enabled && $woocom->cart->get_cart_contents_count() !== 0 ) {
585
- if ( $this->cache_cart ) {
586
- do_action( 'litespeed_control_set_private', 'cache cart' );
587
- /**
588
- * no rewrite rule to set no vary, so can't set no_vary otherwise it will always miss as can't match vary
589
- * @since 1.6.6.1
590
- */
591
- // do_action( 'litespeed_vary_no' );
592
- do_action( 'litespeed_tag_add_private_esi', 'storefront-cart-header' );
593
- }
594
- else {
595
- $err = 'cart is not empty' ;
596
- }
597
- }
598
- elseif ( $esi_id === 'storefront-cart-header' ) {
599
- if ( $this->cache_cart ) {
600
- do_action( 'litespeed_control_set_private', 'cache cart' );
601
- do_action( 'litespeed_vary_no' );
602
- do_action( 'litespeed_tag_add_private_esi', 'storefront-cart-header' );
603
- }
604
- else {
605
- $err = 'ESI cart should be nocache' ;
606
- }
607
  }
608
  elseif ( function_exists( 'wc_notice_count' ) && wc_notice_count() > 0 ) {
609
  $err = 'has wc notice' ;
@@ -770,10 +704,7 @@ class WooCommerce extends Base {
770
  // Append option save value filter
771
  do_action( 'litespeed_conf_multi_switch', self::O_UPDATE_INTERVAL, 3 ); // This need to be before conf_append
772
 
773
- do_action( 'litespeed_conf_append', self::O_ESI_CACHE_CART, true );
774
  do_action( 'litespeed_conf_append', self::O_UPDATE_INTERVAL, false );
775
- do_action( 'litespeed_conf_append', self::O_SHOP_FRONT_TTL, true );
776
- do_action( 'litespeed_conf_append', self::O_WOO_CACHE_CART, true );
777
  }
778
 
779
  /**
20
 
21
  const CACHETAG_SHOP = 'WC_S' ;
22
  const CACHETAG_TERM = 'WC_T.' ;
 
23
  const O_UPDATE_INTERVAL = 'wc_update_interval' ;
 
 
24
  const O_PQS_CS = 0 ; // flush product on quantity + stock change, categories on stock change
25
  const O_PS_CS = 1 ; // flush product and categories on stock change
26
  const O_PS_CN = 2 ; // flush product on stock change, categories no flush
32
  const ESI_PARAM_PATH = 'wc_path' ;
33
  const ESI_PARAM_LOCATED = 'wc_located' ;
34
 
 
35
  private $esi_enabled ;
36
 
37
  /**
60
  {
61
  $this->_option_append() ;
62
 
 
63
  $this->esi_enabled = apply_filters( 'litespeed_esi_status', false );
64
 
65
  add_action( 'litespeed_control_finalize', array( $this, 'set_control' ) );
85
  add_filter( 'litespeed_esi_params', array( $this, 'add_post_id' ), 10, 2 );
86
  }
87
 
 
 
 
 
 
 
 
 
 
 
88
  }
89
 
90
  if ( is_admin() ) {
95
  add_filter( 'litespeed_widget_default_options', array( $this, 'wc_widget_default' ), 10, 2 );
96
  }
97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  }
99
 
100
  /**
515
  return ;
516
  }
517
 
 
 
 
 
 
 
 
518
  // For later versions, DONOTCACHEPAGE should be set.
519
  // No need to check uri/qs.
520
  if ( version_compare($woocom->version, '1.4.2', '>=') ) {
532
  * From woo/inc/class-wc-cache-helper.php:prevent_caching()
533
  * @since 1.4
534
  */
535
+ $page_ids = array_filter( array( wc_get_page_id( 'checkout' ), wc_get_page_id( 'myaccount' ) ) );
536
  if ( isset( $_GET['download_file'] ) || isset( $_GET['add-to-cart'] ) || is_page( $page_ids ) ) {
537
  $err = 'woo non cacheable pages' ;
538
  }
539
+ elseif ( is_page( wc_get_page_id( 'cart' ) ) && $woocom->cart->get_cart_contents_count() !== 0 ) {
540
+ $err = 'cart is not empty' ;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
541
  }
542
  elseif ( function_exists( 'wc_notice_count' ) && wc_notice_count() > 0 ) {
543
  $err = 'has wc notice' ;
704
  // Append option save value filter
705
  do_action( 'litespeed_conf_multi_switch', self::O_UPDATE_INTERVAL, 3 ); // This need to be before conf_append
706
 
 
707
  do_action( 'litespeed_conf_append', self::O_UPDATE_INTERVAL, false );
 
 
708
  }
709
 
710
  /**
thirdparty/woocommerce.content.tpl.php CHANGED
@@ -25,18 +25,6 @@ use \LiteSpeed\Base;
25
  </div>
26
 
27
  <table class="wp-list-table striped litespeed-table"><tbody>
28
- <tr>
29
- <th>
30
- <?php $id = self::O_ESI_CACHE_CART; ?>
31
- <?php echo __( 'Use ESI for Cart', 'litespeed-cache' ); ?>
32
- </th>
33
- <td>
34
- <?php do_action( 'litespeed_build_switch' , $id ); ?>
35
- <div class="litespeed-desc">
36
- <?php echo sprintf( __( 'When the option is ON, cart information will be implemented as ESI blocks. NOTE: To make it work, you need to turn on %1$s under ESI settings.', 'litespeed-cache' ), '<code>' . Lang::title( Base::O_ESI ) . '</code>' ); ?>
37
- </div>
38
- </td>
39
- </tr>
40
  <tr>
41
  <th>
42
  <?php $id = self::O_UPDATE_INTERVAL; ?>
@@ -66,33 +54,6 @@ use \LiteSpeed\Base;
66
  </td>
67
  </tr>
68
 
69
- <tr>
70
- <th>
71
- <?php $id = self::O_SHOP_FRONT_TTL; ?>
72
- <?php echo __( 'Use Front Page TTL for the Shop Page', 'litespeed-cache' ); ?>
73
- </th>
74
- <td>
75
- <?php do_action( 'litespeed_build_switch', $id ); ?>
76
- <div class="litespeed-desc">
77
- <?php echo __( 'Checking this option will force the shop page to use the front page TTL setting.', 'litespeed-cache' ); ?>
78
- <?php echo sprintf( __( 'For example, if the homepage for the site is located at %1$s, the shop page may be located at %2$s.', 'litespeed-cache' ), 'https://www.EXAMPLE.com', 'https://www.EXAMPLE.com/shop' ); ?>
79
- </div>
80
- </td>
81
- </tr>
82
-
83
- <tr>
84
- <th>
85
- <?php $id = self::O_WOO_CACHE_CART; ?>
86
- <?php echo __( 'Privately Cache Cart', 'litespeed-cache' ); ?>
87
- </th>
88
- <td>
89
- <?php do_action( 'litespeed_build_switch', $id ); ?>
90
- <div class="litespeed-desc">
91
- <?php echo __( 'Privately cache cart when not empty.', 'litespeed-cache' ); ?>
92
- </div>
93
- </td>
94
- </tr>
95
-
96
  </tbody></table>
97
 
98
  </div>
25
  </div>
26
 
27
  <table class="wp-list-table striped litespeed-table"><tbody>
 
 
 
 
 
 
 
 
 
 
 
 
28
  <tr>
29
  <th>
30
  <?php $id = self::O_UPDATE_INTERVAL; ?>
54
  </td>
55
  </tr>
56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  </tbody></table>
58
 
59
  </div>
tpl/cdn/auto_setup.tpl.php CHANGED
@@ -117,7 +117,7 @@ if ($cdn_setup_done_ts) {
117
  __( 'Manage CDN', 'litespeed-cache' ) . ' <span class="dashicons dashicons-external"></span>',
118
  false,
119
  'litespeed-link-with-icon' ); ?>
120
- <?php Doc::learn_more( Cloud::CLOUD_SERVER_DASH . '/dns/records/' . $dom . '.',
121
  __( 'Manage DNS Zone', 'litespeed-cache' ) . ' <span class="dashicons dashicons-external"></span>',
122
  false,
123
  'litespeed-link-with-icon' ); ?>
@@ -172,7 +172,7 @@ if ($cdn_setup_done_ts) {
172
  </p>
173
  <p>
174
  <?php echo __( 'Is something missing?', 'litespeed-cache' ) ; ?>
175
- <?php Doc::learn_more( Cloud::CLOUD_SERVER_DASH . '/dns/records/' . $dom . '.',
176
  __( 'Review DNS records', 'litespeed-cache' ) . ' <span class="dashicons dashicons-external"></span>',
177
  false,
178
  'litespeed-link-with-icon' ); ?>
117
  __( 'Manage CDN', 'litespeed-cache' ) . ' <span class="dashicons dashicons-external"></span>',
118
  false,
119
  'litespeed-link-with-icon' ); ?>
120
+ <?php Doc::learn_more( Cloud::CLOUD_SERVER_DASH . '/dns/find/' . $dom,
121
  __( 'Manage DNS Zone', 'litespeed-cache' ) . ' <span class="dashicons dashicons-external"></span>',
122
  false,
123
  'litespeed-link-with-icon' ); ?>
172
  </p>
173
  <p>
174
  <?php echo __( 'Is something missing?', 'litespeed-cache' ) ; ?>
175
+ <?php Doc::learn_more( Cloud::CLOUD_SERVER_DASH . '/dns/find/' . $dom,
176
  __( 'Review DNS records', 'litespeed-cache' ) . ' <span class="dashicons dashicons-external"></span>',
177
  false,
178
  'litespeed-link-with-icon' ); ?>
tpl/general/entry.tpl.php CHANGED
@@ -39,7 +39,6 @@ if ( $this->_is_network_admin ) {
39
 
40
  <div class="litespeed-body">
41
  <?php
42
- $this->form_action();
43
 
44
  // include all tpl for faster UE
45
  foreach ($menu_list as $tab => $val) {
@@ -48,7 +47,6 @@ if ( $this->_is_network_admin ) {
48
  echo "</div>";
49
  }
50
 
51
- $this->form_end();
52
  ?>
53
  </div>
54
 
39
 
40
  <div class="litespeed-body">
41
  <?php
 
42
 
43
  // include all tpl for faster UE
44
  foreach ($menu_list as $tab => $val) {
47
  echo "</div>";
48
  }
49
 
 
50
  ?>
51
  </div>
52
 
tpl/general/network_settings.tpl.php CHANGED
@@ -2,6 +2,7 @@
2
  namespace LiteSpeed;
3
  defined( 'WPINC' ) || exit;
4
 
 
5
  ?>
6
 
7
  <h3 class="litespeed-title-short">
2
  namespace LiteSpeed;
3
  defined( 'WPINC' ) || exit;
4
 
5
+ $this->form_action();
6
  ?>
7
 
8
  <h3 class="litespeed-title-short">
tpl/general/settings.tpl.php CHANGED
@@ -36,6 +36,7 @@ if ( ! $can_token ) {
36
  $apply_ts_txt .= ' ' . sprintf( __( 'Next available request time: <code>After %s</code>', 'litespeed-cache' ), Utility::readable_time( $next_available_req, 0, true ) );
37
  }
38
 
 
39
  ?>
40
 
41
  <h3 class="litespeed-title-short">
@@ -194,12 +195,6 @@ if ( ! $can_token ) {
194
  ⚠️ <?php echo __( 'Notice', 'litespeed-cache' ); ?>: <?php echo sprintf( __( 'You need to turn %s on and finish all WebP generation to get maximum result.', 'litespeed-cache' ), '<code>' . Lang::title( Base::O_IMG_OPTM_WEBP ) . '</code>' ); ?>
195
  </font>
196
  <?php endif; ?>
197
-
198
- <?php if ( ! $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) : ?>
199
- <br /><font class="litespeed-danger litespeed-left10">
200
- ⚠️ <?php echo __( 'Notice', 'litespeed-cache' ); ?>: <?php echo sprintf( __( 'You need to turn %s on to get maximum result.', 'litespeed-cache' ), '<code>' . Lang::title( Base::O_IMG_OPTM_WEBP_REPLACE ) . '</code>' ); ?>
201
- </font>
202
- <?php endif; ?>
203
  </div>
204
  </td>
205
  </tr>
@@ -236,3 +231,5 @@ if ( ! $can_token ) {
236
  </tr>
237
 
238
  </tbody></table>
 
 
36
  $apply_ts_txt .= ' ' . sprintf( __( 'Next available request time: <code>After %s</code>', 'litespeed-cache' ), Utility::readable_time( $next_available_req, 0, true ) );
37
  }
38
 
39
+ $this->form_action();
40
  ?>
41
 
42
  <h3 class="litespeed-title-short">
195
  ⚠️ <?php echo __( 'Notice', 'litespeed-cache' ); ?>: <?php echo sprintf( __( 'You need to turn %s on and finish all WebP generation to get maximum result.', 'litespeed-cache' ), '<code>' . Lang::title( Base::O_IMG_OPTM_WEBP ) . '</code>' ); ?>
196
  </font>
197
  <?php endif; ?>
 
 
 
 
 
 
198
  </div>
199
  </td>
200
  </tr>
231
  </tr>
232
 
233
  </tbody></table>
234
+
235
+ <?php $this->form_end(); ?>
tpl/general/settings_tuning.tpl.php CHANGED
@@ -2,6 +2,7 @@
2
  namespace LiteSpeed;
3
  defined( 'WPINC' ) || exit;
4
 
 
5
  ?>
6
  <h3 class="litespeed-title-short">
7
  <?php echo __( 'Tuning Settings', 'litespeed-cache' ); ?>
@@ -53,3 +54,5 @@ defined( 'WPINC' ) || exit;
53
  </td>
54
  </tr>
55
  </tbody></table>
 
 
2
  namespace LiteSpeed;
3
  defined( 'WPINC' ) || exit;
4
 
5
+ $this->form_action();
6
  ?>
7
  <h3 class="litespeed-title-short">
8
  <?php echo __( 'Tuning Settings', 'litespeed-cache' ); ?>
54
  </td>
55
  </tr>
56
  </tbody></table>
57
+
58
+ <?php $this->form_end(); ?>
tpl/img_optm/settings.media_webp.tpl.php CHANGED
@@ -5,12 +5,13 @@ defined( 'WPINC' ) || exit;
5
 
6
  <tr>
7
  <th>
8
- <?php $id = Base::O_IMG_OPTM_WEBP_REPLACE; ?>
9
  <?php $this->title( $id ); ?>
10
  </th>
11
  <td>
12
  <?php $this->build_switch( $id ); ?>
13
  <div class="litespeed-desc">
 
14
  <?php echo sprintf( __( 'Significantly improve load time by replacing images with their optimized %s versions.', 'litespeed-cache' ), '.webp' ); ?>
15
  <br /><?php Doc::notice_htaccess(); ?>
16
  <br /><?php Doc::crawler_affected(); ?>
5
 
6
  <tr>
7
  <th>
8
+ <?php $id = Base::O_IMG_OPTM_WEBP; ?>
9
  <?php $this->title( $id ); ?>
10
  </th>
11
  <td>
12
  <?php $this->build_switch( $id ); ?>
13
  <div class="litespeed-desc">
14
+ <?php echo __( 'Request WebP versions of original images when doing optimization.', 'litespeed-cache' ); ?>
15
  <?php echo sprintf( __( 'Significantly improve load time by replacing images with their optimized %s versions.', 'litespeed-cache' ), '.webp' ); ?>
16
  <br /><?php Doc::notice_htaccess(); ?>
17
  <br /><?php Doc::crawler_affected(); ?>
tpl/img_optm/settings.tpl.php CHANGED
@@ -98,19 +98,6 @@ $this->form_action();
98
  </td>
99
  </tr>
100
 
101
- <tr>
102
- <th>
103
- <?php $id = Base::O_IMG_OPTM_WEBP; ?>
104
- <?php $this->title( $id ); ?>
105
- </th>
106
- <td>
107
- <?php $this->build_switch( $id ); ?>
108
- <div class="litespeed-desc">
109
- <?php echo __( 'Request WebP versions of original images when doing optimization.', 'litespeed-cache' ); ?>
110
- </div>
111
- </td>
112
- </tr>
113
-
114
  <?php
115
  if ( ! is_multisite() ) :
116
  // webp
98
  </td>
99
  </tr>
100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  <?php
102
  if ( ! is_multisite() ) :
103
  // webp
tpl/page_optm/entry.tpl.php CHANGED
@@ -11,6 +11,7 @@ $menu_list = array(
11
  'settings_media_exc' => __( 'Media Excludes', 'litespeed-cache' ),
12
  'settings_localization' => __( 'Localization', 'litespeed-cache' ),
13
  'settings_tuning' => __( 'Tuning', 'litespeed-cache' ),
 
14
  );
15
 
16
  ?>
11
  'settings_media_exc' => __( 'Media Excludes', 'litespeed-cache' ),
12
  'settings_localization' => __( 'Localization', 'litespeed-cache' ),
13
  'settings_tuning' => __( 'Tuning', 'litespeed-cache' ),
14
+ 'settings_tuning_css' => __( 'Tuning', 'litespeed-cache' ) . ' - CSS',
15
  );
16
 
17
  ?>
tpl/page_optm/settings_tuning.tpl.php CHANGED
@@ -20,27 +20,6 @@ ksort( $roles );
20
  </h3>
21
 
22
  <table class="wp-list-table striped litespeed-table"><tbody>
23
- <tr>
24
- <th>
25
- <?php $id = Base::O_OPTM_CSS_EXC; ?>
26
- <?php $this->title( $id ); ?>
27
- </th>
28
- <td>
29
- <?php $this->build_textarea( $id ); ?>
30
- <div class="litespeed-desc">
31
- <?php echo __( 'Listed CSS files or inline CSS code will not be minified/combined.', 'litespeed-cache' ); ?>
32
- <?php Doc::full_or_partial_url(); ?>
33
- <?php Doc::one_per_line(); ?>
34
- <br /><font class="litespeed-success">
35
- <?php echo __( 'API', 'litespeed-cache' ); ?>:
36
- <?php echo sprintf( __( 'Filter %s is supported.', 'litespeed-cache' ), '<code>litespeed_optimize_css_excludes</code>' ); ?>
37
- <?php echo sprintf( __( 'Elements with attribute %s in html code will be excluded.', 'litespeed-cache' ), '<code>data-no-optimize="1"</code>' ); ?>
38
- <br /><?php echo __( 'Predefined list will also be combined w/ the above settings', 'litespeed-cache' ); ?>: <a href="https://github.com/litespeedtech/lscache_wp/blob/dev/data/css_excludes.txt" target="_blank">https://github.com/litespeedtech/lscache_wp/blob/dev/data/css_excludes.txt</a>
39
- </font>
40
- </div>
41
- </td>
42
- </tr>
43
-
44
  <tr>
45
  <th>
46
  <?php $id = Base::O_OPTM_JS_EXC; ?>
@@ -62,94 +41,6 @@ ksort( $roles );
62
  </td>
63
  </tr>
64
 
65
- <tr>
66
- <th>
67
- <?php $id = Base::O_OPTM_UCSS_WHITELIST; ?>
68
- <?php $this->title( $id ); ?>
69
- </th>
70
- <td>
71
- <?php $this->build_textarea( $id ); ?>
72
- <div class="litespeed-desc">
73
- <?php echo __( 'List the CSS selector that its style should be always contained in UCSS.', 'litespeed-cache' ); ?>
74
- <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#ucss-whitelist', __( 'How to choose an UCSS allowlist selector?', 'litespeed-cache' ) ); ?>
75
- <br /><?php echo sprintf( __( 'Wildcard %s supported.', 'litespeed-cache' ), '<code>*</code>' ); ?>
76
- <div class="litespeed-callout notice notice-warning inline">
77
- <h4><?php echo __( 'Note', 'litespeed-cache' ); ?></h4>
78
- <p>
79
- <?php echo __( 'The selector must exist in the CSS. Parent classes in the HTML will not work.', 'litespeed-cache' ); ?>
80
- </p>
81
- </div>
82
- <font class="litespeed-success">
83
- <?php echo __( 'Predefined list will also be combined w/ the above settings', 'litespeed-cache' ); ?>: <a href="https://github.com/litespeedtech/lscache_wp/blob/dev/data/ucss_whitelist.txt" target="_blank">https://github.com/litespeedtech/lscache_wp/blob/dev/data/ucss_whitelist.txt</a>
84
- </font>
85
- </div>
86
- </td>
87
- </tr>
88
-
89
- <tr>
90
- <th>
91
- <?php $id = Base::O_OPTM_UCSS_EXC; ?>
92
- <?php $this->title( $id ); ?>
93
- </th>
94
- <td>
95
- <?php $this->build_textarea( $id ); ?>
96
- <div class="litespeed-desc">
97
- <?php echo __( 'Listed URI will not generate UCSS.', 'litespeed-cache' ); ?>
98
- <?php Doc::full_or_partial_url(); ?>
99
- <?php Doc::one_per_line(); ?>
100
- <br /><span class="litespeed-success">
101
- <?php echo __( 'API', 'litespeed-cache' ); ?>:
102
- <?php echo sprintf( __( 'Filter %s is supported.', 'litespeed-cache' ), '<code>litespeed_ucss_exc</code>' ); ?>
103
- </span>
104
- <br /><font class="litespeed-success">API: <?php echo sprintf( __( 'Use %1$s to generate one single UCSS for the pages which page type is %2$s while other page types still per URL.', 'litespeed-cache' ), "<code>add_filter( 'litespeed_ucss_per_pagetype', function(){return get_post_type() == 'page';} );</code>", '<code>page</code>' ); ?></font>
105
- <br /><font class="litespeed-success">API: <?php echo sprintf( __( 'Use %1$s to bypass UCSS for the pages which page type is %2$s.', 'litespeed-cache' ), "<code>add_action( 'litespeed_optm', function(){get_post_type() == 'page' && do_action( 'litespeed_conf_force', 'optm-ucss', false );});</code>", '<code>page</code>' ); ?></font>
106
-
107
- </div>
108
- </td>
109
- </tr>
110
-
111
- <tr>
112
- <th>
113
- <?php $id = Base::O_OPTM_CCSS_SEP_POSTTYPE; ?>
114
- <?php $this->title( $id ); ?>
115
- </th>
116
- <td>
117
- <?php $this->build_textarea( $id ); ?>
118
- <div class="litespeed-desc">
119
- <?php echo __('List post types where each item of that type should have its own CCSS generated.', 'litespeed-cache'); ?>
120
- <?php echo sprintf( __( 'For example, if every Page on the site has different formatting, enter %s in the box. Separate critical CSS files will be stored for every Page on the site.', 'litespeed-cache' ), '<code>page</code>' ); ?>
121
- <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#separate-ccss-cache-post-types_1' ); ?>
122
- </div>
123
- </td>
124
- </tr>
125
-
126
- <tr>
127
- <th>
128
- <?php $id = Base::O_OPTM_CCSS_SEP_URI; ?>
129
- <?php $this->title( $id ); ?>
130
- </th>
131
- <td>
132
- <?php $this->build_textarea( $id ); ?>
133
- <div class="litespeed-desc">
134
- <?php echo __( 'Separate critical CSS files will be generated for paths containing these strings.', 'litespeed-cache' ); ?>
135
- <?php $this->_uri_usage_example(); ?>
136
- </div>
137
- </td>
138
- </tr>
139
-
140
- <tr>
141
- <th>
142
- <?php $id = Base::O_OPTM_CCSS_CON; ?>
143
- <?php $this->title( $id ); ?>
144
- </th>
145
- <td>
146
- <?php $this->build_textarea( $id ); ?>
147
- <div class="litespeed-desc">
148
- <?php echo sprintf( __( 'Specify critical CSS rules for above-the-fold content when enabling %s.', 'litespeed-cache' ), __( 'Load CSS Asynchronously', 'litespeed-cache' ) ); ?>
149
- </div>
150
- </td>
151
- </tr>
152
-
153
  <tr>
154
  <th>
155
  <?php $id = Base::O_OPTM_JS_DEFER_EXC; ?>
20
  </h3>
21
 
22
  <table class="wp-list-table striped litespeed-table"><tbody>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  <tr>
24
  <th>
25
  <?php $id = Base::O_OPTM_JS_EXC; ?>
41
  </td>
42
  </tr>
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  <tr>
45
  <th>
46
  <?php $id = Base::O_OPTM_JS_DEFER_EXC; ?>
tpl/page_optm/settings_tuning_css.tpl.php ADDED
@@ -0,0 +1,136 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace LiteSpeed;
3
+ defined( 'WPINC' ) || exit;
4
+
5
+ ?>
6
+ <h3 class="litespeed-title-short">
7
+ <?php echo __( 'Tuning Settings', 'litespeed-cache' ); ?> - CSS
8
+ <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#tuning-css-settings-tab' ); ?>
9
+ </h3>
10
+
11
+ <table class="wp-list-table striped litespeed-table"><tbody>
12
+ <tr>
13
+ <th>
14
+ <?php $id = Base::O_OPTM_CSS_EXC; ?>
15
+ <?php $this->title( $id ); ?>
16
+ </th>
17
+ <td>
18
+ <?php $this->build_textarea( $id ); ?>
19
+ <div class="litespeed-desc">
20
+ <?php echo __( 'Listed CSS files or inline CSS code will not be minified/combined.', 'litespeed-cache' ); ?>
21
+ <?php Doc::full_or_partial_url(); ?>
22
+ <?php Doc::one_per_line(); ?>
23
+ <br /><font class="litespeed-success">
24
+ <?php echo __( 'API', 'litespeed-cache' ); ?>:
25
+ <?php echo sprintf( __( 'Filter %s is supported.', 'litespeed-cache' ), '<code>litespeed_optimize_css_excludes</code>' ); ?>
26
+ <?php echo sprintf( __( 'Elements with attribute %s in html code will be excluded.', 'litespeed-cache' ), '<code>data-no-optimize="1"</code>' ); ?>
27
+ <br /><?php echo __( 'Predefined list will also be combined w/ the above settings', 'litespeed-cache' ); ?>: <a href="https://github.com/litespeedtech/lscache_wp/blob/dev/data/css_excludes.txt" target="_blank">https://github.com/litespeedtech/lscache_wp/blob/dev/data/css_excludes.txt</a>
28
+ </font>
29
+ </div>
30
+ </td>
31
+ </tr>
32
+
33
+ <tr>
34
+ <th>
35
+ <?php $id = Base::O_OPTM_UCSS_FILE_EXC_INLINE; ?>
36
+ <?php $this->title( $id ); ?>
37
+ </th>
38
+ <td>
39
+ <?php $this->build_textarea( $id ); ?>
40
+ <div class="litespeed-desc">
41
+ <?php echo __( 'Listed CSS files will be excluded from UCSS and saved to inline.', 'litespeed-cache' ); ?>
42
+ <?php Doc::full_or_partial_url(); ?>
43
+ <?php Doc::one_per_line(); ?>
44
+ </div>
45
+ </td>
46
+ </tr>
47
+
48
+ <tr>
49
+ <th>
50
+ <?php $id = Base::O_OPTM_UCSS_SELECTOR_WHITELIST; ?>
51
+ <?php $this->title( $id ); ?>
52
+ </th>
53
+ <td>
54
+ <?php $this->build_textarea( $id ); ?>
55
+ <div class="litespeed-desc">
56
+ <?php echo __( 'List the CSS selector that its style should be always contained in UCSS.', 'litespeed-cache' ); ?>
57
+ <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#ucss-whitelist', __( 'How to choose an UCSS allowlist selector?', 'litespeed-cache' ) ); ?>
58
+ <br /><?php echo sprintf( __( 'Wildcard %s supported.', 'litespeed-cache' ), '<code>*</code>' ); ?>
59
+ <div class="litespeed-callout notice notice-warning inline">
60
+ <h4><?php echo __( 'Note', 'litespeed-cache' ); ?></h4>
61
+ <p>
62
+ <?php echo __( 'The selector must exist in the CSS. Parent classes in the HTML will not work.', 'litespeed-cache' ); ?>
63
+ </p>
64
+ </div>
65
+ <font class="litespeed-success">
66
+ <?php echo __( 'Predefined list will also be combined w/ the above settings', 'litespeed-cache' ); ?>: <a href="https://github.com/litespeedtech/lscache_wp/blob/dev/data/ucss_whitelist.txt" target="_blank">https://github.com/litespeedtech/lscache_wp/blob/dev/data/ucss_whitelist.txt</a>
67
+ </font>
68
+ </div>
69
+ </td>
70
+ </tr>
71
+
72
+ <tr>
73
+ <th>
74
+ <?php $id = Base::O_OPTM_UCSS_EXC; ?>
75
+ <?php $this->title( $id ); ?>
76
+ </th>
77
+ <td>
78
+ <?php $this->build_textarea( $id ); ?>
79
+ <div class="litespeed-desc">
80
+ <?php echo __( 'Listed URI will not generate UCSS.', 'litespeed-cache' ); ?>
81
+ <?php Doc::full_or_partial_url(); ?>
82
+ <?php Doc::one_per_line(); ?>
83
+ <br /><span class="litespeed-success">
84
+ <?php echo __( 'API', 'litespeed-cache' ); ?>:
85
+ <?php echo sprintf( __( 'Filter %s is supported.', 'litespeed-cache' ), '<code>litespeed_ucss_exc</code>' ); ?>
86
+ </span>
87
+ <br /><font class="litespeed-success">API: <?php echo sprintf( __( 'Use %1$s to generate one single UCSS for the pages which page type is %2$s while other page types still per URL.', 'litespeed-cache' ), "<code>add_filter( 'litespeed_ucss_per_pagetype', function(){return get_post_type() == 'page';} );</code>", '<code>page</code>' ); ?></font>
88
+ <br /><font class="litespeed-success">API: <?php echo sprintf( __( 'Use %1$s to bypass UCSS for the pages which page type is %2$s.', 'litespeed-cache' ), "<code>add_action( 'litespeed_optm', function(){get_post_type() == 'page' && do_action( 'litespeed_conf_force', 'optm-ucss', false );});</code>", '<code>page</code>' ); ?></font>
89
+
90
+ </div>
91
+ </td>
92
+ </tr>
93
+
94
+ <tr>
95
+ <th>
96
+ <?php $id = Base::O_OPTM_CCSS_SEP_POSTTYPE; ?>
97
+ <?php $this->title( $id ); ?>
98
+ </th>
99
+ <td>
100
+ <?php $this->build_textarea( $id ); ?>
101
+ <div class="litespeed-desc">
102
+ <?php echo __('List post types where each item of that type should have its own CCSS generated.', 'litespeed-cache'); ?>
103
+ <?php echo sprintf( __( 'For example, if every Page on the site has different formatting, enter %s in the box. Separate critical CSS files will be stored for every Page on the site.', 'litespeed-cache' ), '<code>page</code>' ); ?>
104
+ <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#separate-ccss-cache-post-types_1' ); ?>
105
+ </div>
106
+ </td>
107
+ </tr>
108
+
109
+ <tr>
110
+ <th>
111
+ <?php $id = Base::O_OPTM_CCSS_SEP_URI; ?>
112
+ <?php $this->title( $id ); ?>
113
+ </th>
114
+ <td>
115
+ <?php $this->build_textarea( $id ); ?>
116
+ <div class="litespeed-desc">
117
+ <?php echo __( 'Separate critical CSS files will be generated for paths containing these strings.', 'litespeed-cache' ); ?>
118
+ <?php $this->_uri_usage_example(); ?>
119
+ </div>
120
+ </td>
121
+ </tr>
122
+
123
+ <tr>
124
+ <th>
125
+ <?php $id = Base::O_OPTM_CCSS_CON; ?>
126
+ <?php $this->title( $id ); ?>
127
+ </th>
128
+ <td>
129
+ <?php $this->build_textarea( $id ); ?>
130
+ <div class="litespeed-desc">
131
+ <?php echo sprintf( __( 'Specify critical CSS rules for above-the-fold content when enabling %s.', 'litespeed-cache' ), __( 'Load CSS Asynchronously', 'litespeed-cache' ) ); ?>
132
+ </div>
133
+ </td>
134
+ </tr>
135
+
136
+ </tbody></table>
tpl/presets/entry.tpl.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace LiteSpeed;
3
+ defined( 'WPINC' ) || exit;
4
+
5
+ $menu_list = array(
6
+ 'standard' => __( 'Standard Presets', 'litespeed-cache' ),
7
+ 'import_export' => __( 'Import / Export', 'litespeed-cache' ),
8
+ );
9
+
10
+ ?>
11
+
12
+ <div class="wrap">
13
+ <h1 class="litespeed-h1">
14
+ <?php echo __( 'LiteSpeed Cache Configuration Presets', 'litespeed-cache' ); ?>
15
+ </h1>
16
+ <span class="litespeed-desc">
17
+ v<?php echo Core::VER; ?>
18
+ </span>
19
+ <hr class="wp-header-end">
20
+ </div>
21
+
22
+ <div class="litespeed-wrap">
23
+ <h2 class="litespeed-header nav-tab-wrapper">
24
+ <?php
25
+ $i = 1;
26
+ foreach ($menu_list as $tab => $val){
27
+ $accesskey = $i <= 9 ? "litespeed-accesskey='$i'" : '';
28
+ echo "<a class='litespeed-tab nav-tab' href='#$tab' data-litespeed-tab='$tab' $accesskey>$val</a>";
29
+ $i ++;
30
+ }
31
+ ?>
32
+ </h2>
33
+
34
+ <div class="litespeed-body">
35
+ <?php
36
+
37
+ // include all tpl for faster UE
38
+ foreach ($menu_list as $tab => $val) {
39
+ echo "<div data-litespeed-layout='$tab'>";
40
+ if ('import_export' === $tab) {
41
+ require LSCWP_DIR . "tpl/toolbox/$tab.tpl.php";
42
+ } else {
43
+ require LSCWP_DIR . "tpl/presets/$tab.tpl.php";
44
+ }
45
+ echo "</div>";
46
+ }
47
+
48
+ ?>
49
+ </div>
50
+
51
+ </div>
tpl/presets/standard.tpl.php ADDED
@@ -0,0 +1,194 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace LiteSpeed;
3
+ defined( 'WPINC' ) || exit;
4
+
5
+ $presets = array();
6
+
7
+ $presets['essentials'] = array(
8
+ 'title' => __( 'Essentials', 'litespeed-cache' ),
9
+ 'body' => array(
10
+ __( 'Default Cache', 'litespeed-cache' ),
11
+ __( 'Higher TTL', 'litespeed-cache' ),
12
+ __( 'Browser Cache', 'litespeed-cache' )
13
+ ),
14
+ 'footer' => array(
15
+ __( 'This no-risk preset is appropriate for all websites. Good for new users, simple websites, or cache-oriented development.', 'litespeed-cache' ),
16
+ __( 'A Domain Key is not required to use this preset. Only basic caching features are enabled.', 'litespeed-cache' )
17
+ )
18
+ );
19
+
20
+ $presets['basic'] = array(
21
+ 'title' => __( 'Basic', 'litespeed-cache' ),
22
+ 'body' => array(
23
+ __( 'Everything in Essentials, Plus', 'litespeed-cache' ),
24
+ __( 'Image Optimization', 'litespeed-cache' ),
25
+ __( 'Mobile Cache', 'litespeed-cache' )
26
+ ),
27
+ 'footer' => array(
28
+ __( 'This low-risk preset introduces basic optimizations for speed and user experience. Appropriate for enthusiastic beginners.', 'litespeed-cache' ),
29
+ __( 'A Domain Key is required to use this preset. Includes optimizations known to improve site score in page speed measurement tools.', 'litespeed-cache' )
30
+ )
31
+ );
32
+
33
+ $presets['advanced'] = array(
34
+ 'title' => __( 'Advanced (Recommended)', 'litespeed-cache' ),
35
+ 'body' => array(
36
+ __( 'Everything in Basic, Plus', 'litespeed-cache' ),
37
+ __( 'Guest Mode and Guest Optimization', 'litespeed-cache' ),
38
+ __( 'CSS, JS and HTML Minification', 'litespeed-cache' ),
39
+ __( 'Font Display Optimization', 'litespeed-cache' ),
40
+ __( 'JS Defer for both external and inline JS', 'litespeed-cache' ),
41
+ __( 'DNS Prefetch for static files', 'litespeed-cache' ),
42
+ __( 'Gravatar Cache', 'litespeed-cache' ),
43
+ __( 'Remove Query Strings from Static Files', 'litespeed-cache' ),
44
+ __( 'Remove WordPress Emoji', 'litespeed-cache' ),
45
+ __( 'Remove Noscript Tags', 'litespeed-cache' )
46
+ ),
47
+ 'footer' => array(
48
+ __( 'This preset is good for most websites, and is unlikely to cause conflicts. Any CSS or JS conflicts may be resolved with Page Optimization > Tuning tools.' ),
49
+ __( 'A Domain Key is required to use this preset. Includes many optimizations known to improve page speed scores.', 'litespeed-cache' )
50
+ )
51
+ );
52
+
53
+ $presets['aggressive'] = array(
54
+ 'title' => __( 'Aggressive', 'litespeed-cache' ),
55
+ 'body' => array(
56
+ __( 'Everything in Advanced, Plus', 'litespeed-cache' ),
57
+ __( 'CSS & JS Combine', 'litespeed-cache' ),
58
+ __( 'Asynchronous CSS Loading with Critical CSS', 'litespeed-cache' ),
59
+ __( 'Removed Unused CSS for Users', 'litespeed-cache' ),
60
+ __( 'Lazy Load for Iframes', 'litespeed-cache' )
61
+ ),
62
+ 'footer' => array(
63
+ __( 'This preset might work out of the box for some websites, but be sure to test! Some CSS or JS exclusions may be necessary in Page Optimization > Tuning.' ),
64
+ __( 'A Domain Key is required to use this preset. Includes many optimizations known to improve page speed scores.', 'litespeed-cache' )
65
+ )
66
+ );
67
+
68
+ $presets['extreme'] = array(
69
+ 'title' => __( 'Extreme', 'litespeed-cache' ),
70
+ 'body' => array(
71
+ __( 'Everything in Aggressive, Plus', 'litespeed-cache' ),
72
+ __( 'Lazy Load for Images', 'litespeed-cache' ),
73
+ __( 'Viewport Image Generation', 'litespeed-cache' ),
74
+ __( 'JS Delayed', 'litespeed-cache' ),
75
+ __( 'Inline JS added to Combine', 'litespeed-cache' ),
76
+ __( 'Inline CSS added to Combine', 'litespeed-cache' )
77
+ ),
78
+ 'footer' => array(
79
+ __( 'This preset almost certainly will require testing and exclusions for some CSS, JS and Lazy Loaded images. Pay special attention to logos, or HTML-based slider images.' ),
80
+ __( 'A Domain Key is required to use this preset. Enables the maximum level of optimizations for improved page speed scores.', 'litespeed-cache' )
81
+ )
82
+ );
83
+
84
+ ?>
85
+
86
+ <h3 class="litespeed-title-short">
87
+ <?php esc_html_e( 'LiteSpeed Cache Standard Presets', 'litespeed-cache' ); ?>
88
+ <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/presets/#standard-tab' ); ?>
89
+ </h3>
90
+
91
+ <p><?php esc_html_e( 'Use an official LiteSpeed-designed Preset to configure your site in one click. Try no-risk caching essentials, extreme optimization, or something in between.', 'litespeed-cache' ); ?></p>
92
+
93
+ <div class="litespeed-comparison-cards">
94
+ <?php
95
+ foreach ( array_keys( $presets ) as $name ) :
96
+ $title = $presets[ $name ]['title'];
97
+ $recommend = 'advanced' === $name;
98
+ $card_class = $recommend ? 'litespeed-comparison-card-rec' : '';
99
+ $button_class = $recommend ? 'button-primary' : 'button-secondary';
100
+ ?>
101
+ <div class="litespeed-comparison-card postbox <?php echo $card_class; ?>">
102
+ <div class="litespeed-card-content">
103
+ <div class="litespeed-card-header">
104
+ <h3 class="litespeed-h3">
105
+ <?php echo esc_html( $title ); ?>
106
+ </h3>
107
+ </div>
108
+ <div class="litespeed-card-body">
109
+ <ul>
110
+ <?php foreach ( $presets[ $name ]['body'] as $line ) : ?>
111
+ <li><?php echo esc_html( $line ); ?></li>
112
+ <?php endforeach; ?>
113
+ </ul>
114
+ </div>
115
+ <div class="litespeed-card-footer">
116
+ <h4><?php esc_html_e( 'Who should use this preset?', 'litespeed-cache' ); ?></h4>
117
+ <?php foreach ( $presets[ $name ]['footer'] as $line ) : ?>
118
+ <p><?php echo esc_html( $line ); ?></p>
119
+ <?php endforeach; ?>
120
+ </div>
121
+ </div>
122
+ <div class="litespeed-card-action">
123
+ <a
124
+ href="<?php echo Utility::build_url( Router::ACTION_PRESET, Preset::TYPE_APPLY, false, null, array( 'preset' => $name ) ); ?>"
125
+ class="button <?php echo $button_class; ?>"
126
+ data-litespeed-cfm="<?php printf( esc_html__( 'This will back up your current settings and replace them with the %1$s preset settings. Do you want to continue?', 'litespeed-cache' ), $title ); ?>"
127
+ >
128
+ <?php esc_html_e( 'Apply Preset', 'litespeed-cache' ); ?>
129
+ </a>
130
+ </div>
131
+ </div>
132
+ <?php endforeach; ?>
133
+ </div>
134
+
135
+ <?php
136
+ $summary = Preset::get_summary();
137
+ $backups = array();
138
+ foreach ( Preset::get_backups() as $backup ) {
139
+ $backup = explode( '-', $backup );
140
+ if ( empty( $backup[1] ) ) {
141
+ continue;
142
+ }
143
+ $timestamp = $backup[1];
144
+ $time = trim( Utility::readable_time( $timestamp ) );
145
+ $name = empty( $backup[3] ) ? null : $backup[3];
146
+ $title = empty( $presets[ $name ]['title'] ) ? $name : $presets[ $name ]['title'];
147
+ $title = null === $title ? __( 'unknown', 'litespeed-cache' ) : $title;
148
+ $backups[] = array(
149
+ 'timestamp' => $timestamp,
150
+ 'time' => $time,
151
+ 'title' => $title
152
+ );
153
+ }
154
+
155
+ if ( ! empty( $summary['preset'] ) || ! empty( $backups ) ) :
156
+ ?>
157
+ <h3 class="litespeed-title-short">
158
+ <?php esc_html_e( 'History', 'litespeed-cache' ); ?>
159
+ </h3>
160
+ <?php endif; ?>
161
+
162
+ <?php if ( ! empty( $summary['preset'] ) ) : ?>
163
+ <p>
164
+ <?php
165
+ $name = strtolower( $summary['preset'] );
166
+ $time = trim( Utility::readable_time( $summary['preset_timestamp'] ) );
167
+ if ( 'error' === $name ) {
168
+ printf( esc_html__( 'Error: Failed to apply the settings %1$s', 'litespeed-cache' ), $time );
169
+ } elseif ( 'backup' === $name ) {
170
+ printf( esc_html__( 'Restored backup settings %1$s', 'litespeed-cache' ), $time );
171
+ } else {
172
+ printf(
173
+ esc_html__( 'Applied the %1$s preset %2$s', 'litespeed-cache' ),
174
+ '<strong>' . esc_html( $presets[ $name ]['title'] ) . '</strong>',
175
+ $time
176
+ );
177
+ }
178
+ ?>
179
+ </p>
180
+ <?php endif; ?>
181
+
182
+ <?php foreach ( $backups as $backup ) : ?>
183
+ <p>
184
+ <?php printf( esc_html__( 'Backup created %1$s before applying the %2$s preset', 'litespeed-cache' ), $backup['time'], $backup['title'] ); ?>
185
+ <a
186
+ href="<?php echo Utility::build_url( Router::ACTION_PRESET, Preset::TYPE_RESTORE, false, null, array( 'timestamp' => $backup['timestamp'] ) ); ?>"
187
+ class="litespeed-left10"
188
+ data-litespeed-cfm="<?php printf( esc_html__( 'This will restore the backup settings created %1$s before applying the %2$s preset. Any changes made since then will be lost. Do you want to continue?', 'litespeed-cache' ), $backup['time'], $backup['title'] ); ?>"
189
+ >
190
+ <?php esc_html_e( 'Restore Settings', 'litespeed-cache' ); ?>
191
+ </a>
192
+ </p>
193
+ <?php
194
+ endforeach;
tpl/toolbox/beta_test.tpl.php CHANGED
@@ -4,6 +4,7 @@ defined( 'WPINC' ) || exit;
4
 
5
  // Existing public version list
6
  $v_list = array(
 
7
  '5.2.1',
8
  '5.2',
9
  '5.1',
4
 
5
  // Existing public version list
6
  $v_list = array(
7
+ '5.3',
8
  '5.2.1',
9
  '5.2',
10
  '5.1',