Version Description
- Jun 25 2021 =
- UCSS/CCSS/LQIP Moved queue storage to file system from database wp-options table to lessen the IO load. (#633504)
- 3rd Added an option to disable ESI for the WooCommerce Cart. (#358 @Anna Feng @Astrid Wang)
- ESI Fixed an ESI nonce issue introduced in v4.0. (@Andrew Choi)
-
Object Used new
.litespeed_conf.dat
instead of.object-cache.ini
for object cache configuration storage. - Conf Now updating related files after plugin upgrade and not just after activation.
- Guest Added a Guest Mode JS Excludes option. (@Ankit @Mamac @Rcverma)
- Guest Guest Mode now uses a lightweight script to update guest vary for reduced server load.
- Guest Guest Mode now adds missing image dimensions.
- Guest Guest vary will no longer update if there's already a vary in place to address the infinite loop caused by CloudFlare's incorrect cache control setting for PHP.
-
Guest Guest vary update request will no longer be sent if
lscache_vary
is already set. - Guest Added a Configurable Guest Mode UA/IP under the Tuning tab in the General menu.
- Guest Guest Mode now allows cron to be hooked, even when UCSS/CCSS options are off. (#338437 @Stars)
- Guest Simplified the vary generation process under Guest Mode.
- Guest Added a Guest Mode HTML comment for easier debugging. (@Ruikai)
- Guest Guest vary update ajax now bypasses potential POST cache.
-
CCSS Added back the options
Separate CCSS Cache Post Types
andSeparate CCSS Cache URIs
. (@Joshua @Ankit) - CCSS CCSS/UCSS queue is now limited to a maximum of 500 entries.
-
Control The cache control constant
LSCACHE_NO_CACHE
will now have a higher priority than the Forced Public Cache setting. - Crawler The Crawler can now crawl Guest Mode pages.
- Crawler Fixed a potential XSS vulnerability in the Crawler settings. (#927355)
-
Crawler The Crawler now supports a cookie value of
_null
. (@Tobolo) - Media Updated the default value for the Responsive Placeholder SVG to be transparent.
- Media WebP images in the background may now be served in Guest Mode.
- Media WebP images in CSS may now be bypassed if the requesting Guest Mode client doesnt support WebP.
- Media Fixed empty default image placeholder under Guest Mode.
-
Image Optimize Changed the missing
$_POST
to$post_data
so the database status is properly updated. (#345 @Lucas) - Import Export file is now readable to allow importing of partial configurations. (@Ryan D @Joshua)
- Page Optimize Fixed W3 validator errors in Guest Mode. (#61393817)
- 3rd A fatal WooCommerce error is no longer triggered by a custom theme reusing a previous LSCWP cache detection tag.
- 3rd AMP may now bypass Guest Mode automatically.
-
Localize Dropped the
Localize Resources
option as Guest Mode is a sufficient replacement. (Note: Due to user feedback during the development period, we have decided to reinstate this option in a future version.) - Cloud Changed the WP API url.
- Lang Corrected a missing language folder.
- GUI Added a CCSS/UCSS loading page visualization. (#360 @Astrid Wang @Anna Feng)
- GUI Added a warning to indicate when Guest Mode CCSS/UCSS quota is in use. (#361 @Astrid Wang @Anna Feng)
-
GUI Added a
litespeed-info
text color. (@Astrid Wang) - GUI Implemented various UI/UX improvements. (@Joshua @Lisa)
- GUI Duplicate cloud service messages with the same content will only display once now. (@Marc Dahl)
- GUI Added a WebP replacement warning for Guest Mode Optimization if WebP replacement is off.
-
Misc Dropped
wp_assets
from distribution to reduce the package size. (@lowwebtech) - Misc Increased the new version and score detection intervals.
- Misc Optimized WP Assets images. (#352 @lowwebtech)
- Debug Dropped the redudant error_log debug info.
Download this release
Release Info
Developer | LiteSpeedTech |
Plugin | LiteSpeed Cache |
Version | 4.1 |
Comparing to | |
See all releases |
Code changes from version 4.0 to 4.1
- assets/css/litespeed.css +8 -0
- assets/img/lscwp-logo_90x90.png +0 -0
- assets/img/slack-logo.png +0 -0
- assets/js/guest.js +14 -10
- assets/js/guest.min.js +1 -1
- assets/js/js_delay.js +9 -9
- assets/js/js_delay.min.js +1 -1
- data/const.default.ini +89 -16
- guest.vary.php +12 -0
- litespeed-cache.pot → lang/litespeed-cache.pot +678 -618
- lib/guest.cls.php +186 -0
- lib/object-cache.php +1 -1
- litespeed-cache.php +2 -2
- readme.txt +50 -5
- src/activation.cls.php +84 -0
- src/admin-display.cls.php +2 -2
- src/admin.cls.php +1 -1
- src/base.cls.php +11 -5
- src/cloud.cls.php +16 -5
- src/conf.cls.php +5 -1
- src/control.cls.php +14 -7
- src/core.cls.php +15 -0
- src/crawler.cls.php +19 -2
- src/css.cls.php +159 -72
- src/data.cls.php +6 -0
- src/data.upgrade.func.php +12 -2
- src/doc.cls.php +4 -3
- src/esi.cls.php +16 -6
- src/gui.cls.php +7 -24
- src/htaccess.cls.php +2 -1
- src/img-optm.cls.php +1 -1
- src/import.cls.php +75 -58
- src/lang.cls.php +9 -6
- src/localization.cls.php +0 -135
- src/media.cls.php +10 -9
- src/object-cache.cls.php +31 -48
- src/optimize.cls.php +22 -18
- src/optimizer.cls.php +4 -1
- src/placeholder.cls.php +75 -41
- src/purge.cls.php +0 -23
- src/root.cls.php +1 -0
- src/router.cls.php +0 -4
- src/tag.cls.php +4 -1
- src/task.cls.php +24 -13
- src/vary.cls.php +21 -101
- thirdparty/amp.cls.php +1 -0
- thirdparty/woocommerce.cls.php +8 -4
- thirdparty/woocommerce.content.tpl.php +14 -0
- tpl/cache/settings_inc.object.tpl.php +1 -1
- tpl/cdn/settings.tpl.php +16 -10
- tpl/crawler/settings-simulation.tpl.php +1 -1
- tpl/crawler/summary.tpl.php +2 -2
- tpl/dash/dashboard.tpl.php +11 -6
- tpl/general/entry.tpl.php +5 -0
- tpl/general/settings.tpl.php +7 -6
- tpl/general/settings_inc.guest.tpl.php +19 -2
- tpl/general/settings_tuning.tpl.php +39 -0
- tpl/page_optm/settings_css.tpl.php +37 -30
- tpl/page_optm/settings_html.tpl.php +4 -4
- tpl/page_optm/settings_js.tpl.php +3 -1
- tpl/page_optm/settings_localization.tpl.php +0 -45
- tpl/page_optm/settings_media.tpl.php +20 -10
- tpl/page_optm/settings_tuning.tpl.php +52 -2
- tpl/toolbox/beta_test.tpl.php +1 -0
- tpl/toolbox/purge.tpl.php +0 -9
- tpl/toolbox/settings-debug.tpl.php +1 -1
- wp_assets/banner-1544x500.png +0 -0
- wp_assets/banner-772x250.png +0 -0
- wp_assets/icon-128x128.png +0 -0
- wp_assets/icon-256x256.png +0 -0
- wp_assets/screenshot-1.png +0 -0
- wp_assets/screenshot-10.png +0 -0
- wp_assets/screenshot-11.png +0 -0
- wp_assets/screenshot-2.png +0 -0
- wp_assets/screenshot-3.png +0 -0
- wp_assets/screenshot-4.png +0 -0
- wp_assets/screenshot-5.png +0 -0
- wp_assets/screenshot-6.png +0 -0
- wp_assets/screenshot-7.png +0 -0
- wp_assets/screenshot-8.png +0 -0
- wp_assets/screenshot-9.png +0 -0
assets/css/litespeed.css
CHANGED
@@ -282,6 +282,10 @@
|
|
282 |
color: #3366CC !important;
|
283 |
}
|
284 |
|
|
|
|
|
|
|
|
|
285 |
.litespeed-success {
|
286 |
color: #73b38d !important;
|
287 |
}
|
@@ -320,6 +324,10 @@ button.litespeed-form-action:hover {
|
|
320 |
background-color: #3366CC !important;
|
321 |
}
|
322 |
|
|
|
|
|
|
|
|
|
323 |
.litespeed-bg-success {
|
324 |
background-color: #73b38d !important;
|
325 |
}
|
282 |
color: #3366CC !important;
|
283 |
}
|
284 |
|
285 |
+
.litespeed-info {
|
286 |
+
color: #3FBFBF !important;
|
287 |
+
}
|
288 |
+
|
289 |
.litespeed-success {
|
290 |
color: #73b38d !important;
|
291 |
}
|
324 |
background-color: #3366CC !important;
|
325 |
}
|
326 |
|
327 |
+
.litespeed-bg-info {
|
328 |
+
background-color: #d1ecf1 !important;
|
329 |
+
}
|
330 |
+
|
331 |
.litespeed-bg-success {
|
332 |
background-color: #73b38d !important;
|
333 |
}
|
assets/img/lscwp-logo_90x90.png
CHANGED
Binary file
|
assets/img/slack-logo.png
CHANGED
Binary file
|
assets/js/guest.js
CHANGED
@@ -1,10 +1,14 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
|
|
|
|
|
|
|
1 |
+
var litespeed_vary = document.cookie.replace(/(?:(?:^|.*;\s*)_lscache_vary\s*\=\s*([^;]*).*$)|^.*$/, "$1");
|
2 |
+
if ( ! litespeed_vary ) {
|
3 |
+
// Note: as the vary may be changed in Login Cookie option, even the visitor doesn't have this cookie, it doesn't mean the visitor doesn't have the vary, so still need PHP side to decide if need to set vary or not.
|
4 |
+
fetch( 'litespeed_url', {
|
5 |
+
method: 'POST',
|
6 |
+
cache: 'no-cache',
|
7 |
+
redirect: 'follow',
|
8 |
+
} ).then( response => response.json() ).then( data => {
|
9 |
+
console.log(data);
|
10 |
+
if ( data.hasOwnProperty( 'reload' ) && data.reload == 'yes' ) {
|
11 |
+
window.location.reload( true );
|
12 |
+
}
|
13 |
+
} );
|
14 |
+
}
|
assets/js/guest.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
fetch("litespeed_url",{method:"POST",cache:"no-cache",redirect:"follow"}).then(e=>e.json()).then(e=>{console.log(e),e.hasOwnProperty("reload")&&"yes"==e.reload&&window.location.reload(!0)});
|
1 |
+
var litespeed_vary=document.cookie.replace(/(?:(?:^|.*;\s*)_lscache_vary\s*\=\s*([^;]*).*$)|^.*$/,"$1");litespeed_vary||fetch("litespeed_url",{method:"POST",cache:"no-cache",redirect:"follow"}).then(e=>e.json()).then(e=>{console.log(e),e.hasOwnProperty("reload")&&"yes"==e.reload&&window.location.reload(!0)});
|
assets/js/js_delay.js
CHANGED
@@ -9,7 +9,7 @@ const litespeed_ui_events = [
|
|
9 |
var litespeed_delay_i=0;
|
10 |
var urlCreator = window.URL || window.webkitURL;
|
11 |
|
12 |
-
// const litespeed_js_delay_timer = setTimeout( litespeed_load_delayed_js,
|
13 |
|
14 |
litespeed_ui_events.forEach( function( e ) {
|
15 |
window.addEventListener( e, litespeed_load_delayed_js_forced, { passive: true } );
|
@@ -23,8 +23,8 @@ function litespeed_load_delayed_js_forced() {
|
|
23 |
} );
|
24 |
litespeed_load_delayed_js( true );
|
25 |
|
26 |
-
document.querySelectorAll( 'iframe[litespeed-src]' ).forEach( function( e ) {
|
27 |
-
e.setAttribute( 'src', e.getAttribute( 'litespeed-src' ) );
|
28 |
} );
|
29 |
}
|
30 |
|
@@ -50,18 +50,18 @@ function litespeed_inline2src( data ) {
|
|
50 |
|
51 |
function litespeed_load_one() {
|
52 |
litespeed_delay_i ++;
|
53 |
-
var e = document.querySelector( 'script[type="litespeed/javascript"][
|
54 |
if ( ! e ) {
|
55 |
-
console.log( 'all loaded' );
|
56 |
return;
|
57 |
}
|
58 |
|
59 |
-
console.log( 'load i=' + e.getAttribute( '
|
60 |
|
61 |
var e2 = document.createElement( 'script' );
|
62 |
|
63 |
e2.addEventListener( 'load', function(){
|
64 |
-
console.log('loaded --- ' + e2.getAttribute('
|
65 |
litespeed_load_one();
|
66 |
}, { passive: true } );
|
67 |
|
@@ -69,10 +69,10 @@ function litespeed_load_one() {
|
|
69 |
|
70 |
attrs.forEach( function( aname ) {
|
71 |
if ( aname == 'type') return;
|
72 |
-
e2.setAttribute( aname, e.getAttribute( aname ) );
|
73 |
} );
|
74 |
e2.type = 'text/javascript';
|
75 |
-
if ( !
|
76 |
e2.src = litespeed_inline2src( e.textContent );
|
77 |
// e2.textContent = e.textContent;
|
78 |
}
|
9 |
var litespeed_delay_i=0;
|
10 |
var urlCreator = window.URL || window.webkitURL;
|
11 |
|
12 |
+
// const litespeed_js_delay_timer = setTimeout( litespeed_load_delayed_js, 70 );
|
13 |
|
14 |
litespeed_ui_events.forEach( function( e ) {
|
15 |
window.addEventListener( e, litespeed_load_delayed_js_forced, { passive: true } );
|
23 |
} );
|
24 |
litespeed_load_delayed_js( true );
|
25 |
|
26 |
+
document.querySelectorAll( 'iframe[data-litespeed-src]' ).forEach( function( e ) {
|
27 |
+
e.setAttribute( 'src', e.getAttribute( 'data-litespeed-src' ) );
|
28 |
} );
|
29 |
}
|
30 |
|
50 |
|
51 |
function litespeed_load_one() {
|
52 |
litespeed_delay_i ++;
|
53 |
+
var e = document.querySelector( 'script[type="litespeed/javascript"][data-i="'+litespeed_delay_i+'"]' );
|
54 |
if ( ! e ) {
|
55 |
+
console.log( 'all loaded!' );
|
56 |
return;
|
57 |
}
|
58 |
|
59 |
+
console.log( 'load i=' + e.getAttribute( 'data-i' ), '-----',e );
|
60 |
|
61 |
var e2 = document.createElement( 'script' );
|
62 |
|
63 |
e2.addEventListener( 'load', function(){
|
64 |
+
console.log('loaded --- ' + e2.getAttribute('data-i'));
|
65 |
litespeed_load_one();
|
66 |
}, { passive: true } );
|
67 |
|
69 |
|
70 |
attrs.forEach( function( aname ) {
|
71 |
if ( aname == 'type') return;
|
72 |
+
e2.setAttribute( aname == 'data-src' ? 'src' : aname, e.getAttribute( aname ) );
|
73 |
} );
|
74 |
e2.type = 'text/javascript';
|
75 |
+
if ( ! e2.src && e.textContent ) {
|
76 |
e2.src = litespeed_inline2src( e.textContent );
|
77 |
// e2.textContent = e.textContent;
|
78 |
}
|
assets/js/js_delay.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
const litespeed_ui_events=["mouseover","click","keydown","wheel","touchmove","touchstart"];var litespeed_delay_i=0,urlCreator=window.URL||window.webkitURL;function litespeed_load_delayed_js_forced(){console.log("start delay load js"),litespeed_ui_events.forEach(function(e){window.removeEventListener(e,litespeed_load_delayed_js_forced,{passive:!0})}),litespeed_load_delayed_js(!0),document.querySelectorAll("iframe[litespeed-src]").forEach(function(e){e.setAttribute("src",e.getAttribute("litespeed-src"))})}function litespeed_load_delayed_js(e){e&&console.log("Force runing delay JS"),litespeed_load_one()}function litespeed_inline2src(t){try{var
|
1 |
+
const litespeed_ui_events=["mouseover","click","keydown","wheel","touchmove","touchstart"];var litespeed_delay_i=0,urlCreator=window.URL||window.webkitURL;function litespeed_load_delayed_js_forced(){console.log("start delay load js"),litespeed_ui_events.forEach(function(e){window.removeEventListener(e,litespeed_load_delayed_js_forced,{passive:!0})}),litespeed_load_delayed_js(!0),document.querySelectorAll("iframe[data-litespeed-src]").forEach(function(e){e.setAttribute("src",e.getAttribute("data-litespeed-src"))})}function litespeed_load_delayed_js(e){e&&console.log("Force runing delay JS"),litespeed_load_one()}function litespeed_inline2src(t){try{var a=urlCreator.createObjectURL(new Blob([t.replace(/^(?:<!--)?(.*?)(?:-->)?$/gm,"$1")],{type:"text/javascript"}))}catch(e){a="data:text/javascript;base64,"+btoa(t.replace(/^(?:<!--)?(.*?)(?:-->)?$/gm,"$1"))}return a}function litespeed_load_one(){litespeed_delay_i++;var t,a=document.querySelector('script[type="litespeed/javascript"][data-i="'+litespeed_delay_i+'"]');a?(console.log("load i="+a.getAttribute("data-i"),"-----",a),(t=document.createElement("script")).addEventListener("load",function(){console.log("loaded --- "+t.getAttribute("data-i")),litespeed_load_one()},{passive:!0}),a.getAttributeNames().forEach(function(e){"type"!=e&&t.setAttribute("data-src"==e?"src":e,a.getAttribute(e))}),t.type="text/javascript",!t.src&&a.textContent&&(t.src=litespeed_inline2src(a.textContent)),a.after(t),a.remove()):console.log("all loaded!")}litespeed_ui_events.forEach(function(e){window.addEventListener(e,litespeed_load_delayed_js_forced,{passive:!0})});
|
data/const.default.ini
CHANGED
@@ -28,6 +28,81 @@ guest_optm = true
|
|
28 |
; O_NEWS
|
29 |
news = true
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
;; -------------------------------------------------- ;;
|
33 |
;; -------------- Cache ----------------- ;;
|
@@ -289,12 +364,21 @@ optm-exc_roles = ''
|
|
289 |
|
290 |
optm-ccss_con = ''
|
291 |
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
; Analytics JS also measure the load-time as it is being loaded on the website itself and Google sends a report each month to the user. If these files are deferred, The Analytics JS shows a longer page-load time, even if the website isn't actually slow. by Shivam
|
293 |
optm-js_defer_exc = 'jquery.js
|
294 |
jquery.min.js
|
295 |
gtm.js
|
296 |
analytics.js'
|
297 |
|
|
|
|
|
|
|
298 |
; O_OPTM_DNS_PREFETCH
|
299 |
optm-dns_prefetch = ''
|
300 |
|
@@ -365,19 +449,6 @@ discuss-avatar_cron = false
|
|
365 |
; O_DISCUSS_AVATAR_CACHE_TTL
|
366 |
discuss-avatar_cache_ttl = 604800
|
367 |
|
368 |
-
; O_OPTM_LOCALIZE
|
369 |
-
optm-localize = false
|
370 |
-
|
371 |
-
; O_OPTM_LOCALIZE_DOMAINS
|
372 |
-
optm-localize_domains = '### Popular scripts ###
|
373 |
-
https://platform.twitter.com/widgets.js
|
374 |
-
https://www.google.com/recaptcha/api.js
|
375 |
-
https://www.google-analytics.com/analytics.js
|
376 |
-
https://www.googletagmanager.com/gtm.js
|
377 |
-
https://www.googletagservices.com/tag/js/gpt.js
|
378 |
-
https://connect.facebook.net/en_US/fbevents.js'
|
379 |
-
|
380 |
-
|
381 |
|
382 |
|
383 |
;; -------------------------------------------------- ;;
|
@@ -397,7 +468,7 @@ media-placeholder_resp = false
|
|
397 |
media-placeholder_resp_color = '#cfd4db'
|
398 |
|
399 |
; O_MEDIA_PLACEHOLDER_RESP_SVG
|
400 |
-
media-placeholder_resp_svg = '<svg xmlns="http://www.w3.org/2000/svg" width="{width}" height="{height}" viewBox="0 0 {width} {height}"><rect width="100%" height="100%"
|
401 |
|
402 |
; O_MEDIA_LQIP
|
403 |
media-lqip = false
|
@@ -619,8 +690,8 @@ filetype[0] = '.aac
|
|
619 |
.eot
|
620 |
.gif
|
621 |
.jpeg
|
622 |
-
.js
|
623 |
.jpg
|
|
|
624 |
.less
|
625 |
.mp3
|
626 |
.mp4
|
@@ -630,7 +701,9 @@ filetype[0] = '.aac
|
|
630 |
.png
|
631 |
.svg
|
632 |
.ttf
|
633 |
-
.
|
|
|
|
|
634 |
|
635 |
;;url[1] = 'https://2nd_CDN_url.com/'
|
636 |
|
28 |
; O_NEWS
|
29 |
news = true
|
30 |
|
31 |
+
; O_GUEST_UAS
|
32 |
+
guest_uas = 'Lighthouse
|
33 |
+
GTmetrix
|
34 |
+
Google
|
35 |
+
Pingdom
|
36 |
+
bot
|
37 |
+
PTST
|
38 |
+
HeadlessChrome'
|
39 |
+
|
40 |
+
; O_GUEST_IPS
|
41 |
+
guest_ips = '208.70.247.157
|
42 |
+
172.255.48.130
|
43 |
+
172.255.48.131
|
44 |
+
172.255.48.132
|
45 |
+
172.255.48.133
|
46 |
+
172.255.48.134
|
47 |
+
172.255.48.135
|
48 |
+
172.255.48.136
|
49 |
+
172.255.48.137
|
50 |
+
172.255.48.138
|
51 |
+
172.255.48.139
|
52 |
+
172.255.48.140
|
53 |
+
172.255.48.141
|
54 |
+
172.255.48.142
|
55 |
+
172.255.48.143
|
56 |
+
172.255.48.144
|
57 |
+
172.255.48.145
|
58 |
+
172.255.48.146
|
59 |
+
172.255.48.147
|
60 |
+
52.229.122.240
|
61 |
+
104.214.72.101
|
62 |
+
13.66.7.11
|
63 |
+
13.85.24.83
|
64 |
+
13.85.24.90
|
65 |
+
13.85.82.26
|
66 |
+
40.74.242.253
|
67 |
+
40.74.243.13
|
68 |
+
40.74.243.176
|
69 |
+
104.214.48.247
|
70 |
+
157.55.189.189
|
71 |
+
104.214.110.135
|
72 |
+
70.37.83.240
|
73 |
+
65.52.36.250
|
74 |
+
13.78.216.56
|
75 |
+
52.162.212.163
|
76 |
+
23.96.34.105
|
77 |
+
65.52.113.236
|
78 |
+
172.255.61.34
|
79 |
+
172.255.61.35
|
80 |
+
172.255.61.36
|
81 |
+
172.255.61.37
|
82 |
+
172.255.61.38
|
83 |
+
172.255.61.39
|
84 |
+
172.255.61.40
|
85 |
+
104.41.2.19
|
86 |
+
191.235.98.164
|
87 |
+
191.235.99.221
|
88 |
+
191.232.194.51
|
89 |
+
52.237.235.185
|
90 |
+
52.237.250.73
|
91 |
+
52.237.236.145
|
92 |
+
104.211.143.8
|
93 |
+
104.211.165.53
|
94 |
+
52.172.14.87
|
95 |
+
40.83.89.214
|
96 |
+
52.175.57.81
|
97 |
+
20.188.63.151
|
98 |
+
20.52.36.49
|
99 |
+
52.246.165.153
|
100 |
+
51.144.102.233
|
101 |
+
13.76.97.224
|
102 |
+
102.133.169.66
|
103 |
+
52.231.199.170
|
104 |
+
13.53.162.7
|
105 |
+
40.123.218.94'
|
106 |
|
107 |
;; -------------------------------------------------- ;;
|
108 |
;; -------------- Cache ----------------- ;;
|
364 |
|
365 |
optm-ccss_con = ''
|
366 |
|
367 |
+
; O_OPTM_CCSS_SEP_POSTTYPE
|
368 |
+
optm-ccss_sep_posttype = 'page'
|
369 |
+
|
370 |
+
; O_OPTM_CCSS_SEP_URI
|
371 |
+
optm-ccss_sep_uri = ''
|
372 |
+
|
373 |
; Analytics JS also measure the load-time as it is being loaded on the website itself and Google sends a report each month to the user. If these files are deferred, The Analytics JS shows a longer page-load time, even if the website isn't actually slow. by Shivam
|
374 |
optm-js_defer_exc = 'jquery.js
|
375 |
jquery.min.js
|
376 |
gtm.js
|
377 |
analytics.js'
|
378 |
|
379 |
+
; O_OPTM_GM_JS_EXC
|
380 |
+
optm-gm_js_exc = ''
|
381 |
+
|
382 |
; O_OPTM_DNS_PREFETCH
|
383 |
optm-dns_prefetch = ''
|
384 |
|
449 |
; O_DISCUSS_AVATAR_CACHE_TTL
|
450 |
discuss-avatar_cache_ttl = 604800
|
451 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
452 |
|
453 |
|
454 |
;; -------------------------------------------------- ;;
|
468 |
media-placeholder_resp_color = '#cfd4db'
|
469 |
|
470 |
; O_MEDIA_PLACEHOLDER_RESP_SVG
|
471 |
+
media-placeholder_resp_svg = '<svg xmlns="http://www.w3.org/2000/svg" width="{width}" height="{height}" viewBox="0 0 {width} {height}"><rect width="100%" height="100%" style="fill:{color};fill-opacity: 0.1;"/></svg>'
|
472 |
|
473 |
; O_MEDIA_LQIP
|
474 |
media-lqip = false
|
690 |
.eot
|
691 |
.gif
|
692 |
.jpeg
|
|
|
693 |
.jpg
|
694 |
+
.js
|
695 |
.less
|
696 |
.mp3
|
697 |
.mp4
|
701 |
.png
|
702 |
.svg
|
703 |
.ttf
|
704 |
+
.webp
|
705 |
+
.woff
|
706 |
+
.woff2'
|
707 |
|
708 |
;;url[1] = 'https://2nd_CDN_url.com/'
|
709 |
|
guest.vary.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Lightweight script to update guest mode vary
|
4 |
+
*
|
5 |
+
* @since 4.1
|
6 |
+
*/
|
7 |
+
|
8 |
+
require 'lib/guest.cls.php';
|
9 |
+
|
10 |
+
$guest = new \LiteSpeed\Lib\Guest();
|
11 |
+
|
12 |
+
$guest->update_guest_vary();
|
litespeed-cache.pot → lang/litespeed-cache.pot
RENAMED
@@ -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 4.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
|
7 |
-
"POT-Creation-Date: 2021-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -28,11 +28,11 @@ msgstr ""
|
|
28 |
msgid "Purged!"
|
29 |
msgstr ""
|
30 |
|
31 |
-
#: src/activation.cls.php:
|
32 |
msgid "Failed to upgrade."
|
33 |
msgstr ""
|
34 |
|
35 |
-
#: src/activation.cls.php:
|
36 |
msgid "Upgraded successfully."
|
37 |
msgstr ""
|
38 |
|
@@ -49,12 +49,12 @@ msgstr ""
|
|
49 |
msgid "Cache"
|
50 |
msgstr ""
|
51 |
|
52 |
-
#: src/admin-display.cls.php:121 tpl/cdn/settings.tpl.php:
|
53 |
msgid "CDN"
|
54 |
msgstr ""
|
55 |
|
56 |
-
#: src/admin-display.cls.php:123 src/gui.cls.php:
|
57 |
-
#: tpl/dash/dashboard.tpl.php:
|
58 |
msgid "Image Optimization"
|
59 |
msgstr ""
|
60 |
|
@@ -66,7 +66,7 @@ msgstr ""
|
|
66 |
msgid "Database"
|
67 |
msgstr ""
|
68 |
|
69 |
-
#: src/admin-display.cls.php:129 src/lang.cls.php:
|
70 |
msgid "Crawler"
|
71 |
msgstr ""
|
72 |
|
@@ -105,10 +105,10 @@ msgstr ""
|
|
105 |
#: src/admin-display.cls.php:232 src/admin-display.cls.php:793
|
106 |
#: src/admin-display.cls.php:828 src/admin-display.cls.php:879
|
107 |
#: tpl/cache/settings-cache.tpl.php:19
|
108 |
-
#: tpl/cache/settings_inc.cache_mobile.tpl.php:70 tpl/cdn/settings.tpl.php:
|
109 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
110 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
111 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
112 |
#: tpl/toolbox/settings-debug.tpl.php:34
|
113 |
msgid "ON"
|
114 |
msgstr ""
|
@@ -116,14 +116,14 @@ msgstr ""
|
|
116 |
#: src/admin-display.cls.php:233 src/admin-display.cls.php:794
|
117 |
#: src/admin-display.cls.php:827 src/admin-display.cls.php:879
|
118 |
#: tpl/cache/settings-cache.tpl.php:19
|
119 |
-
#: tpl/cache/settings_inc.object.tpl.php:210 tpl/cdn/settings.tpl.php:
|
120 |
#: tpl/page_optm/settings_js.tpl.php:76
|
121 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
122 |
#: tpl/toolbox/settings-debug.tpl.php:34
|
123 |
msgid "OFF"
|
124 |
msgstr ""
|
125 |
|
126 |
-
#: src/admin-display.cls.php:275 src/gui.cls.php:
|
127 |
msgid "Settings"
|
128 |
msgstr ""
|
129 |
|
@@ -199,12 +199,13 @@ msgid "Invalid IP"
|
|
199 |
msgstr ""
|
200 |
|
201 |
#: src/admin-display.cls.php:1079 tpl/cache/settings-esi.tpl.php:95
|
202 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
203 |
#: tpl/page_optm/settings_html.tpl.php:85
|
204 |
#: tpl/page_optm/settings_media_exc.tpl.php:25
|
205 |
#: tpl/page_optm/settings_tuning.tpl.php:35
|
206 |
#: tpl/page_optm/settings_tuning.tpl.php:56
|
207 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
|
|
208 |
msgid "API"
|
209 |
msgstr ""
|
210 |
|
@@ -228,7 +229,7 @@ msgstr ""
|
|
228 |
msgid "To do an exact match, add %s to the end of the URL."
|
229 |
msgstr ""
|
230 |
|
231 |
-
#: src/admin-display.cls.php:1097 src/doc.cls.php:
|
232 |
msgid "One per line."
|
233 |
msgstr ""
|
234 |
|
@@ -276,84 +277,84 @@ msgstr ""
|
|
276 |
msgid "Failed to communicate with Cloudflare"
|
277 |
msgstr ""
|
278 |
|
279 |
-
#: src/cloud.cls.php:
|
280 |
-
#: src/cloud.cls.php:
|
281 |
msgid "Cloud Error"
|
282 |
msgstr ""
|
283 |
|
284 |
-
#: src/cloud.cls.php:
|
285 |
msgid "No available Cloud Node."
|
286 |
msgstr ""
|
287 |
|
288 |
-
#: src/cloud.cls.php:
|
289 |
msgid "Please try after %1$s for service %2$s."
|
290 |
msgstr ""
|
291 |
|
292 |
-
#: src/cloud.cls.php:
|
293 |
msgid "Failed to request via WordPress"
|
294 |
msgstr ""
|
295 |
|
296 |
-
#: src/cloud.cls.php:
|
297 |
msgid ""
|
298 |
"We are working hard to improve your online service experience. The service "
|
299 |
"will be unavailable while we work. We apologize for any inconvenience."
|
300 |
msgstr ""
|
301 |
|
302 |
-
#: src/cloud.cls.php:
|
303 |
msgid "Message from QUIC.cloud server"
|
304 |
msgstr ""
|
305 |
|
306 |
-
#: src/cloud.cls.php:
|
307 |
msgid "Good news from QUIC.cloud server"
|
308 |
msgstr ""
|
309 |
|
310 |
-
#: src/cloud.cls.php:
|
311 |
msgid "%1$s plugin version %2$s required for this action."
|
312 |
msgstr ""
|
313 |
|
314 |
-
#: src/cloud.cls.php:
|
315 |
msgid "Failed to communicate with QUIC.cloud server"
|
316 |
msgstr ""
|
317 |
|
318 |
-
#: src/cloud.cls.php:
|
319 |
msgid ""
|
320 |
"Site not recognized. Domain Key has been automatically removed. Please "
|
321 |
"request a new one."
|
322 |
msgstr ""
|
323 |
|
324 |
-
#: src/cloud.cls.php:
|
325 |
msgid "Click here to set."
|
326 |
msgstr ""
|
327 |
|
328 |
-
#: src/cloud.cls.php:
|
329 |
msgid ""
|
330 |
"Applied for Domain Key successfully. Please wait for result. Domain Key will "
|
331 |
"be automatically sent to your WordPress."
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: src/cloud.cls.php:
|
335 |
msgid ""
|
336 |
"Congratulations, your Domain Key has been approved! The setting has been "
|
337 |
"updated accordingly."
|
338 |
msgstr ""
|
339 |
|
340 |
-
#: src/cloud.cls.php:
|
341 |
msgid "Domain Key hash mismatch"
|
342 |
msgstr ""
|
343 |
|
344 |
-
#: src/cloud.cls.php:
|
345 |
msgid "Sync credit allowance with Cloud Server successfully."
|
346 |
msgstr ""
|
347 |
|
348 |
-
#: src/conf.cls.php:
|
349 |
msgid "Changed setting successfully."
|
350 |
msgstr ""
|
351 |
|
352 |
-
#: src/core.cls.php:
|
353 |
msgid "Notified LiteSpeed Web Server to purge everything."
|
354 |
msgstr ""
|
355 |
|
356 |
-
#: src/core.cls.php:
|
357 |
msgid "Notified LiteSpeed Web Server to purge the list."
|
358 |
msgstr ""
|
359 |
|
@@ -369,29 +370,33 @@ msgstr ""
|
|
369 |
msgid "Sitemap created successfully: %d items"
|
370 |
msgstr ""
|
371 |
|
372 |
-
#: src/crawler.cls.php:
|
373 |
msgid "Guest"
|
374 |
msgstr ""
|
375 |
|
376 |
-
#: src/crawler.cls.php:
|
377 |
msgid "Manually added to blacklist"
|
378 |
msgstr ""
|
379 |
|
380 |
-
#: src/crawler.cls.php:
|
381 |
msgid "Previously existed in blacklist"
|
382 |
msgstr ""
|
383 |
|
384 |
-
#: src/css.cls.php:
|
385 |
msgid "Queue cleared successfully."
|
386 |
msgstr ""
|
387 |
|
388 |
-
#: src/
|
|
|
|
|
|
|
|
|
389 |
msgid ""
|
390 |
"The database has been upgrading in the background since %s. This message "
|
391 |
"will disappear once upgrade is complete."
|
392 |
msgstr ""
|
393 |
|
394 |
-
#: src/data.upgrade.func.php:
|
395 |
msgid ""
|
396 |
"LiteSpeed Cache upgraded successfully. NOTE: Due to changes in this version, "
|
397 |
"the settings %1$s and %2$s have been turned OFF. Please turn them back on "
|
@@ -399,15 +404,15 @@ msgid ""
|
|
399 |
"errors."
|
400 |
msgstr ""
|
401 |
|
402 |
-
#: src/data.upgrade.func.php:
|
403 |
msgid "JS Combine"
|
404 |
msgstr ""
|
405 |
|
406 |
-
#: src/data.upgrade.func.php:
|
407 |
msgid "JS Defer"
|
408 |
msgstr ""
|
409 |
|
410 |
-
#: src/data.upgrade.func.php:
|
411 |
msgid "Click here to settings"
|
412 |
msgstr ""
|
413 |
|
@@ -463,39 +468,43 @@ msgid ""
|
|
463 |
"are never accessed by any third party, except as necessary to obtain "
|
464 |
"technical support from the cache plugin vendor. Cache files expire on a "
|
465 |
"schedule set by the site administrator, but may easily be purged by the "
|
466 |
-
"admin before their natural expiration, if necessary."
|
|
|
|
|
|
|
|
|
|
|
467 |
msgstr ""
|
468 |
|
469 |
-
#: src/doc.cls.php:
|
470 |
-
#: tpl/dash/dashboard.tpl.php:
|
471 |
#: tpl/img_optm/summary.tpl.php:102 tpl/inc/check_cache_disabled.php:42
|
472 |
msgid "Learn More"
|
473 |
msgstr ""
|
474 |
|
475 |
-
#: src/doc.cls.php:
|
476 |
msgid "Both full and partial strings can be used."
|
477 |
msgstr ""
|
478 |
|
479 |
-
#: src/doc.cls.php:
|
480 |
msgid "Both full URLs and partial strings can be used."
|
481 |
msgstr ""
|
482 |
|
483 |
-
#: src/doc.cls.php:
|
484 |
msgid "This setting will edit the .htaccess file."
|
485 |
msgstr ""
|
486 |
|
487 |
-
#: src/doc.cls.php:
|
488 |
msgid ""
|
489 |
-
"For online services to work correctly, you must whitelist all
|
490 |
-
"IPs."
|
491 |
msgstr ""
|
492 |
|
493 |
-
#: src/doc.cls.php:
|
494 |
msgid ""
|
495 |
"Before generating key, please verify all IPs on this list are whitelisted"
|
496 |
msgstr ""
|
497 |
|
498 |
-
#: src/doc.cls.php:
|
499 |
msgid "Current Online Server IPs"
|
500 |
msgstr ""
|
501 |
|
@@ -643,150 +652,145 @@ msgstr ""
|
|
643 |
msgid "Failed to write to %s."
|
644 |
msgstr ""
|
645 |
|
646 |
-
#: src/gui.cls.php:
|
647 |
msgid "Public Caches"
|
648 |
msgstr ""
|
649 |
|
650 |
-
#: src/gui.cls.php:
|
651 |
msgid "Public Cache Hits"
|
652 |
msgstr ""
|
653 |
|
654 |
-
#: src/gui.cls.php:
|
655 |
msgid "Private Caches"
|
656 |
msgstr ""
|
657 |
|
658 |
-
#: src/gui.cls.php:
|
659 |
msgid "Private Cache Hits"
|
660 |
msgstr ""
|
661 |
|
662 |
-
#: src/gui.cls.php:
|
663 |
msgid "Purge this page"
|
664 |
msgstr ""
|
665 |
|
666 |
-
#: src/gui.cls.php:
|
667 |
msgid "Mark this page as "
|
668 |
msgstr ""
|
669 |
|
670 |
-
#: src/gui.cls.php:
|
671 |
msgid "Forced cacheable"
|
672 |
msgstr ""
|
673 |
|
674 |
-
#: src/gui.cls.php:
|
675 |
msgid "Non cacheable"
|
676 |
msgstr ""
|
677 |
|
678 |
-
#: src/gui.cls.php:
|
679 |
msgid "Private cache"
|
680 |
msgstr ""
|
681 |
|
682 |
-
#: src/gui.cls.php:
|
683 |
msgid "No optimization"
|
684 |
msgstr ""
|
685 |
|
686 |
-
#: src/gui.cls.php:
|
687 |
msgid "More settings"
|
688 |
msgstr ""
|
689 |
|
690 |
-
#: src/gui.cls.php:
|
691 |
-
#: src/gui.cls.php:
|
692 |
-
#: src/gui.cls.php:
|
693 |
-
#: src/gui.cls.php:
|
694 |
-
#: src/gui.cls.php:
|
695 |
-
#: src/gui.cls.php:
|
696 |
-
#:
|
697 |
-
#: tpl/toolbox/purge.tpl.php:
|
698 |
-
#: tpl/toolbox/purge.tpl.php:
|
699 |
-
#: tpl/toolbox/purge.tpl.php:
|
700 |
-
#: tpl/toolbox/purge.tpl.php:
|
701 |
-
#: tpl/toolbox/purge.tpl.php:106
|
702 |
msgid "Purge All"
|
703 |
msgstr ""
|
704 |
|
705 |
-
#: src/gui.cls.php:
|
706 |
msgid "LSCache"
|
707 |
msgstr ""
|
708 |
|
709 |
-
#: src/gui.cls.php:
|
710 |
msgid "CSS/JS Cache"
|
711 |
msgstr ""
|
712 |
|
713 |
-
#: src/gui.cls.php:
|
714 |
-
#: tpl/dash/dashboard.tpl.php:
|
715 |
msgid "Object Cache"
|
716 |
msgstr ""
|
717 |
|
718 |
-
#: src/gui.cls.php:
|
719 |
msgid "Opcode Cache"
|
720 |
msgstr ""
|
721 |
|
722 |
-
#: src/gui.cls.php:
|
723 |
-
|
724 |
-
msgstr ""
|
725 |
-
|
726 |
-
#: src/gui.cls.php:525 src/gui.cls.php:676
|
727 |
-
#: tpl/page_optm/settings_media.tpl.php:123 tpl/toolbox/purge.tpl.php:88
|
728 |
msgid "LQIP Cache"
|
729 |
msgstr ""
|
730 |
|
731 |
-
#: src/gui.cls.php:
|
732 |
-
#: tpl/toolbox/purge.tpl.php:
|
733 |
msgid "Gravatar Cache"
|
734 |
msgstr ""
|
735 |
|
736 |
-
#: src/gui.cls.php:
|
737 |
msgid "LiteSpeed Cache Purge All"
|
738 |
msgstr ""
|
739 |
|
740 |
-
#: src/gui.cls.php:
|
741 |
#: tpl/db_optm/entry.tpl.php:6
|
742 |
msgid "Manage"
|
743 |
msgstr ""
|
744 |
|
745 |
-
#: src/gui.cls.php:
|
746 |
msgid "Cloudflare"
|
747 |
msgstr ""
|
748 |
|
749 |
-
#: src/gui.cls.php:
|
750 |
msgid "Remove all previous unfinished image optimization requests."
|
751 |
msgstr ""
|
752 |
|
753 |
-
#: src/gui.cls.php:
|
754 |
msgid "Clean Up Unfinished Data"
|
755 |
msgstr ""
|
756 |
|
757 |
-
#: src/gui.cls.php:
|
758 |
msgid "Install %s"
|
759 |
msgstr ""
|
760 |
|
761 |
-
#: src/gui.cls.php:
|
762 |
msgid "Install Now"
|
763 |
msgstr ""
|
764 |
|
765 |
-
#: src/gui.cls.php:
|
766 |
msgid ""
|
767 |
"<a href=\"%1$s\" %2$s>View version %3$s details</a> or <a href=\"%4$s\" %5$s "
|
768 |
"target=\"_blank\">update now</a>."
|
769 |
msgstr ""
|
770 |
|
771 |
-
#: src/gui.cls.php:
|
772 |
msgid "View %1$s version %2$s details"
|
773 |
msgstr ""
|
774 |
|
775 |
-
#: src/gui.cls.php:
|
776 |
msgid "Update %s now"
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: src/htaccess.cls.php:
|
780 |
msgid "Mobile Agent Rules"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: src/htaccess.cls.php:
|
784 |
msgid ""
|
785 |
"<p>Please add/replace the following codes into the beginning of %1$s:</p> "
|
786 |
"%2$s"
|
787 |
msgstr ""
|
788 |
|
789 |
-
#: src/htaccess.cls.php:
|
790 |
msgid "File Saved."
|
791 |
msgstr ""
|
792 |
|
@@ -894,11 +898,11 @@ msgstr ""
|
|
894 |
msgid "Import failed due to file error."
|
895 |
msgstr ""
|
896 |
|
897 |
-
#: src/import.cls.php:
|
898 |
msgid "Imported setting file %s successfully."
|
899 |
msgstr ""
|
900 |
|
901 |
-
#: src/import.cls.php:
|
902 |
msgid "Reset successfully."
|
903 |
msgstr ""
|
904 |
|
@@ -906,11 +910,11 @@ msgstr ""
|
|
906 |
msgid "Images not requested"
|
907 |
msgstr ""
|
908 |
|
909 |
-
#: src/lang.cls.php:24 tpl/dash/dashboard.tpl.php:
|
910 |
msgid "Images requested"
|
911 |
msgstr ""
|
912 |
|
913 |
-
#: src/lang.cls.php:25 tpl/dash/dashboard.tpl.php:
|
914 |
msgid "Images notified to pull"
|
915 |
msgstr ""
|
916 |
|
@@ -954,260 +958,260 @@ msgstr ""
|
|
954 |
msgid "Domain Key"
|
955 |
msgstr ""
|
956 |
|
|
|
|
|
|
|
|
|
957 |
#: src/lang.cls.php:56
|
|
|
|
|
|
|
|
|
958 |
msgid "Enable Cache"
|
959 |
msgstr ""
|
960 |
|
961 |
-
#: src/lang.cls.php:
|
962 |
msgid "Browser Cache"
|
963 |
msgstr ""
|
964 |
|
965 |
-
#: src/lang.cls.php:
|
966 |
msgid "Default Public Cache TTL"
|
967 |
msgstr ""
|
968 |
|
969 |
-
#: src/lang.cls.php:
|
970 |
msgid "Default Private Cache TTL"
|
971 |
msgstr ""
|
972 |
|
973 |
-
#: src/lang.cls.php:
|
974 |
msgid "Default Front Page TTL"
|
975 |
msgstr ""
|
976 |
|
977 |
-
#: src/lang.cls.php:
|
978 |
msgid "Default Feed TTL"
|
979 |
msgstr ""
|
980 |
|
981 |
-
#: src/lang.cls.php:
|
982 |
msgid "Default REST TTL"
|
983 |
msgstr ""
|
984 |
|
985 |
-
#: src/lang.cls.php:
|
986 |
msgid "Default HTTP Status Code Page TTL"
|
987 |
msgstr ""
|
988 |
|
989 |
-
#: src/lang.cls.php:
|
990 |
msgid "Browser Cache TTL"
|
991 |
msgstr ""
|
992 |
|
993 |
-
#: src/lang.cls.php:
|
994 |
msgid "Automatically Upgrade"
|
995 |
msgstr ""
|
996 |
|
997 |
-
#: src/lang.cls.php:
|
998 |
msgid "Guest Mode"
|
999 |
msgstr ""
|
1000 |
|
1001 |
-
#: src/lang.cls.php:
|
1002 |
msgid "Guest Optimization"
|
1003 |
msgstr ""
|
1004 |
|
1005 |
-
#: src/lang.cls.php:
|
1006 |
msgid "Notifications"
|
1007 |
msgstr ""
|
1008 |
|
1009 |
-
#: src/lang.cls.php:
|
1010 |
msgid "Cache Logged-in Users"
|
1011 |
msgstr ""
|
1012 |
|
1013 |
-
#: src/lang.cls.php:
|
1014 |
msgid "Cache Commenters"
|
1015 |
msgstr ""
|
1016 |
|
1017 |
-
#: src/lang.cls.php:
|
1018 |
msgid "Cache REST API"
|
1019 |
msgstr ""
|
1020 |
|
1021 |
-
#: src/lang.cls.php:
|
1022 |
msgid "Cache Login Page"
|
1023 |
msgstr ""
|
1024 |
|
1025 |
-
#: src/lang.cls.php:
|
1026 |
msgid "Cache favicon.ico"
|
1027 |
msgstr ""
|
1028 |
|
1029 |
-
#: src/lang.cls.php:
|
1030 |
msgid "Cache PHP Resources"
|
1031 |
msgstr ""
|
1032 |
|
1033 |
-
#: src/lang.cls.php:
|
1034 |
msgid "Cache Mobile"
|
1035 |
msgstr ""
|
1036 |
|
1037 |
-
#: src/lang.cls.php:
|
1038 |
msgid "List of Mobile User Agents"
|
1039 |
msgstr ""
|
1040 |
|
1041 |
-
#: src/lang.cls.php:
|
1042 |
msgid "Private Cached URIs"
|
1043 |
msgstr ""
|
1044 |
|
1045 |
-
#: src/lang.cls.php:
|
1046 |
msgid "Drop Query String"
|
1047 |
msgstr ""
|
1048 |
|
1049 |
-
#: src/lang.cls.php:
|
1050 |
msgid "Method"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
-
#: src/lang.cls.php:
|
1054 |
msgid "Host"
|
1055 |
msgstr ""
|
1056 |
|
1057 |
-
#: src/lang.cls.php:
|
1058 |
msgid "Port"
|
1059 |
msgstr ""
|
1060 |
|
1061 |
-
#: src/lang.cls.php:
|
1062 |
msgid "Default Object Lifetime"
|
1063 |
msgstr ""
|
1064 |
|
1065 |
-
#: src/lang.cls.php:
|
1066 |
msgid "Username"
|
1067 |
msgstr ""
|
1068 |
|
1069 |
-
#: src/lang.cls.php:
|
1070 |
msgid "Password"
|
1071 |
msgstr ""
|
1072 |
|
1073 |
-
#: src/lang.cls.php:
|
1074 |
msgid "Redis Database ID"
|
1075 |
msgstr ""
|
1076 |
|
1077 |
-
#: src/lang.cls.php:
|
1078 |
msgid "Global Groups"
|
1079 |
msgstr ""
|
1080 |
|
1081 |
-
#: src/lang.cls.php:
|
1082 |
msgid "Do Not Cache Groups"
|
1083 |
msgstr ""
|
1084 |
|
1085 |
-
#: src/lang.cls.php:
|
1086 |
msgid "Persistent Connection"
|
1087 |
msgstr ""
|
1088 |
|
1089 |
-
#: src/lang.cls.php:
|
1090 |
-
msgid "Cache
|
1091 |
msgstr ""
|
1092 |
|
1093 |
-
#: src/lang.cls.php:
|
1094 |
msgid "Store Transients"
|
1095 |
msgstr ""
|
1096 |
|
1097 |
-
#: src/lang.cls.php:
|
1098 |
msgid "Purge All On Upgrade"
|
1099 |
msgstr ""
|
1100 |
|
1101 |
-
#: src/lang.cls.php:
|
1102 |
msgid "Serve Stale"
|
1103 |
msgstr ""
|
1104 |
|
1105 |
-
#: src/lang.cls.php:
|
1106 |
msgid "Scheduled Purge URLs"
|
1107 |
msgstr ""
|
1108 |
|
1109 |
-
#: src/lang.cls.php:
|
1110 |
msgid "Scheduled Purge Time"
|
1111 |
msgstr ""
|
1112 |
|
1113 |
-
#: src/lang.cls.php:
|
1114 |
msgid "Force Cache URIs"
|
1115 |
msgstr ""
|
1116 |
|
1117 |
-
#: src/lang.cls.php:
|
1118 |
msgid "Force Public Cache URIs"
|
1119 |
msgstr ""
|
1120 |
|
1121 |
-
#: src/lang.cls.php:
|
1122 |
msgid "Do Not Cache URIs"
|
1123 |
msgstr ""
|
1124 |
|
1125 |
-
#: src/lang.cls.php:
|
1126 |
msgid "Do Not Cache Query Strings"
|
1127 |
msgstr ""
|
1128 |
|
1129 |
-
#: src/lang.cls.php:
|
1130 |
msgid "Do Not Cache Categories"
|
1131 |
msgstr ""
|
1132 |
|
1133 |
-
#: src/lang.cls.php:
|
1134 |
msgid "Do Not Cache Tags"
|
1135 |
msgstr ""
|
1136 |
|
1137 |
-
#: src/lang.cls.php:
|
1138 |
msgid "Do Not Cache Roles"
|
1139 |
msgstr ""
|
1140 |
|
1141 |
-
#: src/lang.cls.php:
|
1142 |
msgid "CSS Minify"
|
1143 |
msgstr ""
|
1144 |
|
1145 |
-
#: src/lang.cls.php:
|
1146 |
msgid "CSS Combine"
|
1147 |
msgstr ""
|
1148 |
|
1149 |
-
#: src/lang.cls.php:
|
1150 |
msgid "CSS Combine External and Inline"
|
1151 |
msgstr ""
|
1152 |
|
1153 |
-
#: src/lang.cls.php:
|
1154 |
msgid "Generate UCSS"
|
1155 |
msgstr ""
|
1156 |
|
1157 |
-
#: src/lang.cls.php:
|
1158 |
msgid "UCSS Whitelist"
|
1159 |
msgstr ""
|
1160 |
|
1161 |
-
#: src/lang.cls.php:
|
1162 |
msgid "CSS HTTP/2 Push"
|
1163 |
msgstr ""
|
1164 |
|
1165 |
-
#: src/lang.cls.php:
|
1166 |
msgid "JS Minify"
|
1167 |
msgstr ""
|
1168 |
|
1169 |
-
#: src/lang.cls.php:
|
1170 |
msgid "JS Combine External and Inline"
|
1171 |
msgstr ""
|
1172 |
|
1173 |
-
#: src/lang.cls.php:
|
1174 |
msgid "JS HTTP/2 Push"
|
1175 |
msgstr ""
|
1176 |
|
1177 |
-
#: src/lang.cls.php:
|
1178 |
msgid "HTML Minify"
|
1179 |
msgstr ""
|
1180 |
|
1181 |
-
#: src/lang.cls.php:116
|
1182 |
-
msgid "HTML Lazyload Selectors"
|
1183 |
-
msgstr ""
|
1184 |
-
|
1185 |
-
#: src/lang.cls.php:117 tpl/page_optm/settings_tuning.tpl.php:89
|
1186 |
-
msgid "Load CSS Asynchronously"
|
1187 |
-
msgstr ""
|
1188 |
-
|
1189 |
#: src/lang.cls.php:118
|
1190 |
-
msgid "
|
1191 |
msgstr ""
|
1192 |
|
1193 |
-
#: src/lang.cls.php:119
|
1194 |
-
msgid "
|
1195 |
msgstr ""
|
1196 |
|
1197 |
#: src/lang.cls.php:120
|
1198 |
-
msgid "
|
1199 |
msgstr ""
|
1200 |
|
1201 |
#: src/lang.cls.php:121
|
1202 |
-
msgid "
|
1203 |
msgstr ""
|
1204 |
|
1205 |
#: src/lang.cls.php:122
|
1206 |
-
msgid "
|
1207 |
msgstr ""
|
1208 |
|
1209 |
#: src/lang.cls.php:123
|
1210 |
-
msgid "
|
1211 |
msgstr ""
|
1212 |
|
1213 |
#: src/lang.cls.php:124
|
@@ -1243,371 +1247,383 @@ msgid "Critical CSS Rules"
|
|
1243 |
msgstr ""
|
1244 |
|
1245 |
#: src/lang.cls.php:132
|
1246 |
-
msgid "
|
1247 |
msgstr ""
|
1248 |
|
1249 |
#: src/lang.cls.php:133
|
1250 |
-
msgid "
|
1251 |
msgstr ""
|
1252 |
|
1253 |
#: src/lang.cls.php:134
|
1254 |
-
msgid "
|
1255 |
msgstr ""
|
1256 |
|
1257 |
#: src/lang.cls.php:135
|
1258 |
-
msgid "
|
1259 |
msgstr ""
|
1260 |
|
1261 |
#: src/lang.cls.php:136
|
1262 |
-
msgid "
|
1263 |
msgstr ""
|
1264 |
|
1265 |
#: src/lang.cls.php:137
|
1266 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1267 |
msgstr ""
|
1268 |
|
1269 |
#: src/lang.cls.php:140
|
|
|
|
|
|
|
|
|
1270 |
msgid "Gravatar Cache Cron"
|
1271 |
msgstr ""
|
1272 |
|
1273 |
-
#: src/lang.cls.php:
|
1274 |
msgid "Gravatar Cache TTL"
|
1275 |
msgstr ""
|
1276 |
|
1277 |
-
#: src/lang.cls.php:
|
1278 |
msgid "Lazy Load Images"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
-
#: src/lang.cls.php:
|
1282 |
msgid "Lazy Load Image Excludes"
|
1283 |
msgstr ""
|
1284 |
|
1285 |
-
#: src/lang.cls.php:
|
1286 |
msgid "Lazy Load Image Class Name Excludes"
|
1287 |
msgstr ""
|
1288 |
|
1289 |
-
#: src/lang.cls.php:
|
1290 |
msgid "Lazy Load Image Parent Class Name Excludes"
|
1291 |
msgstr ""
|
1292 |
|
1293 |
-
#: src/lang.cls.php:
|
1294 |
msgid "Lazy Load Iframe Class Name Excludes"
|
1295 |
msgstr ""
|
1296 |
|
1297 |
-
#: src/lang.cls.php:
|
1298 |
msgid "Lazy Load Iframe Parent Class Name Excludes"
|
1299 |
msgstr ""
|
1300 |
|
1301 |
-
#: src/lang.cls.php:
|
1302 |
msgid "Lazy Load URI Excludes"
|
1303 |
msgstr ""
|
1304 |
|
1305 |
-
#: src/lang.cls.php:
|
1306 |
msgid "LQIP Excludes"
|
1307 |
msgstr ""
|
1308 |
|
1309 |
-
#: src/lang.cls.php:
|
1310 |
msgid "Basic Image Placeholder"
|
1311 |
msgstr ""
|
1312 |
|
1313 |
-
#: src/lang.cls.php:
|
1314 |
msgid "Responsive Placeholder"
|
1315 |
msgstr ""
|
1316 |
|
1317 |
-
#: src/lang.cls.php:
|
1318 |
msgid "Responsive Placeholder Color"
|
1319 |
msgstr ""
|
1320 |
|
1321 |
-
#: src/lang.cls.php:
|
1322 |
msgid "Responsive Placeholder SVG"
|
1323 |
msgstr ""
|
1324 |
|
1325 |
-
#: src/lang.cls.php:
|
1326 |
msgid "LQIP Cloud Generator"
|
1327 |
msgstr ""
|
1328 |
|
1329 |
-
#: src/lang.cls.php:
|
1330 |
msgid "LQIP Quality"
|
1331 |
msgstr ""
|
1332 |
|
1333 |
-
#: src/lang.cls.php:
|
1334 |
msgid "LQIP Minimum Dimensions"
|
1335 |
msgstr ""
|
1336 |
|
1337 |
-
#: src/lang.cls.php:
|
1338 |
msgid "Generate LQIP In Background"
|
1339 |
msgstr ""
|
1340 |
|
1341 |
-
#: src/lang.cls.php:
|
1342 |
msgid "Lazy Load Iframes"
|
1343 |
msgstr ""
|
1344 |
|
1345 |
-
#: src/lang.cls.php:
|
1346 |
msgid "Add Missing Sizes"
|
1347 |
msgstr ""
|
1348 |
|
1349 |
-
#: src/lang.cls.php:
|
1350 |
msgid "Inline Lazy Load Images Library"
|
1351 |
msgstr ""
|
1352 |
|
1353 |
-
#: src/lang.cls.php:
|
1354 |
msgid "Auto Request Cron"
|
1355 |
msgstr ""
|
1356 |
|
1357 |
-
#: src/lang.cls.php:
|
1358 |
msgid "Auto Pull Cron"
|
1359 |
msgstr ""
|
1360 |
|
1361 |
-
#: src/lang.cls.php:
|
1362 |
msgid "Optimize Original Images"
|
1363 |
msgstr ""
|
1364 |
|
1365 |
-
#: src/lang.cls.php:
|
1366 |
msgid "Remove Original Backups"
|
1367 |
msgstr ""
|
1368 |
|
1369 |
-
#: src/lang.cls.php:
|
1370 |
msgid "Create WebP Versions"
|
1371 |
msgstr ""
|
1372 |
|
1373 |
-
#: src/lang.cls.php:
|
1374 |
msgid "Optimize Losslessly"
|
1375 |
msgstr ""
|
1376 |
|
1377 |
-
#: src/lang.cls.php:
|
1378 |
msgid "Preserve EXIF/XMP data"
|
1379 |
msgstr ""
|
1380 |
|
1381 |
-
#: src/lang.cls.php:
|
1382 |
msgid "WebP Attribute To Replace"
|
1383 |
msgstr ""
|
1384 |
|
1385 |
-
#: src/lang.cls.php:
|
1386 |
msgid "WebP For Extra srcset"
|
1387 |
msgstr ""
|
1388 |
|
1389 |
-
#: src/lang.cls.php:
|
1390 |
msgid "WordPress Image Quality Control"
|
1391 |
msgstr ""
|
1392 |
|
1393 |
-
#: src/lang.cls.php:
|
1394 |
msgid "Enable ESI"
|
1395 |
msgstr ""
|
1396 |
|
1397 |
-
#: src/lang.cls.php:
|
1398 |
msgid "Cache Admin Bar"
|
1399 |
msgstr ""
|
1400 |
|
1401 |
-
#: src/lang.cls.php:
|
1402 |
msgid "Cache Comment Form"
|
1403 |
msgstr ""
|
1404 |
|
1405 |
-
#: src/lang.cls.php:
|
1406 |
msgid "ESI Nonces"
|
1407 |
msgstr ""
|
1408 |
|
1409 |
-
#: src/lang.cls.php:
|
1410 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
1411 |
msgid "Vary Group"
|
1412 |
msgstr ""
|
1413 |
|
1414 |
-
#: src/lang.cls.php:
|
1415 |
msgid "Purge All Hooks"
|
1416 |
msgstr ""
|
1417 |
|
1418 |
-
#: src/lang.cls.php:
|
1419 |
msgid "Improve HTTP/HTTPS Compatibility"
|
1420 |
msgstr ""
|
1421 |
|
1422 |
-
#: src/lang.cls.php:
|
1423 |
msgid "Instant Click"
|
1424 |
msgstr ""
|
1425 |
|
1426 |
-
#: src/lang.cls.php:
|
1427 |
msgid "Do Not Cache Cookies"
|
1428 |
msgstr ""
|
1429 |
|
1430 |
-
#: src/lang.cls.php:
|
1431 |
msgid "Do Not Cache User Agents"
|
1432 |
msgstr ""
|
1433 |
|
1434 |
-
#: src/lang.cls.php:
|
1435 |
msgid "Login Cookie"
|
1436 |
msgstr ""
|
1437 |
|
1438 |
-
#: src/lang.cls.php:
|
1439 |
msgid "Image WebP Replacement"
|
1440 |
msgstr ""
|
1441 |
|
1442 |
-
#: src/lang.cls.php:
|
1443 |
msgid "Frontend .htaccess Path"
|
1444 |
msgstr ""
|
1445 |
|
1446 |
-
#: src/lang.cls.php:
|
1447 |
msgid "Backend .htaccess Path"
|
1448 |
msgstr ""
|
1449 |
|
1450 |
-
#: src/lang.cls.php:
|
1451 |
msgid "Frontend Heartbeat Control"
|
1452 |
msgstr ""
|
1453 |
|
1454 |
-
#: src/lang.cls.php:
|
1455 |
msgid "Frontend Heartbeat TTL"
|
1456 |
msgstr ""
|
1457 |
|
1458 |
-
#: src/lang.cls.php:
|
1459 |
msgid "Backend Heartbeat Control"
|
1460 |
msgstr ""
|
1461 |
|
1462 |
-
#: src/lang.cls.php:
|
1463 |
msgid "Backend Heartbeat TTL"
|
1464 |
msgstr ""
|
1465 |
|
1466 |
-
#: src/lang.cls.php:
|
1467 |
msgid "Editor Heartbeat"
|
1468 |
msgstr ""
|
1469 |
|
1470 |
-
#: src/lang.cls.php:
|
1471 |
msgid "Editor Heartbeat TTL"
|
1472 |
msgstr ""
|
1473 |
|
1474 |
-
#: src/lang.cls.php:
|
1475 |
msgid "QUIC.cloud CDN"
|
1476 |
msgstr ""
|
1477 |
|
1478 |
-
#: src/lang.cls.php:
|
1479 |
msgid "Use CDN Mapping"
|
1480 |
msgstr ""
|
1481 |
|
1482 |
-
#: src/lang.cls.php:
|
1483 |
msgid "CDN URL"
|
1484 |
msgstr ""
|
1485 |
|
1486 |
-
#: src/lang.cls.php:
|
1487 |
msgid "Include Images"
|
1488 |
msgstr ""
|
1489 |
|
1490 |
-
#: src/lang.cls.php:
|
1491 |
msgid "Include CSS"
|
1492 |
msgstr ""
|
1493 |
|
1494 |
-
#: src/lang.cls.php:
|
1495 |
msgid "Include JS"
|
1496 |
msgstr ""
|
1497 |
|
1498 |
-
#: src/lang.cls.php:
|
1499 |
msgid "Include File Types"
|
1500 |
msgstr ""
|
1501 |
|
1502 |
-
#: src/lang.cls.php:
|
1503 |
msgid "HTML Attribute To Replace"
|
1504 |
msgstr ""
|
1505 |
|
1506 |
-
#: src/lang.cls.php:
|
1507 |
msgid "Original URLs"
|
1508 |
msgstr ""
|
1509 |
|
1510 |
-
#: src/lang.cls.php:
|
1511 |
msgid "Included Directories"
|
1512 |
msgstr ""
|
1513 |
|
1514 |
-
#: src/lang.cls.php:
|
1515 |
msgid "Exclude Path"
|
1516 |
msgstr ""
|
1517 |
|
1518 |
-
#: src/lang.cls.php:
|
1519 |
msgid "Cloudflare API"
|
1520 |
msgstr ""
|
1521 |
|
1522 |
-
#: src/lang.cls.php:
|
1523 |
msgid "Delay"
|
1524 |
msgstr ""
|
1525 |
|
1526 |
-
#: src/lang.cls.php:
|
1527 |
msgid "Run Duration"
|
1528 |
msgstr ""
|
1529 |
|
1530 |
-
#: src/lang.cls.php:
|
1531 |
msgid "Interval Between Runs"
|
1532 |
msgstr ""
|
1533 |
|
1534 |
-
#: src/lang.cls.php:
|
1535 |
msgid "Crawl Interval"
|
1536 |
msgstr ""
|
1537 |
|
1538 |
-
#: src/lang.cls.php:
|
1539 |
msgid "Threads"
|
1540 |
msgstr ""
|
1541 |
|
1542 |
-
#: src/lang.cls.php:
|
1543 |
msgid "Timeout"
|
1544 |
msgstr ""
|
1545 |
|
1546 |
-
#: src/lang.cls.php:
|
1547 |
msgid "Server Load Limit"
|
1548 |
msgstr ""
|
1549 |
|
1550 |
-
#: src/lang.cls.php:
|
1551 |
msgid "Role Simulation"
|
1552 |
msgstr ""
|
1553 |
|
1554 |
-
#: src/lang.cls.php:
|
1555 |
msgid "Cookie Simulation"
|
1556 |
msgstr ""
|
1557 |
|
1558 |
-
#: src/lang.cls.php:
|
1559 |
msgid "Custom Sitemap"
|
1560 |
msgstr ""
|
1561 |
|
1562 |
-
#: src/lang.cls.php:
|
1563 |
msgid "Drop Domain from Sitemap"
|
1564 |
msgstr ""
|
1565 |
|
1566 |
-
#: src/lang.cls.php:
|
1567 |
msgid "Sitemap Timeout"
|
1568 |
msgstr ""
|
1569 |
|
1570 |
-
#: src/lang.cls.php:
|
1571 |
msgid "Disable All Features"
|
1572 |
msgstr ""
|
1573 |
|
1574 |
-
#: src/lang.cls.php:
|
1575 |
msgid "Debug Log"
|
1576 |
msgstr ""
|
1577 |
|
1578 |
-
#: src/lang.cls.php:
|
1579 |
msgid "Admin IPs"
|
1580 |
msgstr ""
|
1581 |
|
1582 |
-
#: src/lang.cls.php:
|
1583 |
msgid "Debug Level"
|
1584 |
msgstr ""
|
1585 |
|
1586 |
-
#: src/lang.cls.php:
|
1587 |
msgid "Log File Size Limit"
|
1588 |
msgstr ""
|
1589 |
|
1590 |
-
#: src/lang.cls.php:
|
1591 |
msgid "Log Cookies"
|
1592 |
msgstr ""
|
1593 |
|
1594 |
-
#: src/lang.cls.php:
|
1595 |
msgid "Collapse Query Strings"
|
1596 |
msgstr ""
|
1597 |
|
1598 |
-
#: src/lang.cls.php:
|
1599 |
msgid "Debug URI Includes"
|
1600 |
msgstr ""
|
1601 |
|
1602 |
-
#: src/lang.cls.php:
|
1603 |
msgid "Debug URI Excludes"
|
1604 |
msgstr ""
|
1605 |
|
1606 |
-
#: src/lang.cls.php:
|
1607 |
msgid "Revisions Max Number"
|
1608 |
msgstr ""
|
1609 |
|
1610 |
-
#: src/lang.cls.php:
|
1611 |
msgid "Revisions Max Age"
|
1612 |
msgstr ""
|
1613 |
|
@@ -1708,79 +1724,75 @@ msgstr ""
|
|
1708 |
msgid "LQIP image preview for size %s"
|
1709 |
msgstr ""
|
1710 |
|
1711 |
-
#: src/purge.cls.php:
|
1712 |
msgid "Purged all caches successfully."
|
1713 |
msgstr ""
|
1714 |
|
1715 |
-
#: src/purge.cls.php:
|
1716 |
msgid "Notified LiteSpeed Web Server to purge all LSCache entries."
|
1717 |
msgstr ""
|
1718 |
|
1719 |
-
#: src/purge.cls.php:
|
1720 |
msgid "Cleaned all Critical CSS files."
|
1721 |
msgstr ""
|
1722 |
|
1723 |
-
#: src/purge.cls.php:
|
1724 |
msgid "Cleaned all LQIP files."
|
1725 |
msgstr ""
|
1726 |
|
1727 |
-
#: src/purge.cls.php:
|
1728 |
msgid "Cleaned all Gravatar files."
|
1729 |
msgstr ""
|
1730 |
|
1731 |
-
#: src/purge.cls.php:
|
1732 |
-
msgid "Notified LiteSpeed Web Server to purge localized resource entries."
|
1733 |
-
msgstr ""
|
1734 |
-
|
1735 |
-
#: src/purge.cls.php:297
|
1736 |
msgid "Notified LiteSpeed Web Server to purge CSS/JS entries."
|
1737 |
msgstr ""
|
1738 |
|
1739 |
-
#: src/purge.cls.php:
|
1740 |
msgid "Opcode cache is not enabled."
|
1741 |
msgstr ""
|
1742 |
|
1743 |
-
#: src/purge.cls.php:
|
1744 |
msgid "Reset the entire opcode cache successfully."
|
1745 |
msgstr ""
|
1746 |
|
1747 |
-
#: src/purge.cls.php:
|
1748 |
msgid "Object cache is not enabled."
|
1749 |
msgstr ""
|
1750 |
|
1751 |
-
#: src/purge.cls.php:
|
1752 |
msgid "Purge all object caches successfully."
|
1753 |
msgstr ""
|
1754 |
|
1755 |
-
#: src/purge.cls.php:
|
1756 |
msgid "Notified LiteSpeed Web Server to purge the front page."
|
1757 |
msgstr ""
|
1758 |
|
1759 |
-
#: src/purge.cls.php:
|
1760 |
msgid "Notified LiteSpeed Web Server to purge all pages."
|
1761 |
msgstr ""
|
1762 |
|
1763 |
-
#: src/purge.cls.php:
|
1764 |
msgid "Notified LiteSpeed Web Server to purge error pages."
|
1765 |
msgstr ""
|
1766 |
|
1767 |
-
#: src/purge.cls.php:
|
1768 |
msgid "Purge category %s"
|
1769 |
msgstr ""
|
1770 |
|
1771 |
-
#: src/purge.cls.php:
|
1772 |
msgid "Purge tag %s"
|
1773 |
msgstr ""
|
1774 |
|
1775 |
-
#: src/purge.cls.php:
|
1776 |
msgid "Purge url %s"
|
1777 |
msgstr ""
|
1778 |
|
1779 |
-
#: src/task.cls.php:
|
1780 |
msgid "Every Minute"
|
1781 |
msgstr ""
|
1782 |
|
1783 |
-
#: src/task.cls.php:
|
1784 |
msgid "LiteSpeed Crawler Cron"
|
1785 |
msgstr ""
|
1786 |
|
@@ -1804,89 +1816,99 @@ msgstr ""
|
|
1804 |
msgid "»"
|
1805 |
msgstr ""
|
1806 |
|
1807 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1808 |
msgid "WooCommerce Settings"
|
1809 |
msgstr ""
|
1810 |
|
1811 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1812 |
#: tpl/cache/settings-advanced.tpl.php:12
|
1813 |
#: tpl/cache/settings_inc.browser.tpl.php:12 tpl/toolbox/heartbeat.tpl.php:14
|
1814 |
#: tpl/toolbox/report.tpl.php:29
|
1815 |
msgid "NOTICE:"
|
1816 |
msgstr ""
|
1817 |
|
1818 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1819 |
msgid "After verifying that the cache works in general, please test the cart."
|
1820 |
msgstr ""
|
1821 |
|
1822 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1823 |
msgid "To test the cart, visit the <a %s>FAQ</a>."
|
1824 |
msgstr ""
|
1825 |
|
1826 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1827 |
msgid ""
|
1828 |
"By default, the My Account, Checkout, and Cart pages are automatically "
|
1829 |
"excluded from caching. Misconfiguration of page associations in WooCommerce "
|
1830 |
"settings may cause some pages to be erroneously excluded."
|
1831 |
msgstr ""
|
1832 |
|
1833 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1834 |
msgid "Product Update Interval"
|
1835 |
msgstr ""
|
1836 |
|
1837 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1838 |
msgid "Purge product on changes to the quantity or stock status."
|
1839 |
msgstr ""
|
1840 |
|
1841 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1842 |
msgid "Purge categories only when stock status changes."
|
1843 |
msgstr ""
|
1844 |
|
1845 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1846 |
msgid "Purge product and categories only when the stock status changes."
|
1847 |
msgstr ""
|
1848 |
|
1849 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1850 |
msgid "Purge product only when the stock status changes."
|
1851 |
msgstr ""
|
1852 |
|
1853 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1854 |
msgid "Do not purge categories on changes to the quantity or stock status."
|
1855 |
msgstr ""
|
1856 |
|
1857 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1858 |
msgid ""
|
1859 |
"Always purge both product and categories on changes to the quantity or stock "
|
1860 |
"status."
|
1861 |
msgstr ""
|
1862 |
|
1863 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1864 |
msgid ""
|
1865 |
"Determines how changes in product quantity and product stock status affect "
|
1866 |
"product pages and their associated category pages."
|
1867 |
msgstr ""
|
1868 |
|
1869 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1870 |
msgid "Use Front Page TTL for the Shop Page"
|
1871 |
msgstr ""
|
1872 |
|
1873 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1874 |
msgid ""
|
1875 |
"Checking this option will force the shop page to use the front page TTL "
|
1876 |
"setting."
|
1877 |
msgstr ""
|
1878 |
|
1879 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1880 |
msgid ""
|
1881 |
"For example, if the homepage for the site is located at %1$s, the shop page "
|
1882 |
"may be located at %2$s."
|
1883 |
msgstr ""
|
1884 |
|
1885 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1886 |
msgid "Privately Cache Cart"
|
1887 |
msgstr ""
|
1888 |
|
1889 |
-
#: thirdparty/woocommerce.content.tpl.php:
|
1890 |
msgid "Privately cache cart when not empty."
|
1891 |
msgstr ""
|
1892 |
|
@@ -1918,7 +1940,7 @@ msgstr ""
|
|
1918 |
msgid "Dismiss this notice"
|
1919 |
msgstr ""
|
1920 |
|
1921 |
-
#. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 4.
|
1922 |
#. Plugin Name of the plugin/theme
|
1923 |
#: tpl/banner/new_version.php:59 tpl/banner/new_version_dev.tpl.php:12
|
1924 |
#: tpl/cache/more_settings_tip.tpl.php:15 tpl/inc/admin_footer.php:8
|
@@ -1934,7 +1956,7 @@ msgid "New release %s is available now."
|
|
1934 |
msgstr ""
|
1935 |
|
1936 |
#: tpl/banner/new_version.php:71 tpl/banner/new_version_dev.tpl.php:24
|
1937 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
1938 |
msgid "Upgrade"
|
1939 |
msgstr ""
|
1940 |
|
@@ -1958,26 +1980,26 @@ msgstr ""
|
|
1958 |
msgid "Thank You for Using the LiteSpeed Cache Plugin!"
|
1959 |
msgstr ""
|
1960 |
|
1961 |
-
#: tpl/banner/score.php:28 tpl/dash/dashboard.tpl.php:
|
1962 |
msgid "Page Load Time"
|
1963 |
msgstr ""
|
1964 |
|
1965 |
#: tpl/banner/score.php:34 tpl/banner/score.php:74
|
1966 |
-
#: tpl/dash/dashboard.tpl.php:
|
1967 |
msgid "Before"
|
1968 |
msgstr ""
|
1969 |
|
1970 |
#: tpl/banner/score.php:45 tpl/banner/score.php:84
|
1971 |
-
#: tpl/dash/dashboard.tpl.php:
|
1972 |
msgid "After"
|
1973 |
msgstr ""
|
1974 |
|
1975 |
#: tpl/banner/score.php:55 tpl/banner/score.php:94
|
1976 |
-
#: tpl/dash/dashboard.tpl.php:
|
1977 |
msgid "Improved by"
|
1978 |
msgstr ""
|
1979 |
|
1980 |
-
#: tpl/banner/score.php:68 tpl/dash/dashboard.tpl.php:
|
1981 |
msgid "PageSpeed Score"
|
1982 |
msgstr ""
|
1983 |
|
@@ -2022,7 +2044,7 @@ msgid "TTL"
|
|
2022 |
msgstr ""
|
2023 |
|
2024 |
#: tpl/cache/entry.tpl.php:8 tpl/cache/entry_network.tpl.php:7
|
2025 |
-
#: tpl/toolbox/entry.tpl.php:6 tpl/toolbox/purge.tpl.php:
|
2026 |
msgid "Purge"
|
2027 |
msgstr ""
|
2028 |
|
@@ -2057,7 +2079,7 @@ msgstr ""
|
|
2057 |
|
2058 |
#: tpl/cache/more_settings_tip.tpl.php:12
|
2059 |
#: tpl/cache/settings-excludes.tpl.php:61
|
2060 |
-
#: tpl/cache/settings-excludes.tpl.php:94 tpl/cdn/settings.tpl.php:
|
2061 |
#: tpl/crawler/settings-general.tpl.php:39
|
2062 |
#: tpl/crawler/settings-general.tpl.php:140
|
2063 |
#: tpl/crawler/settings-general.tpl.php:145
|
@@ -2240,7 +2262,7 @@ msgstr ""
|
|
2240 |
#: tpl/cache/settings-esi.tpl.php:35 tpl/cdn/manage.tpl.php:21
|
2241 |
#: tpl/crawler/summary.tpl.php:48 tpl/inc/check_cache_disabled.php:31
|
2242 |
#: tpl/inc/check_if_network_disable_all.php:18
|
2243 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
2244 |
#: tpl/page_optm/settings_localization.tpl.php:11
|
2245 |
msgid "WARNING"
|
2246 |
msgstr ""
|
@@ -2279,7 +2301,8 @@ msgstr ""
|
|
2279 |
#: tpl/page_optm/settings_media_exc.tpl.php:26
|
2280 |
#: tpl/page_optm/settings_tuning.tpl.php:36
|
2281 |
#: tpl/page_optm/settings_tuning.tpl.php:57
|
2282 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
|
|
2283 |
msgid "Filter %s is supported."
|
2284 |
msgstr ""
|
2285 |
|
@@ -2294,7 +2317,7 @@ msgid ""
|
|
2294 |
msgstr ""
|
2295 |
|
2296 |
#: tpl/cache/settings-esi.tpl.php:107 tpl/cache/settings-purge.tpl.php:110
|
2297 |
-
#: tpl/cdn/settings.tpl.php:
|
2298 |
msgid ""
|
2299 |
"Wildcard %1$s supported (match zero or more characters). For example, to "
|
2300 |
"match %2$s and %3$s, use %4$s."
|
@@ -2680,7 +2703,7 @@ msgid "Object Cache Settings"
|
|
2680 |
msgstr ""
|
2681 |
|
2682 |
#: tpl/cache/settings_inc.object.tpl.php:41
|
2683 |
-
msgid "Use object cache functionality."
|
2684 |
msgstr ""
|
2685 |
|
2686 |
#: tpl/cache/settings_inc.object.tpl.php:47 tpl/crawler/blacklist.tpl.php:32
|
@@ -2824,128 +2847,133 @@ msgstr ""
|
|
2824 |
msgid "Enable %s CDN API functionality."
|
2825 |
msgstr ""
|
2826 |
|
2827 |
-
#: tpl/cdn/settings.tpl.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
2828 |
msgid ""
|
2829 |
-
"Turn this setting %1$s if you are using a Content Delivery Network (CDN). "
|
2830 |
"NOTE: QUIC.cloud CDN and Cloudflare do not use CDN Mapping. If you are are "
|
2831 |
"only using QUIC.cloud or Cloudflare, leave this setting %2$s."
|
2832 |
msgstr ""
|
2833 |
|
2834 |
-
#: tpl/cdn/settings.tpl.php:
|
2835 |
msgid ""
|
2836 |
"To randomize CDN hostname, define multiple hostnames for the same resources."
|
2837 |
msgstr ""
|
2838 |
|
2839 |
-
#: tpl/cdn/settings.tpl.php:
|
2840 |
msgid ""
|
2841 |
"Serve all image files through the CDN. This will affect all attachments, "
|
2842 |
"HTML %s tags, and CSS %s attributes."
|
2843 |
msgstr ""
|
2844 |
|
2845 |
-
#: tpl/cdn/settings.tpl.php:
|
2846 |
msgid ""
|
2847 |
"Serve all CSS files through the CDN. This will affect all enqueued WP CSS "
|
2848 |
"files."
|
2849 |
msgstr ""
|
2850 |
|
2851 |
-
#: tpl/cdn/settings.tpl.php:
|
2852 |
msgid ""
|
2853 |
"Serve all JavaScript files through the CDN. This will affect all enqueued WP "
|
2854 |
"JavaScript files."
|
2855 |
msgstr ""
|
2856 |
|
2857 |
-
#: tpl/cdn/settings.tpl.php:
|
2858 |
msgid "Static file type links to be replaced by CDN links."
|
2859 |
msgstr ""
|
2860 |
|
2861 |
-
#: tpl/cdn/settings.tpl.php:
|
2862 |
msgid "This will affect all tags containing attributes: %s %s %s."
|
2863 |
msgstr ""
|
2864 |
|
2865 |
-
#: tpl/cdn/settings.tpl.php:
|
2866 |
msgid "Default value"
|
2867 |
msgstr ""
|
2868 |
|
2869 |
-
#: tpl/cdn/settings.tpl.php:
|
2870 |
msgid ""
|
2871 |
"If you turn any of the above settings OFF, please remove the related file "
|
2872 |
"types from the %s box."
|
2873 |
msgstr ""
|
2874 |
|
2875 |
-
#: tpl/cdn/settings.tpl.php:
|
2876 |
msgid ""
|
2877 |
"Specify which HTML element attributes will be replaced with CDN Mapping."
|
2878 |
msgstr ""
|
2879 |
|
2880 |
-
#: tpl/cdn/settings.tpl.php:
|
2881 |
msgid "Only attributes listed here will be replaced."
|
2882 |
msgstr ""
|
2883 |
|
2884 |
-
#: tpl/cdn/settings.tpl.php:
|
2885 |
msgid "Use the format %1$s or %2$s (element is optional)."
|
2886 |
msgstr ""
|
2887 |
|
2888 |
-
#: tpl/cdn/settings.tpl.php:
|
2889 |
msgid ""
|
2890 |
"Site URL to be served through the CDN. Beginning with %1$s. For example, "
|
2891 |
"%2$s."
|
2892 |
msgstr ""
|
2893 |
|
2894 |
-
#: tpl/cdn/settings.tpl.php:
|
2895 |
msgid "Only files within these directories will be pointed to the CDN."
|
2896 |
msgstr ""
|
2897 |
|
2898 |
-
#: tpl/cdn/settings.tpl.php:
|
2899 |
msgid "Paths containing these strings will not be served from the CDN."
|
2900 |
msgstr ""
|
2901 |
|
2902 |
-
#: tpl/cdn/settings.tpl.php:
|
2903 |
msgid "Use %s API functionality."
|
2904 |
msgstr ""
|
2905 |
|
2906 |
-
#: tpl/cdn/settings.tpl.php:
|
2907 |
msgid "This can be managed from %1$s%2$s tab."
|
2908 |
msgstr ""
|
2909 |
|
2910 |
-
#: tpl/cdn/settings.tpl.php:
|
2911 |
-
msgid "
|
2912 |
msgstr ""
|
2913 |
|
2914 |
-
#: tpl/cdn/settings.tpl.php:
|
2915 |
-
msgid "Your
|
2916 |
msgstr ""
|
2917 |
|
2918 |
-
#: tpl/cdn/settings.tpl.php:
|
2919 |
-
msgid "
|
2920 |
msgstr ""
|
2921 |
|
2922 |
-
#: tpl/cdn/settings.tpl.php:
|
2923 |
-
msgid "
|
|
|
|
|
2924 |
msgstr ""
|
2925 |
|
2926 |
-
#: tpl/cdn/settings.tpl.php:
|
2927 |
-
msgid "
|
2928 |
msgstr ""
|
2929 |
|
2930 |
-
#: tpl/cdn/settings.tpl.php:
|
2931 |
-
msgid "
|
2932 |
msgstr ""
|
2933 |
|
2934 |
-
#: tpl/cdn/settings.tpl.php:
|
2935 |
-
msgid ""
|
2936 |
-
"Recommend to generate the token from Cloudflare API token template "
|
2937 |
-
"\"WordPress \"."
|
2938 |
msgstr ""
|
2939 |
|
2940 |
-
#: tpl/cdn/settings.tpl.php:
|
2941 |
msgid "Domain"
|
2942 |
msgstr ""
|
2943 |
|
2944 |
-
#: tpl/cdn/settings.tpl.php:
|
2945 |
msgid "You can just type part of the domain."
|
2946 |
msgstr ""
|
2947 |
|
2948 |
-
#: tpl/cdn/settings.tpl.php:
|
2949 |
msgid ""
|
2950 |
"Once saved, it will be matched with the current list and completed "
|
2951 |
"automatically."
|
@@ -2968,7 +2996,7 @@ msgid "Total"
|
|
2968 |
msgstr ""
|
2969 |
|
2970 |
#: tpl/crawler/blacklist.tpl.php:31 tpl/crawler/map.tpl.php:43
|
2971 |
-
#: tpl/toolbox/purge.tpl.php:
|
2972 |
msgid "URL"
|
2973 |
msgstr ""
|
2974 |
|
@@ -3002,8 +3030,8 @@ msgid "Map"
|
|
3002 |
msgstr ""
|
3003 |
|
3004 |
#: tpl/crawler/entry.tpl.php:9 tpl/general/entry.tpl.php:6
|
3005 |
-
#: tpl/general/entry.tpl.php:
|
3006 |
-
#: tpl/general/settings.tpl.php:
|
3007 |
msgid "General Settings"
|
3008 |
msgstr ""
|
3009 |
|
@@ -3039,7 +3067,7 @@ msgstr ""
|
|
3039 |
msgid "Sitemap Total"
|
3040 |
msgstr ""
|
3041 |
|
3042 |
-
#: tpl/crawler/map.tpl.php:44 tpl/dash/dashboard.tpl.php:
|
3043 |
msgid "Crawler Status"
|
3044 |
msgstr ""
|
3045 |
|
@@ -3047,11 +3075,11 @@ msgstr ""
|
|
3047 |
msgid "Add to Blacklist"
|
3048 |
msgstr ""
|
3049 |
|
3050 |
-
#: tpl/crawler/map.tpl.php:67
|
3051 |
msgid "Cache Hit"
|
3052 |
msgstr ""
|
3053 |
|
3054 |
-
#: tpl/crawler/map.tpl.php:68
|
3055 |
msgid "Cache Miss"
|
3056 |
msgstr ""
|
3057 |
|
@@ -3126,8 +3154,8 @@ msgstr ""
|
|
3126 |
#: tpl/crawler/settings-simulation.tpl.php:49
|
3127 |
msgid ""
|
3128 |
"To crawl for a particular cookie, enter the cookie name, and the values you "
|
3129 |
-
"wish to crawl for. Values should be one per line
|
3130 |
-
"
|
3131 |
msgstr ""
|
3132 |
|
3133 |
#: tpl/crawler/settings-simulation.tpl.php:51
|
@@ -3212,19 +3240,19 @@ msgstr ""
|
|
3212 |
msgid "Run time for previous crawler"
|
3213 |
msgstr ""
|
3214 |
|
3215 |
-
#: tpl/crawler/summary.tpl.php:85 tpl/dash/dashboard.tpl.php:
|
3216 |
msgid "Current crawler started at"
|
3217 |
msgstr ""
|
3218 |
|
3219 |
-
#: tpl/crawler/summary.tpl.php:92 tpl/dash/dashboard.tpl.php:
|
3220 |
msgid "Last interval"
|
3221 |
msgstr ""
|
3222 |
|
3223 |
-
#: tpl/crawler/summary.tpl.php:99 tpl/dash/dashboard.tpl.php:
|
3224 |
msgid "Ended reason"
|
3225 |
msgstr ""
|
3226 |
|
3227 |
-
#: tpl/crawler/summary.tpl.php:106 tpl/dash/dashboard.tpl.php:
|
3228 |
msgid "<b>Last crawled:</b> %s item(s)"
|
3229 |
msgstr ""
|
3230 |
|
@@ -3268,6 +3296,14 @@ msgstr ""
|
|
3268 |
msgid "Waiting to be Crawled"
|
3269 |
msgstr ""
|
3270 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3271 |
#: tpl/crawler/summary.tpl.php:184
|
3272 |
msgid "Run frequency is set by the Interval Between Runs setting."
|
3273 |
msgstr ""
|
@@ -3300,155 +3336,155 @@ msgstr ""
|
|
3300 |
msgid "No crawler meta file generated yet"
|
3301 |
msgstr ""
|
3302 |
|
3303 |
-
#: tpl/dash/dashboard.tpl.php:
|
3304 |
msgid "QUIC.cloud Service Usage Statistics"
|
3305 |
msgstr ""
|
3306 |
|
3307 |
-
#: tpl/dash/dashboard.tpl.php:
|
3308 |
msgid "Sync data from Cloud"
|
3309 |
msgstr ""
|
3310 |
|
3311 |
-
#: tpl/dash/dashboard.tpl.php:
|
3312 |
#: tpl/toolbox/purge.tpl.php:70
|
3313 |
msgid "Critical CSS"
|
3314 |
msgstr ""
|
3315 |
|
3316 |
-
#: tpl/dash/dashboard.tpl.php:
|
3317 |
msgid "Unique CSS"
|
3318 |
msgstr ""
|
3319 |
|
3320 |
-
#: tpl/dash/dashboard.tpl.php:
|
3321 |
msgid "CDN Bandwidth"
|
3322 |
msgstr ""
|
3323 |
|
3324 |
-
#: tpl/dash/dashboard.tpl.php:
|
3325 |
msgid "Low Quality Image Placeholder"
|
3326 |
msgstr ""
|
3327 |
|
3328 |
-
#: tpl/dash/dashboard.tpl.php:
|
3329 |
msgid "Fast Queue Usage"
|
3330 |
msgstr ""
|
3331 |
|
3332 |
-
#: tpl/dash/dashboard.tpl.php:
|
3333 |
msgid "Usage"
|
3334 |
msgstr ""
|
3335 |
|
3336 |
-
#: tpl/dash/dashboard.tpl.php:
|
3337 |
msgid "PAYG Balance"
|
3338 |
msgstr ""
|
3339 |
|
3340 |
-
#: tpl/dash/dashboard.tpl.php:
|
3341 |
msgid "This Month Usage"
|
3342 |
msgstr ""
|
3343 |
|
3344 |
-
#: tpl/dash/dashboard.tpl.php:
|
3345 |
msgid "Pay as You Go Usage Statistics"
|
3346 |
msgstr ""
|
3347 |
|
3348 |
-
#: tpl/dash/dashboard.tpl.php:
|
3349 |
msgid "Total Usage"
|
3350 |
msgstr ""
|
3351 |
|
3352 |
-
#: tpl/dash/dashboard.tpl.php:
|
3353 |
msgid "Total images optimized in this month"
|
3354 |
msgstr ""
|
3355 |
|
3356 |
-
#: tpl/dash/dashboard.tpl.php:
|
3357 |
msgid "Go to QUIC.cloud dashboard"
|
3358 |
msgstr ""
|
3359 |
|
3360 |
-
#: tpl/dash/dashboard.tpl.php:
|
3361 |
msgid "Refresh page load time"
|
3362 |
msgstr ""
|
3363 |
|
3364 |
-
#: tpl/dash/dashboard.tpl.php:
|
3365 |
-
#: tpl/dash/dashboard.tpl.php:
|
3366 |
-
#: tpl/dash/dashboard.tpl.php:
|
3367 |
msgid "Last requested"
|
3368 |
msgstr ""
|
3369 |
|
3370 |
-
#: tpl/dash/dashboard.tpl.php:
|
3371 |
msgid "Current closest Cloud server is %s. Click to redetect."
|
3372 |
msgstr ""
|
3373 |
|
3374 |
-
#: tpl/dash/dashboard.tpl.php:
|
3375 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
3376 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
3377 |
msgid ""
|
3378 |
"Are you sure you want to redetect the closest cloud server for this service?"
|
3379 |
msgstr ""
|
3380 |
|
3381 |
-
#: tpl/dash/dashboard.tpl.php:
|
3382 |
msgid "Refresh page score"
|
3383 |
msgstr ""
|
3384 |
|
3385 |
-
#: tpl/dash/dashboard.tpl.php:
|
3386 |
msgid "Image Optimization Summary"
|
3387 |
msgstr ""
|
3388 |
|
3389 |
-
#: tpl/dash/dashboard.tpl.php:
|
3390 |
msgid "Image Groups Prepared"
|
3391 |
msgstr ""
|
3392 |
|
3393 |
-
#: tpl/dash/dashboard.tpl.php:
|
3394 |
msgid "Images Requested"
|
3395 |
msgstr ""
|
3396 |
|
3397 |
-
#: tpl/dash/dashboard.tpl.php:
|
3398 |
msgid "Last Request"
|
3399 |
msgstr ""
|
3400 |
|
3401 |
-
#: tpl/dash/dashboard.tpl.php:
|
3402 |
msgid "Last Pull"
|
3403 |
msgstr ""
|
3404 |
|
3405 |
-
#: tpl/dash/dashboard.tpl.php:
|
3406 |
msgid "Cache Status"
|
3407 |
msgstr ""
|
3408 |
|
3409 |
-
#: tpl/dash/dashboard.tpl.php:
|
3410 |
msgid "Public Cache"
|
3411 |
msgstr ""
|
3412 |
|
3413 |
-
#: tpl/dash/dashboard.tpl.php:
|
3414 |
msgid "Private Cache"
|
3415 |
msgstr ""
|
3416 |
|
3417 |
-
#: tpl/dash/dashboard.tpl.php:
|
3418 |
msgid "Cache Stats"
|
3419 |
msgstr ""
|
3420 |
|
3421 |
-
#: tpl/dash/dashboard.tpl.php:
|
3422 |
-
#: tpl/dash/dashboard.tpl.php:
|
3423 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
3424 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
3425 |
msgid "Last generated"
|
3426 |
msgstr ""
|
3427 |
|
3428 |
-
#: tpl/dash/dashboard.tpl.php:
|
3429 |
-
#: tpl/dash/dashboard.tpl.php:
|
3430 |
msgid "Time to execute previous request"
|
3431 |
msgstr ""
|
3432 |
|
3433 |
-
#: tpl/dash/dashboard.tpl.php:
|
3434 |
-
#: tpl/dash/dashboard.tpl.php:
|
3435 |
msgid "Requests in queue"
|
3436 |
msgstr ""
|
3437 |
|
3438 |
-
#: tpl/dash/dashboard.tpl.php:
|
3439 |
-
#: tpl/dash/dashboard.tpl.php:
|
3440 |
msgid "Force cron"
|
3441 |
msgstr ""
|
3442 |
|
3443 |
-
#: tpl/dash/dashboard.tpl.php:
|
3444 |
msgid "Crawler(s)"
|
3445 |
msgstr ""
|
3446 |
|
3447 |
-
#: tpl/dash/dashboard.tpl.php:
|
3448 |
msgid "Currently active crawler"
|
3449 |
msgstr ""
|
3450 |
|
3451 |
-
#: tpl/dash/dashboard.tpl.php:
|
3452 |
msgid "Manage Crawler"
|
3453 |
msgstr ""
|
3454 |
|
@@ -3638,7 +3674,11 @@ msgstr ""
|
|
3638 |
msgid "A TTL of 0 indicates do not cache."
|
3639 |
msgstr ""
|
3640 |
|
3641 |
-
#: tpl/general/entry.tpl.php:
|
|
|
|
|
|
|
|
|
3642 |
msgid "LiteSpeed Cache General Settings"
|
3643 |
msgstr ""
|
3644 |
|
@@ -3683,134 +3723,134 @@ msgstr ""
|
|
3683 |
msgid "Next available request time: <code>After %s</code>"
|
3684 |
msgstr ""
|
3685 |
|
3686 |
-
#: tpl/general/settings.tpl.php:
|
3687 |
msgid "Visit My Dashboard on QUIC.cloud"
|
3688 |
msgstr ""
|
3689 |
|
3690 |
-
#: tpl/general/settings.tpl.php:
|
3691 |
-
#: tpl/general/settings.tpl.php:
|
3692 |
msgid "Link to QUIC.cloud"
|
3693 |
msgstr ""
|
3694 |
|
3695 |
-
#: tpl/general/settings.tpl.php:
|
3696 |
-
#: tpl/general/settings.tpl.php:
|
3697 |
-
#: tpl/general/settings.tpl.php:
|
3698 |
-
#: tpl/general/settings.tpl.php:
|
3699 |
msgid "Notice"
|
3700 |
msgstr ""
|
3701 |
|
3702 |
-
#: tpl/general/settings.tpl.php:
|
3703 |
msgid ""
|
3704 |
"There was a problem with retrieving your Domain Key. Please click the %s "
|
3705 |
"button to retry."
|
3706 |
msgstr ""
|
3707 |
|
3708 |
-
#: tpl/general/settings.tpl.php:
|
3709 |
msgid ""
|
3710 |
"There are two reasons why we might not be able to communicate with your "
|
3711 |
"domain:"
|
3712 |
msgstr ""
|
3713 |
|
3714 |
-
#: tpl/general/settings.tpl.php:
|
3715 |
msgid "The POST callback to %s failed."
|
3716 |
msgstr ""
|
3717 |
|
3718 |
-
#: tpl/general/settings.tpl.php:
|
3719 |
msgid "Our %s was not whitelisted."
|
3720 |
msgstr ""
|
3721 |
|
3722 |
-
#: tpl/general/settings.tpl.php:
|
3723 |
msgid ""
|
3724 |
"Please verify that your other plugins are not blocking REST API calls, "
|
3725 |
"whitelist our server IPs, or contact your server admin for assistance."
|
3726 |
msgstr ""
|
3727 |
|
3728 |
-
#: tpl/general/settings.tpl.php:
|
3729 |
msgid ""
|
3730 |
"Request submitted. Please wait, then refresh the page to see approval "
|
3731 |
"notification."
|
3732 |
msgstr ""
|
3733 |
|
3734 |
-
#: tpl/general/settings.tpl.php:
|
3735 |
msgid "Warning"
|
3736 |
msgstr ""
|
3737 |
|
3738 |
-
#: tpl/general/settings.tpl.php:
|
3739 |
msgid "You must have %1$s first before linking to QUIC.cloud."
|
3740 |
msgstr ""
|
3741 |
|
3742 |
-
#: tpl/general/settings.tpl.php:
|
3743 |
msgid ""
|
3744 |
"You must click the %s button if you wish to associate this site with a QUIC."
|
3745 |
"cloud account."
|
3746 |
msgstr ""
|
3747 |
|
3748 |
-
#: tpl/general/settings.tpl.php:
|
3749 |
msgid "Benefits of linking to a QUIC.cloud account"
|
3750 |
msgstr ""
|
3751 |
|
3752 |
-
#: tpl/general/settings.tpl.php:
|
3753 |
msgid "A Domain Key is required for QUIC.cloud online services."
|
3754 |
msgstr ""
|
3755 |
|
3756 |
-
#: tpl/general/settings.tpl.php:
|
3757 |
msgid "Current Cloud Nodes in Service"
|
3758 |
msgstr ""
|
3759 |
|
3760 |
-
#: tpl/general/settings.tpl.php:
|
3761 |
msgid "Click to clear all nodes for further redetection."
|
3762 |
msgstr ""
|
3763 |
|
3764 |
-
#: tpl/general/settings.tpl.php:
|
3765 |
msgid "Are you sure you want to clear all cloud nodes?"
|
3766 |
msgstr ""
|
3767 |
|
3768 |
-
#: tpl/general/settings.tpl.php:
|
3769 |
msgid "No cloud services currently in use"
|
3770 |
msgstr ""
|
3771 |
|
3772 |
-
#: tpl/general/settings.tpl.php:
|
3773 |
-
msgid "This option enables maximum optimization for Guest Mode
|
3774 |
msgstr ""
|
3775 |
|
3776 |
-
#: tpl/general/settings.tpl.php:
|
3777 |
msgid "This option only works when turning %s on."
|
3778 |
msgstr ""
|
3779 |
|
3780 |
-
#: tpl/general/settings.tpl.php:
|
3781 |
msgid "You need to turn %s on to get maximum result."
|
3782 |
msgstr ""
|
3783 |
|
3784 |
-
#: tpl/general/settings.tpl.php:
|
3785 |
msgid ""
|
3786 |
"You need to turn %s on and finish all WebP generation to get maximum result."
|
3787 |
msgstr ""
|
3788 |
|
3789 |
-
#: tpl/general/settings.tpl.php:
|
3790 |
msgid ""
|
3791 |
"Enter this site's IP address to allow cloud services directly call IP "
|
3792 |
"instead of domain name. This eliminates the overhead of DNS and CDN lookups."
|
3793 |
msgstr ""
|
3794 |
|
3795 |
-
#: tpl/general/settings.tpl.php:
|
3796 |
msgid "Your server IP"
|
3797 |
msgstr ""
|
3798 |
|
3799 |
-
#: tpl/general/settings.tpl.php:
|
3800 |
msgid "Check my public IP from"
|
3801 |
msgstr ""
|
3802 |
|
3803 |
-
#: tpl/general/settings.tpl.php:
|
3804 |
msgid ""
|
3805 |
"the auto-detected IP may not be accurate if you have an additional outgoing "
|
3806 |
"IP set, or you have multiple IPs configured on your server."
|
3807 |
msgstr ""
|
3808 |
|
3809 |
-
#: tpl/general/settings.tpl.php:
|
3810 |
msgid "Please make sure this IP is the correct one for visiting your site."
|
3811 |
msgstr ""
|
3812 |
|
3813 |
-
#: tpl/general/settings.tpl.php:
|
3814 |
msgid ""
|
3815 |
"Turn this option ON to show latest news automatically, including hotfixes, "
|
3816 |
"new releases, available beta versions, and promotions."
|
@@ -3824,14 +3864,31 @@ msgstr ""
|
|
3824 |
|
3825 |
#: tpl/general/settings_inc.guest.tpl.php:13
|
3826 |
msgid ""
|
3827 |
-
"Guest Mode provides an always cacheable landing page
|
3828 |
-
"visit, and then attempts to update cache varies via AJAX."
|
3829 |
msgstr ""
|
3830 |
|
3831 |
#: tpl/general/settings_inc.guest.tpl.php:14
|
3832 |
msgid ""
|
3833 |
"This option can help to correct the cache vary for certain advanced mobile "
|
3834 |
-
"or tablet
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3835 |
msgstr ""
|
3836 |
|
3837 |
#: tpl/img_optm/entry.tpl.php:7 tpl/img_optm/entry.tpl.php:13
|
@@ -3914,9 +3971,9 @@ msgstr ""
|
|
3914 |
msgid "The image compression quality setting of WordPress out of 100."
|
3915 |
msgstr ""
|
3916 |
|
3917 |
-
#: tpl/img_optm/summary.tpl.php:57 tpl/page_optm/settings_css.tpl.php:
|
3918 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
3919 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
3920 |
msgid "Current closest Cloud server is %s. Click to redetect."
|
3921 |
msgstr ""
|
3922 |
|
@@ -4254,7 +4311,7 @@ msgid ""
|
|
4254 |
"dismissed. (<a %3$s>Learn More</a>)"
|
4255 |
msgstr ""
|
4256 |
|
4257 |
-
#: tpl/page_optm/entry.tpl.php:6 tpl/page_optm/settings_css.tpl.php:
|
4258 |
msgid "CSS Settings"
|
4259 |
msgstr ""
|
4260 |
|
@@ -4262,11 +4319,11 @@ msgstr ""
|
|
4262 |
msgid "JS Settings"
|
4263 |
msgstr ""
|
4264 |
|
4265 |
-
#: tpl/page_optm/entry.tpl.php:8
|
4266 |
msgid "HTML Settings"
|
4267 |
msgstr ""
|
4268 |
|
4269 |
-
#: tpl/page_optm/entry.tpl.php:9 tpl/page_optm/settings_media.tpl.php:
|
4270 |
msgid "Media Settings"
|
4271 |
msgstr ""
|
4272 |
|
@@ -4278,10 +4335,6 @@ msgstr ""
|
|
4278 |
msgid "Localization"
|
4279 |
msgstr ""
|
4280 |
|
4281 |
-
#: tpl/page_optm/entry.tpl.php:12
|
4282 |
-
msgid "Tuning"
|
4283 |
-
msgstr ""
|
4284 |
-
|
4285 |
#: tpl/page_optm/entry.tpl.php:19
|
4286 |
msgid "LiteSpeed Cache Page Optimization"
|
4287 |
msgstr ""
|
@@ -4292,124 +4345,120 @@ msgid ""
|
|
4292 |
"Minify/Combine settings, please do a Purge All action."
|
4293 |
msgstr ""
|
4294 |
|
4295 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4296 |
msgid "Minify CSS files and inline CSS code."
|
4297 |
msgstr ""
|
4298 |
|
4299 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4300 |
msgid "Combine CSS files and inline CSS code."
|
4301 |
msgstr ""
|
4302 |
|
4303 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4304 |
msgid "How to Fix Problems Caused by CSS/JS Optimization."
|
4305 |
msgstr ""
|
4306 |
|
4307 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4308 |
msgid "Use QUIC.cloud online service to generate unique CSS."
|
4309 |
msgstr ""
|
4310 |
|
4311 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4312 |
msgid "This will drop the unused CSS on each page from the combined file."
|
4313 |
msgstr ""
|
4314 |
|
4315 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
4316 |
msgid "Last requested cost"
|
4317 |
msgstr ""
|
4318 |
|
4319 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4320 |
-
msgid "URL list in queue waiting for cron"
|
4321 |
msgstr ""
|
4322 |
|
4323 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4324 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4325 |
-
|
4326 |
-
#: tpl/page_optm/settings_media.tpl.php:187
|
4327 |
-
msgid "Run Queue Manually"
|
4328 |
msgstr ""
|
4329 |
|
4330 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4331 |
msgid ""
|
4332 |
"Include external CSS and inline CSS in combined file when %1$s is also "
|
4333 |
"enabled. This option helps maintain the priorities of CSS, which should "
|
4334 |
"minimize potential errors caused by CSS Combine."
|
4335 |
msgstr ""
|
4336 |
|
4337 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4338 |
msgid ""
|
4339 |
"Pre-send internal CSS files to the browser before they are requested. "
|
4340 |
"(Requires the HTTP/2 protocol)"
|
4341 |
msgstr ""
|
4342 |
|
4343 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4344 |
msgid "Optimize CSS delivery."
|
4345 |
msgstr ""
|
4346 |
|
4347 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4348 |
-
#: tpl/page_optm/settings_html.tpl.php:129 tpl/page_optm/settings_js.tpl.php:
|
4349 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4350 |
msgid ""
|
4351 |
"This can improve your speed score in services like Pingdom, GTmetrix and "
|
4352 |
"PageSpeed."
|
4353 |
msgstr ""
|
4354 |
|
4355 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4356 |
msgid ""
|
4357 |
-
"
|
|
|
4358 |
msgstr ""
|
4359 |
|
4360 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4361 |
msgid ""
|
4362 |
-
"
|
4363 |
-
"
|
4364 |
msgstr ""
|
4365 |
|
4366 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4367 |
msgid ""
|
4368 |
-
"
|
4369 |
-
"queue."
|
4370 |
msgstr ""
|
4371 |
|
4372 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4373 |
-
|
4374 |
-
#: tpl/page_optm/settings_tuning.tpl.php:37
|
4375 |
-
#: tpl/page_optm/settings_tuning.tpl.php:58
|
4376 |
-
#: tpl/page_optm/settings_tuning.tpl.php:108
|
4377 |
-
msgid "Elements with attribute %s in html code will be excluded."
|
4378 |
msgstr ""
|
4379 |
|
4380 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4381 |
msgid ""
|
4382 |
"Disable this option to generate CCSS per Post Type instead of per page. This "
|
4383 |
"can save significant CCSS quota, however it may result in incorrect CSS "
|
4384 |
"styling if your site uses a page builder."
|
4385 |
msgstr ""
|
4386 |
|
4387 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4388 |
msgid "This will inline the asynchronous CSS library to avoid render blocking."
|
4389 |
msgstr ""
|
4390 |
|
4391 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4392 |
msgid "Default"
|
4393 |
msgstr ""
|
4394 |
|
4395 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4396 |
msgid ""
|
4397 |
"Set this to append %1$s to all %2$s rules before caching CSS to specify how "
|
4398 |
"fonts should be displayed while being downloaded."
|
4399 |
msgstr ""
|
4400 |
|
4401 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4402 |
msgid "%s is recommended."
|
4403 |
msgstr ""
|
4404 |
|
4405 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4406 |
msgid "Swap"
|
4407 |
msgstr ""
|
4408 |
|
4409 |
-
#: tpl/page_optm/settings_html.tpl.php:7
|
4410 |
-
msgid "Optimization Settings"
|
4411 |
-
msgstr ""
|
4412 |
-
|
4413 |
#: tpl/page_optm/settings_html.tpl.php:20
|
4414 |
msgid "Minify HTML content."
|
4415 |
msgstr ""
|
@@ -4456,8 +4505,8 @@ msgstr ""
|
|
4456 |
|
4457 |
#: tpl/page_optm/settings_html.tpl.php:101
|
4458 |
msgid ""
|
4459 |
-
"This will also add a preconnect to Google
|
4460 |
-
"
|
4461 |
msgstr ""
|
4462 |
|
4463 |
#: tpl/page_optm/settings_html.tpl.php:115
|
@@ -4482,7 +4531,7 @@ msgstr ""
|
|
4482 |
msgid "Combine all local JS files into a single file."
|
4483 |
msgstr ""
|
4484 |
|
4485 |
-
#: tpl/page_optm/settings_js.tpl.php:37 tpl/page_optm/settings_js.tpl.php:
|
4486 |
msgid ""
|
4487 |
"This option may result in JS error or layout issue on frontend pages on "
|
4488 |
"certain themes/plugins."
|
@@ -4516,7 +4565,9 @@ msgid "Delayed"
|
|
4516 |
msgstr ""
|
4517 |
|
4518 |
#: tpl/page_optm/settings_js.tpl.php:78
|
4519 |
-
msgid "
|
|
|
|
|
4520 |
msgstr ""
|
4521 |
|
4522 |
#: tpl/page_optm/settings_localization.tpl.php:12
|
@@ -4546,172 +4597,150 @@ msgstr ""
|
|
4546 |
msgid "Avatar list in queue waiting for update"
|
4547 |
msgstr ""
|
4548 |
|
4549 |
-
#: tpl/page_optm/settings_localization.tpl.php:
|
4550 |
-
|
4551 |
-
|
4552 |
-
|
4553 |
-
#: tpl/page_optm/settings_localization.tpl.php:94
|
4554 |
-
msgid "Localize external resources."
|
4555 |
-
msgstr ""
|
4556 |
-
|
4557 |
-
#: tpl/page_optm/settings_localization.tpl.php:116
|
4558 |
-
msgid "Resources listed here will be copied and replaced with local URLs."
|
4559 |
-
msgstr ""
|
4560 |
-
|
4561 |
-
#: tpl/page_optm/settings_localization.tpl.php:117
|
4562 |
-
msgid "HTTPS sources only."
|
4563 |
-
msgstr ""
|
4564 |
-
|
4565 |
-
#: tpl/page_optm/settings_localization.tpl.php:121
|
4566 |
-
msgid ""
|
4567 |
-
"Comments are supported. Start a line with a %s to turn it into a comment "
|
4568 |
-
"line."
|
4569 |
-
msgstr ""
|
4570 |
-
|
4571 |
-
#: tpl/page_optm/settings_localization.tpl.php:123
|
4572 |
-
msgid "Non-`.js` file extensions will be ignored."
|
4573 |
msgstr ""
|
4574 |
|
4575 |
-
#: tpl/page_optm/settings_localization.tpl.php:
|
4576 |
-
|
4577 |
-
msgid "Example"
|
4578 |
msgstr ""
|
4579 |
|
4580 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4581 |
msgid "Load images only when they enter the viewport."
|
4582 |
msgstr ""
|
4583 |
|
4584 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4585 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4586 |
msgid "This can improve page loading time by reducing initial HTTP requests."
|
4587 |
msgstr ""
|
4588 |
|
4589 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4590 |
msgid "Adding Style to Your Lazy-Loaded Images"
|
4591 |
msgstr ""
|
4592 |
|
4593 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4594 |
msgid ""
|
4595 |
"Specify a base64 image to be used as a simple placeholder while images "
|
4596 |
"finish loading."
|
4597 |
msgstr ""
|
4598 |
|
4599 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4600 |
msgid ""
|
4601 |
"This can be predefined in %2$s as well using constant %1$s, with this "
|
4602 |
"setting taking priority."
|
4603 |
msgstr ""
|
4604 |
|
4605 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4606 |
msgid "By default a gray image placeholder %s will be used."
|
4607 |
msgstr ""
|
4608 |
|
4609 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4610 |
msgid "For example, %s can be used for a transparent placeholder."
|
4611 |
msgstr ""
|
4612 |
|
4613 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4614 |
msgid ""
|
4615 |
"Responsive image placeholders can help to reduce layout reshuffle when "
|
4616 |
"images are loaded."
|
4617 |
msgstr ""
|
4618 |
|
4619 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4620 |
msgid ""
|
4621 |
"This will generate the placeholder with same dimensions as the image if it "
|
4622 |
"has the width and height attributes."
|
4623 |
msgstr ""
|
4624 |
|
4625 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4626 |
msgid "Specify an SVG to be used as a placeholder when generating locally."
|
4627 |
msgstr ""
|
4628 |
|
4629 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4630 |
msgid "It will be converted to a base64 SVG placeholder on-the-fly."
|
4631 |
msgstr ""
|
4632 |
|
4633 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4634 |
msgid "Variables %s will be replaced with the corresponding image properties."
|
4635 |
msgstr ""
|
4636 |
|
4637 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4638 |
msgid "Variables %s will be replaced with the configured background color."
|
4639 |
msgstr ""
|
4640 |
|
4641 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4642 |
msgid "Specify the responsive placeholder SVG color."
|
4643 |
msgstr ""
|
4644 |
|
4645 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4646 |
msgid ""
|
4647 |
"Use QUIC.cloud LQIP (Low Quality Image Placeholder) generator service for "
|
4648 |
"responsive image previews while loading."
|
4649 |
msgstr ""
|
4650 |
|
4651 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4652 |
msgid "Keep this off to use plain color placeholders."
|
4653 |
msgstr ""
|
4654 |
|
4655 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4656 |
msgid "Specify the quality when generating LQIP."
|
4657 |
msgstr ""
|
4658 |
|
4659 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4660 |
msgid ""
|
4661 |
"Larger number will generate higher resolution quality placeholder, but will "
|
4662 |
"result in larger files which will increase page size and consume more points."
|
4663 |
msgstr ""
|
4664 |
|
4665 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4666 |
msgid ""
|
4667 |
"Changes to this setting do not apply to already-generated LQIPs. To "
|
4668 |
"regenerate existing LQIPs, please %s first from the admin bar menu."
|
4669 |
msgstr ""
|
4670 |
|
4671 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4672 |
msgid "pixels"
|
4673 |
msgstr ""
|
4674 |
|
4675 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4676 |
msgid ""
|
4677 |
"LQIP requests will not be sent for images where both width and height are "
|
4678 |
"smaller than these dimensions."
|
4679 |
msgstr ""
|
4680 |
|
4681 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4682 |
msgid "Automatically generate LQIP in the background via a cron-based queue."
|
4683 |
msgstr ""
|
4684 |
|
4685 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4686 |
msgid ""
|
4687 |
"If set to %1$s, before the placeholder is localized, the %2$s configuration "
|
4688 |
"will be used."
|
4689 |
msgstr ""
|
4690 |
|
4691 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4692 |
msgid ""
|
4693 |
"If set to %s this is done in the foreground, which may slow down page load."
|
4694 |
msgstr ""
|
4695 |
|
4696 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4697 |
msgid "Size list in queue waiting for cron"
|
4698 |
msgstr ""
|
4699 |
|
4700 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4701 |
msgid "Load iframes only when they enter the viewport."
|
4702 |
msgstr ""
|
4703 |
|
4704 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4705 |
msgid ""
|
4706 |
"Set an explicit width and height on image elements to reduce layout shifts "
|
4707 |
-
"and improve CLS."
|
4708 |
msgstr ""
|
4709 |
|
4710 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4711 |
msgid "Note: this option only works when %1$s is %2$s."
|
4712 |
msgstr ""
|
4713 |
|
4714 |
-
#: tpl/page_optm/settings_media.tpl.php:
|
4715 |
msgid "Include the lazy load image JavaScript library inline."
|
4716 |
msgstr ""
|
4717 |
|
@@ -4719,6 +4748,14 @@ msgstr ""
|
|
4719 |
msgid "Listed images will not be lazy loaded."
|
4720 |
msgstr ""
|
4721 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4722 |
#: tpl/page_optm/settings_media_exc.tpl.php:49
|
4723 |
msgid "Images containing these class names will not be lazy loaded."
|
4724 |
msgstr ""
|
@@ -4743,18 +4780,14 @@ msgstr ""
|
|
4743 |
msgid "These images will not generate LQIP."
|
4744 |
msgstr ""
|
4745 |
|
4746 |
-
#: tpl/page_optm/settings_tuning.tpl.php:18
|
4747 |
-
msgid "Tuning Settings"
|
4748 |
-
msgstr ""
|
4749 |
-
|
4750 |
#: tpl/page_optm/settings_tuning.tpl.php:31
|
4751 |
msgid "Listed CSS files or inline CSS code will not be minified/combined."
|
4752 |
msgstr ""
|
4753 |
|
4754 |
#: tpl/page_optm/settings_tuning.tpl.php:38
|
4755 |
#: tpl/page_optm/settings_tuning.tpl.php:59
|
4756 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4757 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4758 |
msgid "Predefined list will also be combined w/ the above settings"
|
4759 |
msgstr ""
|
4760 |
|
@@ -4767,71 +4800,102 @@ msgid ""
|
|
4767 |
"List the CSS selector that its style should be always contained in UCSS."
|
4768 |
msgstr ""
|
4769 |
|
4770 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4771 |
msgid "Specify critical CSS rules for above-the-fold content when enabling %s."
|
4772 |
msgstr ""
|
4773 |
|
4774 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4775 |
msgid "Listed JS files or inline JS code will not be deferred."
|
4776 |
msgstr ""
|
4777 |
|
4778 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
|
|
|
|
|
|
|
|
4779 |
msgid "Prevent any optimization of listed pages."
|
4780 |
msgstr ""
|
4781 |
|
4782 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4783 |
msgid ""
|
4784 |
-
"Only optimize pages for guest visitors. If turned this OFF,
|
4785 |
-
"files will be doubled by each user group."
|
4786 |
msgstr ""
|
4787 |
|
4788 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4789 |
msgid "Selected roles will be excluded from all optimizations."
|
4790 |
msgstr ""
|
4791 |
|
4792 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4793 |
msgid "Try GitHub Version"
|
4794 |
msgstr ""
|
4795 |
|
4796 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4797 |
msgid ""
|
4798 |
"Use this section to switch plugin versions. To beta test a GitHub commit, "
|
4799 |
"enter the commit URL in the field below."
|
4800 |
msgstr ""
|
4801 |
|
4802 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
|
|
|
|
|
|
|
|
4803 |
msgid "Use latest GitHub Dev commit"
|
4804 |
msgstr ""
|
4805 |
|
4806 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4807 |
msgid "Use latest GitHub Master commit"
|
4808 |
msgstr ""
|
4809 |
|
4810 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4811 |
msgid "Use latest WordPress release version"
|
4812 |
msgstr ""
|
4813 |
|
4814 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4815 |
msgid "OR"
|
4816 |
msgstr ""
|
4817 |
|
4818 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4819 |
msgid ""
|
4820 |
"Press the %s button to use the most recent GitHub commit. Master is for "
|
4821 |
"release candidate & Dev is for experimental testing."
|
4822 |
msgstr ""
|
4823 |
|
4824 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4825 |
msgid "Use latest GitHub Dev/Master commit"
|
4826 |
msgstr ""
|
4827 |
|
4828 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4829 |
msgid ""
|
4830 |
"Press the %s button to stop beta testing and go back to the current release "
|
4831 |
"from the WordPress Plugin Directory."
|
4832 |
msgstr ""
|
4833 |
|
4834 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4835 |
msgid ""
|
4836 |
"In order to avoid an upgrade error, you must be using %1$s or later before "
|
4837 |
"you can upgrade to %2$s versions."
|
@@ -5064,91 +5128,87 @@ msgid "This will delete all generated critical CSS files"
|
|
5064 |
msgstr ""
|
5065 |
|
5066 |
#: tpl/toolbox/purge.tpl.php:80
|
5067 |
-
msgid "This will delete all localized resources"
|
5068 |
-
msgstr ""
|
5069 |
-
|
5070 |
-
#: tpl/toolbox/purge.tpl.php:89
|
5071 |
msgid "This will delete all generated image LQIP placeholder files"
|
5072 |
msgstr ""
|
5073 |
|
5074 |
-
#: tpl/toolbox/purge.tpl.php:
|
5075 |
msgid "This will delete all cached Gravatar files"
|
5076 |
msgstr ""
|
5077 |
|
5078 |
-
#: tpl/toolbox/purge.tpl.php:
|
5079 |
msgid ""
|
5080 |
"Purge the cache entries created by this plugin except for Critical CSS & "
|
5081 |
"LQIP caches"
|
5082 |
msgstr ""
|
5083 |
|
5084 |
-
#: tpl/toolbox/purge.tpl.php:
|
5085 |
msgid "Empty Entire Cache"
|
5086 |
msgstr ""
|
5087 |
|
5088 |
-
#: tpl/toolbox/purge.tpl.php:
|
5089 |
msgid ""
|
5090 |
"Clears all cache entries related to this site, <i>including other web "
|
5091 |
"applications</i>."
|
5092 |
msgstr ""
|
5093 |
|
5094 |
-
#: tpl/toolbox/purge.tpl.php:
|
5095 |
msgid "This action should only be used if things are cached incorrectly."
|
5096 |
msgstr ""
|
5097 |
|
5098 |
-
#: tpl/toolbox/purge.tpl.php:
|
5099 |
msgid "This will clear EVERYTHING inside the cache."
|
5100 |
msgstr ""
|
5101 |
|
5102 |
-
#: tpl/toolbox/purge.tpl.php:
|
5103 |
msgid "This may cause heavy load on the server."
|
5104 |
msgstr ""
|
5105 |
|
5106 |
-
#: tpl/toolbox/purge.tpl.php:
|
5107 |
msgid "If only the WordPress site should be purged, use Purge All."
|
5108 |
msgstr ""
|
5109 |
|
5110 |
-
#: tpl/toolbox/purge.tpl.php:
|
5111 |
msgid "Purge By..."
|
5112 |
msgstr ""
|
5113 |
|
5114 |
-
#: tpl/toolbox/purge.tpl.php:
|
5115 |
msgid "Select below for \"Purge by\" options."
|
5116 |
msgstr ""
|
5117 |
|
5118 |
-
#: tpl/toolbox/purge.tpl.php:
|
5119 |
msgid "Category"
|
5120 |
msgstr ""
|
5121 |
|
5122 |
-
#: tpl/toolbox/purge.tpl.php:
|
5123 |
msgid "Post ID"
|
5124 |
msgstr ""
|
5125 |
|
5126 |
-
#: tpl/toolbox/purge.tpl.php:
|
5127 |
msgid "Tag"
|
5128 |
msgstr ""
|
5129 |
|
5130 |
-
#: tpl/toolbox/purge.tpl.php:
|
5131 |
msgid ""
|
5132 |
"Purge pages by category name - e.g. %2$s should be used for the URL %1$s."
|
5133 |
msgstr ""
|
5134 |
|
5135 |
-
#: tpl/toolbox/purge.tpl.php:
|
5136 |
msgid "Purge pages by post ID."
|
5137 |
msgstr ""
|
5138 |
|
5139 |
-
#: tpl/toolbox/purge.tpl.php:
|
5140 |
msgid "Purge pages by tag name - e.g. %2$s should be used for the URL %1$s."
|
5141 |
msgstr ""
|
5142 |
|
5143 |
-
#: tpl/toolbox/purge.tpl.php:
|
5144 |
msgid "Purge pages by relative or full URL."
|
5145 |
msgstr ""
|
5146 |
|
5147 |
-
#: tpl/toolbox/purge.tpl.php:
|
5148 |
msgid "e.g. Use %s or %s."
|
5149 |
msgstr ""
|
5150 |
|
5151 |
-
#: tpl/toolbox/purge.tpl.php:
|
5152 |
msgid "Purge List"
|
5153 |
msgstr ""
|
5154 |
|
2 |
# This file is distributed under the same license as the LiteSpeed Cache package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: LiteSpeed Cache 4.1\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
|
7 |
+
"POT-Creation-Date: 2021-06-25 19:00:00+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
28 |
msgid "Purged!"
|
29 |
msgstr ""
|
30 |
|
31 |
+
#: src/activation.cls.php:491 src/activation.cls.php:496
|
32 |
msgid "Failed to upgrade."
|
33 |
msgstr ""
|
34 |
|
35 |
+
#: src/activation.cls.php:500
|
36 |
msgid "Upgraded successfully."
|
37 |
msgstr ""
|
38 |
|
49 |
msgid "Cache"
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: src/admin-display.cls.php:121 tpl/cdn/settings.tpl.php:194
|
53 |
msgid "CDN"
|
54 |
msgstr ""
|
55 |
|
56 |
+
#: src/admin-display.cls.php:123 src/gui.cls.php:583
|
57 |
+
#: tpl/dash/dashboard.tpl.php:55 tpl/dash/network_dash.tpl.php:27
|
58 |
msgid "Image Optimization"
|
59 |
msgstr ""
|
60 |
|
66 |
msgid "Database"
|
67 |
msgstr ""
|
68 |
|
69 |
+
#: src/admin-display.cls.php:129 src/lang.cls.php:211
|
70 |
msgid "Crawler"
|
71 |
msgstr ""
|
72 |
|
105 |
#: src/admin-display.cls.php:232 src/admin-display.cls.php:793
|
106 |
#: src/admin-display.cls.php:828 src/admin-display.cls.php:879
|
107 |
#: tpl/cache/settings-cache.tpl.php:19
|
108 |
+
#: tpl/cache/settings_inc.cache_mobile.tpl.php:70 tpl/cdn/settings.tpl.php:49
|
109 |
+
#: tpl/page_optm/settings_css.tpl.php:161
|
110 |
+
#: tpl/page_optm/settings_media.tpl.php:159
|
111 |
+
#: tpl/page_optm/settings_media.tpl.php:229
|
112 |
#: tpl/toolbox/settings-debug.tpl.php:34
|
113 |
msgid "ON"
|
114 |
msgstr ""
|
116 |
#: src/admin-display.cls.php:233 src/admin-display.cls.php:794
|
117 |
#: src/admin-display.cls.php:827 src/admin-display.cls.php:879
|
118 |
#: tpl/cache/settings-cache.tpl.php:19
|
119 |
+
#: tpl/cache/settings_inc.object.tpl.php:210 tpl/cdn/settings.tpl.php:54
|
120 |
#: tpl/page_optm/settings_js.tpl.php:76
|
121 |
+
#: tpl/page_optm/settings_media.tpl.php:162
|
122 |
#: tpl/toolbox/settings-debug.tpl.php:34
|
123 |
msgid "OFF"
|
124 |
msgstr ""
|
125 |
|
126 |
+
#: src/admin-display.cls.php:275 src/gui.cls.php:574
|
127 |
msgid "Settings"
|
128 |
msgstr ""
|
129 |
|
199 |
msgstr ""
|
200 |
|
201 |
#: src/admin-display.cls.php:1079 tpl/cache/settings-esi.tpl.php:95
|
202 |
+
#: tpl/page_optm/settings_css.tpl.php:163
|
203 |
#: tpl/page_optm/settings_html.tpl.php:85
|
204 |
#: tpl/page_optm/settings_media_exc.tpl.php:25
|
205 |
#: tpl/page_optm/settings_tuning.tpl.php:35
|
206 |
#: tpl/page_optm/settings_tuning.tpl.php:56
|
207 |
+
#: tpl/page_optm/settings_tuning.tpl.php:136
|
208 |
+
#: tpl/page_optm/settings_tuning.tpl.php:157
|
209 |
msgid "API"
|
210 |
msgstr ""
|
211 |
|
229 |
msgid "To do an exact match, add %s to the end of the URL."
|
230 |
msgstr ""
|
231 |
|
232 |
+
#: src/admin-display.cls.php:1097 src/doc.cls.php:62
|
233 |
msgid "One per line."
|
234 |
msgstr ""
|
235 |
|
277 |
msgid "Failed to communicate with Cloudflare"
|
278 |
msgstr ""
|
279 |
|
280 |
+
#: src/cloud.cls.php:331 src/cloud.cls.php:348 src/cloud.cls.php:379
|
281 |
+
#: src/cloud.cls.php:492 src/cloud.cls.php:826
|
282 |
msgid "Cloud Error"
|
283 |
msgstr ""
|
284 |
|
285 |
+
#: src/cloud.cls.php:379
|
286 |
msgid "No available Cloud Node."
|
287 |
msgstr ""
|
288 |
|
289 |
+
#: src/cloud.cls.php:492
|
290 |
msgid "Please try after %1$s for service %2$s."
|
291 |
msgstr ""
|
292 |
|
293 |
+
#: src/cloud.cls.php:575 src/cloud.cls.php:587
|
294 |
msgid "Failed to request via WordPress"
|
295 |
msgstr ""
|
296 |
|
297 |
+
#: src/cloud.cls.php:597
|
298 |
msgid ""
|
299 |
"We are working hard to improve your online service experience. The service "
|
300 |
"will be unavailable while we work. We apologize for any inconvenience."
|
301 |
msgstr ""
|
302 |
|
303 |
+
#: src/cloud.cls.php:606 src/cloud.cls.php:614 src/cloud.cls.php:862
|
304 |
msgid "Message from QUIC.cloud server"
|
305 |
msgstr ""
|
306 |
|
307 |
+
#: src/cloud.cls.php:622
|
308 |
msgid "Good news from QUIC.cloud server"
|
309 |
msgstr ""
|
310 |
|
311 |
+
#: src/cloud.cls.php:631
|
312 |
msgid "%1$s plugin version %2$s required for this action."
|
313 |
msgstr ""
|
314 |
|
315 |
+
#: src/cloud.cls.php:673 src/cloud.cls.php:851
|
316 |
msgid "Failed to communicate with QUIC.cloud server"
|
317 |
msgstr ""
|
318 |
|
319 |
+
#: src/cloud.cls.php:681
|
320 |
msgid ""
|
321 |
"Site not recognized. Domain Key has been automatically removed. Please "
|
322 |
"request a new one."
|
323 |
msgstr ""
|
324 |
|
325 |
+
#: src/cloud.cls.php:682 src/error.cls.php:48
|
326 |
msgid "Click here to set."
|
327 |
msgstr ""
|
328 |
|
329 |
+
#: src/cloud.cls.php:870
|
330 |
msgid ""
|
331 |
"Applied for Domain Key successfully. Please wait for result. Domain Key will "
|
332 |
"be automatically sent to your WordPress."
|
333 |
msgstr ""
|
334 |
|
335 |
+
#: src/cloud.cls.php:921
|
336 |
msgid ""
|
337 |
"Congratulations, your Domain Key has been approved! The setting has been "
|
338 |
"updated accordingly."
|
339 |
msgstr ""
|
340 |
|
341 |
+
#: src/cloud.cls.php:992
|
342 |
msgid "Domain Key hash mismatch"
|
343 |
msgstr ""
|
344 |
|
345 |
+
#: src/cloud.cls.php:1075
|
346 |
msgid "Sync credit allowance with Cloud Server successfully."
|
347 |
msgstr ""
|
348 |
|
349 |
+
#: src/conf.cls.php:693
|
350 |
msgid "Changed setting successfully."
|
351 |
msgstr ""
|
352 |
|
353 |
+
#: src/core.cls.php:270
|
354 |
msgid "Notified LiteSpeed Web Server to purge everything."
|
355 |
msgstr ""
|
356 |
|
357 |
+
#: src/core.cls.php:275
|
358 |
msgid "Notified LiteSpeed Web Server to purge the list."
|
359 |
msgstr ""
|
360 |
|
370 |
msgid "Sitemap created successfully: %d items"
|
371 |
msgstr ""
|
372 |
|
373 |
+
#: src/crawler.cls.php:771
|
374 |
msgid "Guest"
|
375 |
msgstr ""
|
376 |
|
377 |
+
#: src/crawler.cls.php:920
|
378 |
msgid "Manually added to blacklist"
|
379 |
msgstr ""
|
380 |
|
381 |
+
#: src/crawler.cls.php:923
|
382 |
msgid "Previously existed in blacklist"
|
383 |
msgstr ""
|
384 |
|
385 |
+
#: src/css.cls.php:435 src/placeholder.cls.php:573
|
386 |
msgid "Queue cleared successfully."
|
387 |
msgstr ""
|
388 |
|
389 |
+
#: src/css.cls.php:445
|
390 |
+
msgid "%1$s %2$s files left in queue"
|
391 |
+
msgstr ""
|
392 |
+
|
393 |
+
#: src/data.cls.php:210
|
394 |
msgid ""
|
395 |
"The database has been upgrading in the background since %s. This message "
|
396 |
"will disappear once upgrade is complete."
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: src/data.upgrade.func.php:73
|
400 |
msgid ""
|
401 |
"LiteSpeed Cache upgraded successfully. NOTE: Due to changes in this version, "
|
402 |
"the settings %1$s and %2$s have been turned OFF. Please turn them back on "
|
404 |
"errors."
|
405 |
msgstr ""
|
406 |
|
407 |
+
#: src/data.upgrade.func.php:73 src/lang.cls.php:114
|
408 |
msgid "JS Combine"
|
409 |
msgstr ""
|
410 |
|
411 |
+
#: src/data.upgrade.func.php:73
|
412 |
msgid "JS Defer"
|
413 |
msgstr ""
|
414 |
|
415 |
+
#: src/data.upgrade.func.php:74
|
416 |
msgid "Click here to settings"
|
417 |
msgstr ""
|
418 |
|
468 |
"are never accessed by any third party, except as necessary to obtain "
|
469 |
"technical support from the cache plugin vendor. Cache files expire on a "
|
470 |
"schedule set by the site administrator, but may easily be purged by the "
|
471 |
+
"admin before their natural expiration, if necessary. We may use QUIC.cloud "
|
472 |
+
"services to process & cache your data temporarily."
|
473 |
+
msgstr ""
|
474 |
+
|
475 |
+
#: src/doc.cls.php:25
|
476 |
+
msgid "Please see %s for more details."
|
477 |
msgstr ""
|
478 |
|
479 |
+
#: src/doc.cls.php:41 src/doc.cls.php:93 tpl/cdn/manage.tpl.php:66
|
480 |
+
#: tpl/dash/dashboard.tpl.php:49 tpl/img_optm/summary.tpl.php:62
|
481 |
#: tpl/img_optm/summary.tpl.php:102 tpl/inc/check_cache_disabled.php:42
|
482 |
msgid "Learn More"
|
483 |
msgstr ""
|
484 |
|
485 |
+
#: src/doc.cls.php:77
|
486 |
msgid "Both full and partial strings can be used."
|
487 |
msgstr ""
|
488 |
|
489 |
+
#: src/doc.cls.php:80
|
490 |
msgid "Both full URLs and partial strings can be used."
|
491 |
msgstr ""
|
492 |
|
493 |
+
#: src/doc.cls.php:92
|
494 |
msgid "This setting will edit the .htaccess file."
|
495 |
msgstr ""
|
496 |
|
497 |
+
#: src/doc.cls.php:105
|
498 |
msgid ""
|
499 |
+
"For online services to work correctly, you must whitelist all %s server IPs."
|
|
|
500 |
msgstr ""
|
501 |
|
502 |
+
#: src/doc.cls.php:106
|
503 |
msgid ""
|
504 |
"Before generating key, please verify all IPs on this list are whitelisted"
|
505 |
msgstr ""
|
506 |
|
507 |
+
#: src/doc.cls.php:107 tpl/general/settings.tpl.php:86
|
508 |
msgid "Current Online Server IPs"
|
509 |
msgstr ""
|
510 |
|
652 |
msgid "Failed to write to %s."
|
653 |
msgstr ""
|
654 |
|
655 |
+
#: src/gui.cls.php:80
|
656 |
msgid "Public Caches"
|
657 |
msgstr ""
|
658 |
|
659 |
+
#: src/gui.cls.php:81
|
660 |
msgid "Public Cache Hits"
|
661 |
msgstr ""
|
662 |
|
663 |
+
#: src/gui.cls.php:82
|
664 |
msgid "Private Caches"
|
665 |
msgstr ""
|
666 |
|
667 |
+
#: src/gui.cls.php:83
|
668 |
msgid "Private Cache Hits"
|
669 |
msgstr ""
|
670 |
|
671 |
+
#: src/gui.cls.php:393
|
672 |
msgid "Purge this page"
|
673 |
msgstr ""
|
674 |
|
675 |
+
#: src/gui.cls.php:401
|
676 |
msgid "Mark this page as "
|
677 |
msgstr ""
|
678 |
|
679 |
+
#: src/gui.cls.php:413
|
680 |
msgid "Forced cacheable"
|
681 |
msgstr ""
|
682 |
|
683 |
+
#: src/gui.cls.php:424
|
684 |
msgid "Non cacheable"
|
685 |
msgstr ""
|
686 |
|
687 |
+
#: src/gui.cls.php:435
|
688 |
msgid "Private cache"
|
689 |
msgstr ""
|
690 |
|
691 |
+
#: src/gui.cls.php:446
|
692 |
msgid "No optimization"
|
693 |
msgstr ""
|
694 |
|
695 |
+
#: src/gui.cls.php:454
|
696 |
msgid "More settings"
|
697 |
msgstr ""
|
698 |
|
699 |
+
#: src/gui.cls.php:461 src/gui.cls.php:469 src/gui.cls.php:477
|
700 |
+
#: src/gui.cls.php:486 src/gui.cls.php:496 src/gui.cls.php:506
|
701 |
+
#: src/gui.cls.php:516 src/gui.cls.php:526 src/gui.cls.php:592
|
702 |
+
#: src/gui.cls.php:600 src/gui.cls.php:608 src/gui.cls.php:617
|
703 |
+
#: src/gui.cls.php:627 src/gui.cls.php:637 src/gui.cls.php:647
|
704 |
+
#: src/gui.cls.php:657 src/gui.cls.php:667
|
705 |
+
#: tpl/page_optm/settings_media.tpl.php:125 tpl/toolbox/purge.tpl.php:37
|
706 |
+
#: tpl/toolbox/purge.tpl.php:43 tpl/toolbox/purge.tpl.php:52
|
707 |
+
#: tpl/toolbox/purge.tpl.php:61 tpl/toolbox/purge.tpl.php:70
|
708 |
+
#: tpl/toolbox/purge.tpl.php:79 tpl/toolbox/purge.tpl.php:88
|
709 |
+
#: tpl/toolbox/purge.tpl.php:97
|
|
|
710 |
msgid "Purge All"
|
711 |
msgstr ""
|
712 |
|
713 |
+
#: src/gui.cls.php:469 src/gui.cls.php:550 src/gui.cls.php:600
|
714 |
msgid "LSCache"
|
715 |
msgstr ""
|
716 |
|
717 |
+
#: src/gui.cls.php:477 src/gui.cls.php:608 tpl/toolbox/purge.tpl.php:43
|
718 |
msgid "CSS/JS Cache"
|
719 |
msgstr ""
|
720 |
|
721 |
+
#: src/gui.cls.php:486 src/gui.cls.php:627 src/lang.cls.php:82
|
722 |
+
#: tpl/dash/dashboard.tpl.php:364 tpl/toolbox/purge.tpl.php:52
|
723 |
msgid "Object Cache"
|
724 |
msgstr ""
|
725 |
|
726 |
+
#: src/gui.cls.php:496 src/gui.cls.php:637 tpl/toolbox/purge.tpl.php:61
|
727 |
msgid "Opcode Cache"
|
728 |
msgstr ""
|
729 |
|
730 |
+
#: src/gui.cls.php:516 src/gui.cls.php:657
|
731 |
+
#: tpl/page_optm/settings_media.tpl.php:125 tpl/toolbox/purge.tpl.php:79
|
|
|
|
|
|
|
|
|
732 |
msgid "LQIP Cache"
|
733 |
msgstr ""
|
734 |
|
735 |
+
#: src/gui.cls.php:526 src/gui.cls.php:667 src/lang.cls.php:142
|
736 |
+
#: tpl/toolbox/purge.tpl.php:88
|
737 |
msgid "Gravatar Cache"
|
738 |
msgstr ""
|
739 |
|
740 |
+
#: src/gui.cls.php:550
|
741 |
msgid "LiteSpeed Cache Purge All"
|
742 |
msgstr ""
|
743 |
|
744 |
+
#: src/gui.cls.php:566 tpl/cdn/entry.tpl.php:7 tpl/cdn/settings.tpl.php:194
|
745 |
#: tpl/db_optm/entry.tpl.php:6
|
746 |
msgid "Manage"
|
747 |
msgstr ""
|
748 |
|
749 |
+
#: src/gui.cls.php:617 tpl/cdn/manage.tpl.php:17
|
750 |
msgid "Cloudflare"
|
751 |
msgstr ""
|
752 |
|
753 |
+
#: src/gui.cls.php:686 tpl/img_optm/summary.tpl.php:175
|
754 |
msgid "Remove all previous unfinished image optimization requests."
|
755 |
msgstr ""
|
756 |
|
757 |
+
#: src/gui.cls.php:687 tpl/img_optm/summary.tpl.php:177
|
758 |
msgid "Clean Up Unfinished Data"
|
759 |
msgstr ""
|
760 |
|
761 |
+
#: src/gui.cls.php:705
|
762 |
msgid "Install %s"
|
763 |
msgstr ""
|
764 |
|
765 |
+
#: src/gui.cls.php:706
|
766 |
msgid "Install Now"
|
767 |
msgstr ""
|
768 |
|
769 |
+
#: src/gui.cls.php:725
|
770 |
msgid ""
|
771 |
"<a href=\"%1$s\" %2$s>View version %3$s details</a> or <a href=\"%4$s\" %5$s "
|
772 |
"target=\"_blank\">update now</a>."
|
773 |
msgstr ""
|
774 |
|
775 |
+
#: src/gui.cls.php:728
|
776 |
msgid "View %1$s version %2$s details"
|
777 |
msgstr ""
|
778 |
|
779 |
+
#: src/gui.cls.php:733
|
780 |
msgid "Update %s now"
|
781 |
msgstr ""
|
782 |
|
783 |
+
#: src/htaccess.cls.php:352
|
784 |
msgid "Mobile Agent Rules"
|
785 |
msgstr ""
|
786 |
|
787 |
+
#: src/htaccess.cls.php:811
|
788 |
msgid ""
|
789 |
"<p>Please add/replace the following codes into the beginning of %1$s:</p> "
|
790 |
"%2$s"
|
791 |
msgstr ""
|
792 |
|
793 |
+
#: src/htaccess.cls.php:878
|
794 |
msgid "File Saved."
|
795 |
msgstr ""
|
796 |
|
898 |
msgid "Import failed due to file error."
|
899 |
msgstr ""
|
900 |
|
901 |
+
#: src/import.cls.php:132
|
902 |
msgid "Imported setting file %s successfully."
|
903 |
msgstr ""
|
904 |
|
905 |
+
#: src/import.cls.php:156
|
906 |
msgid "Reset successfully."
|
907 |
msgstr ""
|
908 |
|
910 |
msgid "Images not requested"
|
911 |
msgstr ""
|
912 |
|
913 |
+
#: src/lang.cls.php:24 tpl/dash/dashboard.tpl.php:305
|
914 |
msgid "Images requested"
|
915 |
msgstr ""
|
916 |
|
917 |
+
#: src/lang.cls.php:25 tpl/dash/dashboard.tpl.php:315
|
918 |
msgid "Images notified to pull"
|
919 |
msgstr ""
|
920 |
|
958 |
msgid "Domain Key"
|
959 |
msgstr ""
|
960 |
|
961 |
+
#: src/lang.cls.php:55
|
962 |
+
msgid "Guest Mode User Agents"
|
963 |
+
msgstr ""
|
964 |
+
|
965 |
#: src/lang.cls.php:56
|
966 |
+
msgid "Guest Mode IPs"
|
967 |
+
msgstr ""
|
968 |
+
|
969 |
+
#: src/lang.cls.php:58
|
970 |
msgid "Enable Cache"
|
971 |
msgstr ""
|
972 |
|
973 |
+
#: src/lang.cls.php:59 tpl/dash/dashboard.tpl.php:365
|
974 |
msgid "Browser Cache"
|
975 |
msgstr ""
|
976 |
|
977 |
+
#: src/lang.cls.php:60
|
978 |
msgid "Default Public Cache TTL"
|
979 |
msgstr ""
|
980 |
|
981 |
+
#: src/lang.cls.php:61
|
982 |
msgid "Default Private Cache TTL"
|
983 |
msgstr ""
|
984 |
|
985 |
+
#: src/lang.cls.php:62
|
986 |
msgid "Default Front Page TTL"
|
987 |
msgstr ""
|
988 |
|
989 |
+
#: src/lang.cls.php:63
|
990 |
msgid "Default Feed TTL"
|
991 |
msgstr ""
|
992 |
|
993 |
+
#: src/lang.cls.php:64
|
994 |
msgid "Default REST TTL"
|
995 |
msgstr ""
|
996 |
|
997 |
+
#: src/lang.cls.php:65
|
998 |
msgid "Default HTTP Status Code Page TTL"
|
999 |
msgstr ""
|
1000 |
|
1001 |
+
#: src/lang.cls.php:66
|
1002 |
msgid "Browser Cache TTL"
|
1003 |
msgstr ""
|
1004 |
|
1005 |
+
#: src/lang.cls.php:67
|
1006 |
msgid "Automatically Upgrade"
|
1007 |
msgstr ""
|
1008 |
|
1009 |
+
#: src/lang.cls.php:68
|
1010 |
msgid "Guest Mode"
|
1011 |
msgstr ""
|
1012 |
|
1013 |
+
#: src/lang.cls.php:69
|
1014 |
msgid "Guest Optimization"
|
1015 |
msgstr ""
|
1016 |
|
1017 |
+
#: src/lang.cls.php:70
|
1018 |
msgid "Notifications"
|
1019 |
msgstr ""
|
1020 |
|
1021 |
+
#: src/lang.cls.php:71
|
1022 |
msgid "Cache Logged-in Users"
|
1023 |
msgstr ""
|
1024 |
|
1025 |
+
#: src/lang.cls.php:72
|
1026 |
msgid "Cache Commenters"
|
1027 |
msgstr ""
|
1028 |
|
1029 |
+
#: src/lang.cls.php:73
|
1030 |
msgid "Cache REST API"
|
1031 |
msgstr ""
|
1032 |
|
1033 |
+
#: src/lang.cls.php:74
|
1034 |
msgid "Cache Login Page"
|
1035 |
msgstr ""
|
1036 |
|
1037 |
+
#: src/lang.cls.php:75
|
1038 |
msgid "Cache favicon.ico"
|
1039 |
msgstr ""
|
1040 |
|
1041 |
+
#: src/lang.cls.php:76
|
1042 |
msgid "Cache PHP Resources"
|
1043 |
msgstr ""
|
1044 |
|
1045 |
+
#: src/lang.cls.php:77 tpl/cache/settings_inc.cache_mobile.tpl.php:70
|
1046 |
msgid "Cache Mobile"
|
1047 |
msgstr ""
|
1048 |
|
1049 |
+
#: src/lang.cls.php:78 tpl/cache/settings_inc.cache_mobile.tpl.php:70
|
1050 |
msgid "List of Mobile User Agents"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
+
#: src/lang.cls.php:79
|
1054 |
msgid "Private Cached URIs"
|
1055 |
msgstr ""
|
1056 |
|
1057 |
+
#: src/lang.cls.php:80
|
1058 |
msgid "Drop Query String"
|
1059 |
msgstr ""
|
1060 |
|
1061 |
+
#: src/lang.cls.php:83
|
1062 |
msgid "Method"
|
1063 |
msgstr ""
|
1064 |
|
1065 |
+
#: src/lang.cls.php:84
|
1066 |
msgid "Host"
|
1067 |
msgstr ""
|
1068 |
|
1069 |
+
#: src/lang.cls.php:85
|
1070 |
msgid "Port"
|
1071 |
msgstr ""
|
1072 |
|
1073 |
+
#: src/lang.cls.php:86
|
1074 |
msgid "Default Object Lifetime"
|
1075 |
msgstr ""
|
1076 |
|
1077 |
+
#: src/lang.cls.php:87
|
1078 |
msgid "Username"
|
1079 |
msgstr ""
|
1080 |
|
1081 |
+
#: src/lang.cls.php:88
|
1082 |
msgid "Password"
|
1083 |
msgstr ""
|
1084 |
|
1085 |
+
#: src/lang.cls.php:89
|
1086 |
msgid "Redis Database ID"
|
1087 |
msgstr ""
|
1088 |
|
1089 |
+
#: src/lang.cls.php:90
|
1090 |
msgid "Global Groups"
|
1091 |
msgstr ""
|
1092 |
|
1093 |
+
#: src/lang.cls.php:91
|
1094 |
msgid "Do Not Cache Groups"
|
1095 |
msgstr ""
|
1096 |
|
1097 |
+
#: src/lang.cls.php:92
|
1098 |
msgid "Persistent Connection"
|
1099 |
msgstr ""
|
1100 |
|
1101 |
+
#: src/lang.cls.php:93
|
1102 |
+
msgid "Cache WP-Admin"
|
1103 |
msgstr ""
|
1104 |
|
1105 |
+
#: src/lang.cls.php:94
|
1106 |
msgid "Store Transients"
|
1107 |
msgstr ""
|
1108 |
|
1109 |
+
#: src/lang.cls.php:96
|
1110 |
msgid "Purge All On Upgrade"
|
1111 |
msgstr ""
|
1112 |
|
1113 |
+
#: src/lang.cls.php:97
|
1114 |
msgid "Serve Stale"
|
1115 |
msgstr ""
|
1116 |
|
1117 |
+
#: src/lang.cls.php:98 tpl/cache/settings-purge.tpl.php:130
|
1118 |
msgid "Scheduled Purge URLs"
|
1119 |
msgstr ""
|
1120 |
|
1121 |
+
#: src/lang.cls.php:99 tpl/cache/settings-purge.tpl.php:105
|
1122 |
msgid "Scheduled Purge Time"
|
1123 |
msgstr ""
|
1124 |
|
1125 |
+
#: src/lang.cls.php:100
|
1126 |
msgid "Force Cache URIs"
|
1127 |
msgstr ""
|
1128 |
|
1129 |
+
#: src/lang.cls.php:101
|
1130 |
msgid "Force Public Cache URIs"
|
1131 |
msgstr ""
|
1132 |
|
1133 |
+
#: src/lang.cls.php:102
|
1134 |
msgid "Do Not Cache URIs"
|
1135 |
msgstr ""
|
1136 |
|
1137 |
+
#: src/lang.cls.php:103
|
1138 |
msgid "Do Not Cache Query Strings"
|
1139 |
msgstr ""
|
1140 |
|
1141 |
+
#: src/lang.cls.php:104
|
1142 |
msgid "Do Not Cache Categories"
|
1143 |
msgstr ""
|
1144 |
|
1145 |
+
#: src/lang.cls.php:105
|
1146 |
msgid "Do Not Cache Tags"
|
1147 |
msgstr ""
|
1148 |
|
1149 |
+
#: src/lang.cls.php:106
|
1150 |
msgid "Do Not Cache Roles"
|
1151 |
msgstr ""
|
1152 |
|
1153 |
+
#: src/lang.cls.php:107
|
1154 |
msgid "CSS Minify"
|
1155 |
msgstr ""
|
1156 |
|
1157 |
+
#: src/lang.cls.php:108
|
1158 |
msgid "CSS Combine"
|
1159 |
msgstr ""
|
1160 |
|
1161 |
+
#: src/lang.cls.php:109
|
1162 |
msgid "CSS Combine External and Inline"
|
1163 |
msgstr ""
|
1164 |
|
1165 |
+
#: src/lang.cls.php:110
|
1166 |
msgid "Generate UCSS"
|
1167 |
msgstr ""
|
1168 |
|
1169 |
+
#: src/lang.cls.php:111
|
1170 |
msgid "UCSS Whitelist"
|
1171 |
msgstr ""
|
1172 |
|
1173 |
+
#: src/lang.cls.php:112
|
1174 |
msgid "CSS HTTP/2 Push"
|
1175 |
msgstr ""
|
1176 |
|
1177 |
+
#: src/lang.cls.php:113
|
1178 |
msgid "JS Minify"
|
1179 |
msgstr ""
|
1180 |
|
1181 |
+
#: src/lang.cls.php:115
|
1182 |
msgid "JS Combine External and Inline"
|
1183 |
msgstr ""
|
1184 |
|
1185 |
+
#: src/lang.cls.php:116
|
1186 |
msgid "JS HTTP/2 Push"
|
1187 |
msgstr ""
|
1188 |
|
1189 |
+
#: src/lang.cls.php:117
|
1190 |
msgid "HTML Minify"
|
1191 |
msgstr ""
|
1192 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1193 |
#: src/lang.cls.php:118
|
1194 |
+
msgid "HTML Lazy Load Selectors"
|
1195 |
msgstr ""
|
1196 |
|
1197 |
+
#: src/lang.cls.php:119 tpl/page_optm/settings_tuning.tpl.php:119
|
1198 |
+
msgid "Load CSS Asynchronously"
|
1199 |
msgstr ""
|
1200 |
|
1201 |
#: src/lang.cls.php:120
|
1202 |
+
msgid "CCSS Per URL"
|
1203 |
msgstr ""
|
1204 |
|
1205 |
#: src/lang.cls.php:121
|
1206 |
+
msgid "Inline CSS Async Lib"
|
1207 |
msgstr ""
|
1208 |
|
1209 |
#: src/lang.cls.php:122
|
1210 |
+
msgid "Font Display Optimization"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
#: src/lang.cls.php:123
|
1214 |
+
msgid "Load JS Deferred"
|
1215 |
msgstr ""
|
1216 |
|
1217 |
#: src/lang.cls.php:124
|
1247 |
msgstr ""
|
1248 |
|
1249 |
#: src/lang.cls.php:132
|
1250 |
+
msgid "Separate CCSS Cache Post Types"
|
1251 |
msgstr ""
|
1252 |
|
1253 |
#: src/lang.cls.php:133
|
1254 |
+
msgid "Separate CCSS Cache URIs"
|
1255 |
msgstr ""
|
1256 |
|
1257 |
#: src/lang.cls.php:134
|
1258 |
+
msgid "JS Deferred Excludes"
|
1259 |
msgstr ""
|
1260 |
|
1261 |
#: src/lang.cls.php:135
|
1262 |
+
msgid "Guest Mode JS Excludes"
|
1263 |
msgstr ""
|
1264 |
|
1265 |
#: src/lang.cls.php:136
|
1266 |
+
msgid "Remove WordPress Emoji"
|
1267 |
msgstr ""
|
1268 |
|
1269 |
#: src/lang.cls.php:137
|
1270 |
+
msgid "Remove Noscript Tags"
|
1271 |
+
msgstr ""
|
1272 |
+
|
1273 |
+
#: src/lang.cls.php:138
|
1274 |
+
msgid "URI Excludes"
|
1275 |
+
msgstr ""
|
1276 |
+
|
1277 |
+
#: src/lang.cls.php:139
|
1278 |
+
msgid "Optimize for Guests Only"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
#: src/lang.cls.php:140
|
1282 |
+
msgid "Role Excludes"
|
1283 |
+
msgstr ""
|
1284 |
+
|
1285 |
+
#: src/lang.cls.php:143
|
1286 |
msgid "Gravatar Cache Cron"
|
1287 |
msgstr ""
|
1288 |
|
1289 |
+
#: src/lang.cls.php:144
|
1290 |
msgid "Gravatar Cache TTL"
|
1291 |
msgstr ""
|
1292 |
|
1293 |
+
#: src/lang.cls.php:146
|
1294 |
msgid "Lazy Load Images"
|
1295 |
msgstr ""
|
1296 |
|
1297 |
+
#: src/lang.cls.php:147
|
1298 |
msgid "Lazy Load Image Excludes"
|
1299 |
msgstr ""
|
1300 |
|
1301 |
+
#: src/lang.cls.php:148
|
1302 |
msgid "Lazy Load Image Class Name Excludes"
|
1303 |
msgstr ""
|
1304 |
|
1305 |
+
#: src/lang.cls.php:149
|
1306 |
msgid "Lazy Load Image Parent Class Name Excludes"
|
1307 |
msgstr ""
|
1308 |
|
1309 |
+
#: src/lang.cls.php:150
|
1310 |
msgid "Lazy Load Iframe Class Name Excludes"
|
1311 |
msgstr ""
|
1312 |
|
1313 |
+
#: src/lang.cls.php:151
|
1314 |
msgid "Lazy Load Iframe Parent Class Name Excludes"
|
1315 |
msgstr ""
|
1316 |
|
1317 |
+
#: src/lang.cls.php:152
|
1318 |
msgid "Lazy Load URI Excludes"
|
1319 |
msgstr ""
|
1320 |
|
1321 |
+
#: src/lang.cls.php:153
|
1322 |
msgid "LQIP Excludes"
|
1323 |
msgstr ""
|
1324 |
|
1325 |
+
#: src/lang.cls.php:154
|
1326 |
msgid "Basic Image Placeholder"
|
1327 |
msgstr ""
|
1328 |
|
1329 |
+
#: src/lang.cls.php:155
|
1330 |
msgid "Responsive Placeholder"
|
1331 |
msgstr ""
|
1332 |
|
1333 |
+
#: src/lang.cls.php:156
|
1334 |
msgid "Responsive Placeholder Color"
|
1335 |
msgstr ""
|
1336 |
|
1337 |
+
#: src/lang.cls.php:157
|
1338 |
msgid "Responsive Placeholder SVG"
|
1339 |
msgstr ""
|
1340 |
|
1341 |
+
#: src/lang.cls.php:158
|
1342 |
msgid "LQIP Cloud Generator"
|
1343 |
msgstr ""
|
1344 |
|
1345 |
+
#: src/lang.cls.php:159
|
1346 |
msgid "LQIP Quality"
|
1347 |
msgstr ""
|
1348 |
|
1349 |
+
#: src/lang.cls.php:160
|
1350 |
msgid "LQIP Minimum Dimensions"
|
1351 |
msgstr ""
|
1352 |
|
1353 |
+
#: src/lang.cls.php:162
|
1354 |
msgid "Generate LQIP In Background"
|
1355 |
msgstr ""
|
1356 |
|
1357 |
+
#: src/lang.cls.php:163
|
1358 |
msgid "Lazy Load Iframes"
|
1359 |
msgstr ""
|
1360 |
|
1361 |
+
#: src/lang.cls.php:164
|
1362 |
msgid "Add Missing Sizes"
|
1363 |
msgstr ""
|
1364 |
|
1365 |
+
#: src/lang.cls.php:165
|
1366 |
msgid "Inline Lazy Load Images Library"
|
1367 |
msgstr ""
|
1368 |
|
1369 |
+
#: src/lang.cls.php:166
|
1370 |
msgid "Auto Request Cron"
|
1371 |
msgstr ""
|
1372 |
|
1373 |
+
#: src/lang.cls.php:167
|
1374 |
msgid "Auto Pull Cron"
|
1375 |
msgstr ""
|
1376 |
|
1377 |
+
#: src/lang.cls.php:168
|
1378 |
msgid "Optimize Original Images"
|
1379 |
msgstr ""
|
1380 |
|
1381 |
+
#: src/lang.cls.php:169
|
1382 |
msgid "Remove Original Backups"
|
1383 |
msgstr ""
|
1384 |
|
1385 |
+
#: src/lang.cls.php:170
|
1386 |
msgid "Create WebP Versions"
|
1387 |
msgstr ""
|
1388 |
|
1389 |
+
#: src/lang.cls.php:171
|
1390 |
msgid "Optimize Losslessly"
|
1391 |
msgstr ""
|
1392 |
|
1393 |
+
#: src/lang.cls.php:172
|
1394 |
msgid "Preserve EXIF/XMP data"
|
1395 |
msgstr ""
|
1396 |
|
1397 |
+
#: src/lang.cls.php:173
|
1398 |
msgid "WebP Attribute To Replace"
|
1399 |
msgstr ""
|
1400 |
|
1401 |
+
#: src/lang.cls.php:174
|
1402 |
msgid "WebP For Extra srcset"
|
1403 |
msgstr ""
|
1404 |
|
1405 |
+
#: src/lang.cls.php:175
|
1406 |
msgid "WordPress Image Quality Control"
|
1407 |
msgstr ""
|
1408 |
|
1409 |
+
#: src/lang.cls.php:176 tpl/esi_widget_edit.php:36
|
1410 |
msgid "Enable ESI"
|
1411 |
msgstr ""
|
1412 |
|
1413 |
+
#: src/lang.cls.php:177
|
1414 |
msgid "Cache Admin Bar"
|
1415 |
msgstr ""
|
1416 |
|
1417 |
+
#: src/lang.cls.php:178
|
1418 |
msgid "Cache Comment Form"
|
1419 |
msgstr ""
|
1420 |
|
1421 |
+
#: src/lang.cls.php:179
|
1422 |
msgid "ESI Nonces"
|
1423 |
msgstr ""
|
1424 |
|
1425 |
+
#: src/lang.cls.php:180 tpl/page_optm/settings_css.tpl.php:100
|
1426 |
+
#: tpl/page_optm/settings_css.tpl.php:199
|
1427 |
msgid "Vary Group"
|
1428 |
msgstr ""
|
1429 |
|
1430 |
+
#: src/lang.cls.php:181
|
1431 |
msgid "Purge All Hooks"
|
1432 |
msgstr ""
|
1433 |
|
1434 |
+
#: src/lang.cls.php:182
|
1435 |
msgid "Improve HTTP/HTTPS Compatibility"
|
1436 |
msgstr ""
|
1437 |
|
1438 |
+
#: src/lang.cls.php:183
|
1439 |
msgid "Instant Click"
|
1440 |
msgstr ""
|
1441 |
|
1442 |
+
#: src/lang.cls.php:184
|
1443 |
msgid "Do Not Cache Cookies"
|
1444 |
msgstr ""
|
1445 |
|
1446 |
+
#: src/lang.cls.php:185
|
1447 |
msgid "Do Not Cache User Agents"
|
1448 |
msgstr ""
|
1449 |
|
1450 |
+
#: src/lang.cls.php:186
|
1451 |
msgid "Login Cookie"
|
1452 |
msgstr ""
|
1453 |
|
1454 |
+
#: src/lang.cls.php:187
|
1455 |
msgid "Image WebP Replacement"
|
1456 |
msgstr ""
|
1457 |
|
1458 |
+
#: src/lang.cls.php:189
|
1459 |
msgid "Frontend .htaccess Path"
|
1460 |
msgstr ""
|
1461 |
|
1462 |
+
#: src/lang.cls.php:190
|
1463 |
msgid "Backend .htaccess Path"
|
1464 |
msgstr ""
|
1465 |
|
1466 |
+
#: src/lang.cls.php:191
|
1467 |
msgid "Frontend Heartbeat Control"
|
1468 |
msgstr ""
|
1469 |
|
1470 |
+
#: src/lang.cls.php:192
|
1471 |
msgid "Frontend Heartbeat TTL"
|
1472 |
msgstr ""
|
1473 |
|
1474 |
+
#: src/lang.cls.php:193
|
1475 |
msgid "Backend Heartbeat Control"
|
1476 |
msgstr ""
|
1477 |
|
1478 |
+
#: src/lang.cls.php:194
|
1479 |
msgid "Backend Heartbeat TTL"
|
1480 |
msgstr ""
|
1481 |
|
1482 |
+
#: src/lang.cls.php:195
|
1483 |
msgid "Editor Heartbeat"
|
1484 |
msgstr ""
|
1485 |
|
1486 |
+
#: src/lang.cls.php:196
|
1487 |
msgid "Editor Heartbeat TTL"
|
1488 |
msgstr ""
|
1489 |
|
1490 |
+
#: src/lang.cls.php:198
|
1491 |
msgid "QUIC.cloud CDN"
|
1492 |
msgstr ""
|
1493 |
|
1494 |
+
#: src/lang.cls.php:199
|
1495 |
msgid "Use CDN Mapping"
|
1496 |
msgstr ""
|
1497 |
|
1498 |
+
#: src/lang.cls.php:200
|
1499 |
msgid "CDN URL"
|
1500 |
msgstr ""
|
1501 |
|
1502 |
+
#: src/lang.cls.php:201
|
1503 |
msgid "Include Images"
|
1504 |
msgstr ""
|
1505 |
|
1506 |
+
#: src/lang.cls.php:202
|
1507 |
msgid "Include CSS"
|
1508 |
msgstr ""
|
1509 |
|
1510 |
+
#: src/lang.cls.php:203
|
1511 |
msgid "Include JS"
|
1512 |
msgstr ""
|
1513 |
|
1514 |
+
#: src/lang.cls.php:204 tpl/cdn/settings.tpl.php:102
|
1515 |
msgid "Include File Types"
|
1516 |
msgstr ""
|
1517 |
|
1518 |
+
#: src/lang.cls.php:205
|
1519 |
msgid "HTML Attribute To Replace"
|
1520 |
msgstr ""
|
1521 |
|
1522 |
+
#: src/lang.cls.php:206
|
1523 |
msgid "Original URLs"
|
1524 |
msgstr ""
|
1525 |
|
1526 |
+
#: src/lang.cls.php:207
|
1527 |
msgid "Included Directories"
|
1528 |
msgstr ""
|
1529 |
|
1530 |
+
#: src/lang.cls.php:208
|
1531 |
msgid "Exclude Path"
|
1532 |
msgstr ""
|
1533 |
|
1534 |
+
#: src/lang.cls.php:209
|
1535 |
msgid "Cloudflare API"
|
1536 |
msgstr ""
|
1537 |
|
1538 |
+
#: src/lang.cls.php:212
|
1539 |
msgid "Delay"
|
1540 |
msgstr ""
|
1541 |
|
1542 |
+
#: src/lang.cls.php:213
|
1543 |
msgid "Run Duration"
|
1544 |
msgstr ""
|
1545 |
|
1546 |
+
#: src/lang.cls.php:214
|
1547 |
msgid "Interval Between Runs"
|
1548 |
msgstr ""
|
1549 |
|
1550 |
+
#: src/lang.cls.php:215
|
1551 |
msgid "Crawl Interval"
|
1552 |
msgstr ""
|
1553 |
|
1554 |
+
#: src/lang.cls.php:216
|
1555 |
msgid "Threads"
|
1556 |
msgstr ""
|
1557 |
|
1558 |
+
#: src/lang.cls.php:217
|
1559 |
msgid "Timeout"
|
1560 |
msgstr ""
|
1561 |
|
1562 |
+
#: src/lang.cls.php:218
|
1563 |
msgid "Server Load Limit"
|
1564 |
msgstr ""
|
1565 |
|
1566 |
+
#: src/lang.cls.php:219
|
1567 |
msgid "Role Simulation"
|
1568 |
msgstr ""
|
1569 |
|
1570 |
+
#: src/lang.cls.php:220
|
1571 |
msgid "Cookie Simulation"
|
1572 |
msgstr ""
|
1573 |
|
1574 |
+
#: src/lang.cls.php:221
|
1575 |
msgid "Custom Sitemap"
|
1576 |
msgstr ""
|
1577 |
|
1578 |
+
#: src/lang.cls.php:222
|
1579 |
msgid "Drop Domain from Sitemap"
|
1580 |
msgstr ""
|
1581 |
|
1582 |
+
#: src/lang.cls.php:223
|
1583 |
msgid "Sitemap Timeout"
|
1584 |
msgstr ""
|
1585 |
|
1586 |
+
#: src/lang.cls.php:225 tpl/inc/disabled_all.php:5
|
1587 |
msgid "Disable All Features"
|
1588 |
msgstr ""
|
1589 |
|
1590 |
+
#: src/lang.cls.php:226 tpl/toolbox/log_viewer.tpl.php:7
|
1591 |
msgid "Debug Log"
|
1592 |
msgstr ""
|
1593 |
|
1594 |
+
#: src/lang.cls.php:227
|
1595 |
msgid "Admin IPs"
|
1596 |
msgstr ""
|
1597 |
|
1598 |
+
#: src/lang.cls.php:228
|
1599 |
msgid "Debug Level"
|
1600 |
msgstr ""
|
1601 |
|
1602 |
+
#: src/lang.cls.php:229
|
1603 |
msgid "Log File Size Limit"
|
1604 |
msgstr ""
|
1605 |
|
1606 |
+
#: src/lang.cls.php:230
|
1607 |
msgid "Log Cookies"
|
1608 |
msgstr ""
|
1609 |
|
1610 |
+
#: src/lang.cls.php:231
|
1611 |
msgid "Collapse Query Strings"
|
1612 |
msgstr ""
|
1613 |
|
1614 |
+
#: src/lang.cls.php:232
|
1615 |
msgid "Debug URI Includes"
|
1616 |
msgstr ""
|
1617 |
|
1618 |
+
#: src/lang.cls.php:233
|
1619 |
msgid "Debug URI Excludes"
|
1620 |
msgstr ""
|
1621 |
|
1622 |
+
#: src/lang.cls.php:235
|
1623 |
msgid "Revisions Max Number"
|
1624 |
msgstr ""
|
1625 |
|
1626 |
+
#: src/lang.cls.php:236
|
1627 |
msgid "Revisions Max Age"
|
1628 |
msgstr ""
|
1629 |
|
1724 |
msgid "LQIP image preview for size %s"
|
1725 |
msgstr ""
|
1726 |
|
1727 |
+
#: src/purge.cls.php:175
|
1728 |
msgid "Purged all caches successfully."
|
1729 |
msgstr ""
|
1730 |
|
1731 |
+
#: src/purge.cls.php:194
|
1732 |
msgid "Notified LiteSpeed Web Server to purge all LSCache entries."
|
1733 |
msgstr ""
|
1734 |
|
1735 |
+
#: src/purge.cls.php:214
|
1736 |
msgid "Cleaned all Critical CSS files."
|
1737 |
msgstr ""
|
1738 |
|
1739 |
+
#: src/purge.cls.php:231
|
1740 |
msgid "Cleaned all LQIP files."
|
1741 |
msgstr ""
|
1742 |
|
1743 |
+
#: src/purge.cls.php:248
|
1744 |
msgid "Cleaned all Gravatar files."
|
1745 |
msgstr ""
|
1746 |
|
1747 |
+
#: src/purge.cls.php:274
|
|
|
|
|
|
|
|
|
1748 |
msgid "Notified LiteSpeed Web Server to purge CSS/JS entries."
|
1749 |
msgstr ""
|
1750 |
|
1751 |
+
#: src/purge.cls.php:290
|
1752 |
msgid "Opcode cache is not enabled."
|
1753 |
msgstr ""
|
1754 |
|
1755 |
+
#: src/purge.cls.php:302
|
1756 |
msgid "Reset the entire opcode cache successfully."
|
1757 |
msgstr ""
|
1758 |
|
1759 |
+
#: src/purge.cls.php:330
|
1760 |
msgid "Object cache is not enabled."
|
1761 |
msgstr ""
|
1762 |
|
1763 |
+
#: src/purge.cls.php:343
|
1764 |
msgid "Purge all object caches successfully."
|
1765 |
msgstr ""
|
1766 |
|
1767 |
+
#: src/purge.cls.php:526
|
1768 |
msgid "Notified LiteSpeed Web Server to purge the front page."
|
1769 |
msgstr ""
|
1770 |
|
1771 |
+
#: src/purge.cls.php:539
|
1772 |
msgid "Notified LiteSpeed Web Server to purge all pages."
|
1773 |
msgstr ""
|
1774 |
|
1775 |
+
#: src/purge.cls.php:558
|
1776 |
msgid "Notified LiteSpeed Web Server to purge error pages."
|
1777 |
msgstr ""
|
1778 |
|
1779 |
+
#: src/purge.cls.php:585
|
1780 |
msgid "Purge category %s"
|
1781 |
msgstr ""
|
1782 |
|
1783 |
+
#: src/purge.cls.php:612
|
1784 |
msgid "Purge tag %s"
|
1785 |
msgstr ""
|
1786 |
|
1787 |
+
#: src/purge.cls.php:643
|
1788 |
msgid "Purge url %s"
|
1789 |
msgstr ""
|
1790 |
|
1791 |
+
#: src/task.cls.php:120
|
1792 |
msgid "Every Minute"
|
1793 |
msgstr ""
|
1794 |
|
1795 |
+
#: src/task.cls.php:139
|
1796 |
msgid "LiteSpeed Crawler Cron"
|
1797 |
msgstr ""
|
1798 |
|
1816 |
msgid "»"
|
1817 |
msgstr ""
|
1818 |
|
1819 |
+
#: thirdparty/woocommerce.content.tpl.php:16
|
1820 |
msgid "WooCommerce Settings"
|
1821 |
msgstr ""
|
1822 |
|
1823 |
+
#: thirdparty/woocommerce.content.tpl.php:21
|
1824 |
#: tpl/cache/settings-advanced.tpl.php:12
|
1825 |
#: tpl/cache/settings_inc.browser.tpl.php:12 tpl/toolbox/heartbeat.tpl.php:14
|
1826 |
#: tpl/toolbox/report.tpl.php:29
|
1827 |
msgid "NOTICE:"
|
1828 |
msgstr ""
|
1829 |
|
1830 |
+
#: thirdparty/woocommerce.content.tpl.php:22
|
1831 |
msgid "After verifying that the cache works in general, please test the cart."
|
1832 |
msgstr ""
|
1833 |
|
1834 |
+
#: thirdparty/woocommerce.content.tpl.php:23
|
1835 |
msgid "To test the cart, visit the <a %s>FAQ</a>."
|
1836 |
msgstr ""
|
1837 |
|
1838 |
+
#: thirdparty/woocommerce.content.tpl.php:24
|
1839 |
msgid ""
|
1840 |
"By default, the My Account, Checkout, and Cart pages are automatically "
|
1841 |
"excluded from caching. Misconfiguration of page associations in WooCommerce "
|
1842 |
"settings may cause some pages to be erroneously excluded."
|
1843 |
msgstr ""
|
1844 |
|
1845 |
+
#: thirdparty/woocommerce.content.tpl.php:31
|
1846 |
+
msgid "Use ESI for Cart"
|
1847 |
+
msgstr ""
|
1848 |
+
|
1849 |
+
#: thirdparty/woocommerce.content.tpl.php:36
|
1850 |
+
msgid ""
|
1851 |
+
"When the option is ON, cart information will be implemented as ESI blocks. "
|
1852 |
+
"NOTE: To make it work, you need to turn on %1$s under ESI settings."
|
1853 |
+
msgstr ""
|
1854 |
+
|
1855 |
+
#: thirdparty/woocommerce.content.tpl.php:43
|
1856 |
msgid "Product Update Interval"
|
1857 |
msgstr ""
|
1858 |
|
1859 |
+
#: thirdparty/woocommerce.content.tpl.php:48
|
1860 |
msgid "Purge product on changes to the quantity or stock status."
|
1861 |
msgstr ""
|
1862 |
|
1863 |
+
#: thirdparty/woocommerce.content.tpl.php:48
|
1864 |
msgid "Purge categories only when stock status changes."
|
1865 |
msgstr ""
|
1866 |
|
1867 |
+
#: thirdparty/woocommerce.content.tpl.php:49
|
1868 |
msgid "Purge product and categories only when the stock status changes."
|
1869 |
msgstr ""
|
1870 |
|
1871 |
+
#: thirdparty/woocommerce.content.tpl.php:50
|
1872 |
msgid "Purge product only when the stock status changes."
|
1873 |
msgstr ""
|
1874 |
|
1875 |
+
#: thirdparty/woocommerce.content.tpl.php:50
|
1876 |
msgid "Do not purge categories on changes to the quantity or stock status."
|
1877 |
msgstr ""
|
1878 |
|
1879 |
+
#: thirdparty/woocommerce.content.tpl.php:51
|
1880 |
msgid ""
|
1881 |
"Always purge both product and categories on changes to the quantity or stock "
|
1882 |
"status."
|
1883 |
msgstr ""
|
1884 |
|
1885 |
+
#: thirdparty/woocommerce.content.tpl.php:64
|
1886 |
msgid ""
|
1887 |
"Determines how changes in product quantity and product stock status affect "
|
1888 |
"product pages and their associated category pages."
|
1889 |
msgstr ""
|
1890 |
|
1891 |
+
#: thirdparty/woocommerce.content.tpl.php:72
|
1892 |
msgid "Use Front Page TTL for the Shop Page"
|
1893 |
msgstr ""
|
1894 |
|
1895 |
+
#: thirdparty/woocommerce.content.tpl.php:77
|
1896 |
msgid ""
|
1897 |
"Checking this option will force the shop page to use the front page TTL "
|
1898 |
"setting."
|
1899 |
msgstr ""
|
1900 |
|
1901 |
+
#: thirdparty/woocommerce.content.tpl.php:78
|
1902 |
msgid ""
|
1903 |
"For example, if the homepage for the site is located at %1$s, the shop page "
|
1904 |
"may be located at %2$s."
|
1905 |
msgstr ""
|
1906 |
|
1907 |
+
#: thirdparty/woocommerce.content.tpl.php:86
|
1908 |
msgid "Privately Cache Cart"
|
1909 |
msgstr ""
|
1910 |
|
1911 |
+
#: thirdparty/woocommerce.content.tpl.php:91
|
1912 |
msgid "Privately cache cart when not empty."
|
1913 |
msgstr ""
|
1914 |
|
1940 |
msgid "Dismiss this notice"
|
1941 |
msgstr ""
|
1942 |
|
1943 |
+
#. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 4.1) #-#-#-#-#
|
1944 |
#. Plugin Name of the plugin/theme
|
1945 |
#: tpl/banner/new_version.php:59 tpl/banner/new_version_dev.tpl.php:12
|
1946 |
#: tpl/cache/more_settings_tip.tpl.php:15 tpl/inc/admin_footer.php:8
|
1956 |
msgstr ""
|
1957 |
|
1958 |
#: tpl/banner/new_version.php:71 tpl/banner/new_version_dev.tpl.php:24
|
1959 |
+
#: tpl/toolbox/beta_test.tpl.php:51
|
1960 |
msgid "Upgrade"
|
1961 |
msgstr ""
|
1962 |
|
1980 |
msgid "Thank You for Using the LiteSpeed Cache Plugin!"
|
1981 |
msgstr ""
|
1982 |
|
1983 |
+
#: tpl/banner/score.php:28 tpl/dash/dashboard.tpl.php:156
|
1984 |
msgid "Page Load Time"
|
1985 |
msgstr ""
|
1986 |
|
1987 |
#: tpl/banner/score.php:34 tpl/banner/score.php:74
|
1988 |
+
#: tpl/dash/dashboard.tpl.php:169 tpl/dash/dashboard.tpl.php:228
|
1989 |
msgid "Before"
|
1990 |
msgstr ""
|
1991 |
|
1992 |
#: tpl/banner/score.php:45 tpl/banner/score.php:84
|
1993 |
+
#: tpl/dash/dashboard.tpl.php:178 tpl/dash/dashboard.tpl.php:236
|
1994 |
msgid "After"
|
1995 |
msgstr ""
|
1996 |
|
1997 |
#: tpl/banner/score.php:55 tpl/banner/score.php:94
|
1998 |
+
#: tpl/dash/dashboard.tpl.php:186 tpl/dash/dashboard.tpl.php:244
|
1999 |
msgid "Improved by"
|
2000 |
msgstr ""
|
2001 |
|
2002 |
+
#: tpl/banner/score.php:68 tpl/dash/dashboard.tpl.php:213
|
2003 |
msgid "PageSpeed Score"
|
2004 |
msgstr ""
|
2005 |
|
2044 |
msgstr ""
|
2045 |
|
2046 |
#: tpl/cache/entry.tpl.php:8 tpl/cache/entry_network.tpl.php:7
|
2047 |
+
#: tpl/toolbox/entry.tpl.php:6 tpl/toolbox/purge.tpl.php:124
|
2048 |
msgid "Purge"
|
2049 |
msgstr ""
|
2050 |
|
2079 |
|
2080 |
#: tpl/cache/more_settings_tip.tpl.php:12
|
2081 |
#: tpl/cache/settings-excludes.tpl.php:61
|
2082 |
+
#: tpl/cache/settings-excludes.tpl.php:94 tpl/cdn/settings.tpl.php:78
|
2083 |
#: tpl/crawler/settings-general.tpl.php:39
|
2084 |
#: tpl/crawler/settings-general.tpl.php:140
|
2085 |
#: tpl/crawler/settings-general.tpl.php:145
|
2262 |
#: tpl/cache/settings-esi.tpl.php:35 tpl/cdn/manage.tpl.php:21
|
2263 |
#: tpl/crawler/summary.tpl.php:48 tpl/inc/check_cache_disabled.php:31
|
2264 |
#: tpl/inc/check_if_network_disable_all.php:18
|
2265 |
+
#: tpl/page_optm/settings_css.tpl.php:59 tpl/page_optm/settings_css.tpl.php:152
|
2266 |
#: tpl/page_optm/settings_localization.tpl.php:11
|
2267 |
msgid "WARNING"
|
2268 |
msgstr ""
|
2301 |
#: tpl/page_optm/settings_media_exc.tpl.php:26
|
2302 |
#: tpl/page_optm/settings_tuning.tpl.php:36
|
2303 |
#: tpl/page_optm/settings_tuning.tpl.php:57
|
2304 |
+
#: tpl/page_optm/settings_tuning.tpl.php:137
|
2305 |
+
#: tpl/page_optm/settings_tuning.tpl.php:158
|
2306 |
msgid "Filter %s is supported."
|
2307 |
msgstr ""
|
2308 |
|
2317 |
msgstr ""
|
2318 |
|
2319 |
#: tpl/cache/settings-esi.tpl.php:107 tpl/cache/settings-purge.tpl.php:110
|
2320 |
+
#: tpl/cdn/settings.tpl.php:143
|
2321 |
msgid ""
|
2322 |
"Wildcard %1$s supported (match zero or more characters). For example, to "
|
2323 |
"match %2$s and %3$s, use %4$s."
|
2703 |
msgstr ""
|
2704 |
|
2705 |
#: tpl/cache/settings_inc.object.tpl.php:41
|
2706 |
+
msgid "Use external object cache functionality."
|
2707 |
msgstr ""
|
2708 |
|
2709 |
#: tpl/cache/settings_inc.object.tpl.php:47 tpl/crawler/blacklist.tpl.php:32
|
2847 |
msgid "Enable %s CDN API functionality."
|
2848 |
msgstr ""
|
2849 |
|
2850 |
+
#: tpl/cdn/settings.tpl.php:49
|
2851 |
+
msgid ""
|
2852 |
+
"Turn this setting %1$s if you are using a traditional Content Delivery "
|
2853 |
+
"Network (CDN) or a subdomain for static content with QUIC.cloud CDN."
|
2854 |
+
msgstr ""
|
2855 |
+
|
2856 |
+
#: tpl/cdn/settings.tpl.php:54
|
2857 |
msgid ""
|
|
|
2858 |
"NOTE: QUIC.cloud CDN and Cloudflare do not use CDN Mapping. If you are are "
|
2859 |
"only using QUIC.cloud or Cloudflare, leave this setting %2$s."
|
2860 |
msgstr ""
|
2861 |
|
2862 |
+
#: tpl/cdn/settings.tpl.php:79
|
2863 |
msgid ""
|
2864 |
"To randomize CDN hostname, define multiple hostnames for the same resources."
|
2865 |
msgstr ""
|
2866 |
|
2867 |
+
#: tpl/cdn/settings.tpl.php:84
|
2868 |
msgid ""
|
2869 |
"Serve all image files through the CDN. This will affect all attachments, "
|
2870 |
"HTML %s tags, and CSS %s attributes."
|
2871 |
msgstr ""
|
2872 |
|
2873 |
+
#: tpl/cdn/settings.tpl.php:88
|
2874 |
msgid ""
|
2875 |
"Serve all CSS files through the CDN. This will affect all enqueued WP CSS "
|
2876 |
"files."
|
2877 |
msgstr ""
|
2878 |
|
2879 |
+
#: tpl/cdn/settings.tpl.php:92
|
2880 |
msgid ""
|
2881 |
"Serve all JavaScript files through the CDN. This will affect all enqueued WP "
|
2882 |
"JavaScript files."
|
2883 |
msgstr ""
|
2884 |
|
2885 |
+
#: tpl/cdn/settings.tpl.php:96
|
2886 |
msgid "Static file type links to be replaced by CDN links."
|
2887 |
msgstr ""
|
2888 |
|
2889 |
+
#: tpl/cdn/settings.tpl.php:98
|
2890 |
msgid "This will affect all tags containing attributes: %s %s %s."
|
2891 |
msgstr ""
|
2892 |
|
2893 |
+
#: tpl/cdn/settings.tpl.php:99
|
2894 |
msgid "Default value"
|
2895 |
msgstr ""
|
2896 |
|
2897 |
+
#: tpl/cdn/settings.tpl.php:102
|
2898 |
msgid ""
|
2899 |
"If you turn any of the above settings OFF, please remove the related file "
|
2900 |
"types from the %s box."
|
2901 |
msgstr ""
|
2902 |
|
2903 |
+
#: tpl/cdn/settings.tpl.php:126
|
2904 |
msgid ""
|
2905 |
"Specify which HTML element attributes will be replaced with CDN Mapping."
|
2906 |
msgstr ""
|
2907 |
|
2908 |
+
#: tpl/cdn/settings.tpl.php:127 tpl/img_optm/settings.tpl.php:140
|
2909 |
msgid "Only attributes listed here will be replaced."
|
2910 |
msgstr ""
|
2911 |
|
2912 |
+
#: tpl/cdn/settings.tpl.php:128 tpl/img_optm/settings.tpl.php:141
|
2913 |
msgid "Use the format %1$s or %2$s (element is optional)."
|
2914 |
msgstr ""
|
2915 |
|
2916 |
+
#: tpl/cdn/settings.tpl.php:142
|
2917 |
msgid ""
|
2918 |
"Site URL to be served through the CDN. Beginning with %1$s. For example, "
|
2919 |
"%2$s."
|
2920 |
msgstr ""
|
2921 |
|
2922 |
+
#: tpl/cdn/settings.tpl.php:165
|
2923 |
msgid "Only files within these directories will be pointed to the CDN."
|
2924 |
msgstr ""
|
2925 |
|
2926 |
+
#: tpl/cdn/settings.tpl.php:179
|
2927 |
msgid "Paths containing these strings will not be served from the CDN."
|
2928 |
msgstr ""
|
2929 |
|
2930 |
+
#: tpl/cdn/settings.tpl.php:193
|
2931 |
msgid "Use %s API functionality."
|
2932 |
msgstr ""
|
2933 |
|
2934 |
+
#: tpl/cdn/settings.tpl.php:194
|
2935 |
msgid "This can be managed from %1$s%2$s tab."
|
2936 |
msgstr ""
|
2937 |
|
2938 |
+
#: tpl/cdn/settings.tpl.php:198
|
2939 |
+
msgid "Global API Key / API Token"
|
2940 |
msgstr ""
|
2941 |
|
2942 |
+
#: tpl/cdn/settings.tpl.php:202
|
2943 |
+
msgid "Your API key / token is used to access %s APIs."
|
2944 |
msgstr ""
|
2945 |
|
2946 |
+
#: tpl/cdn/settings.tpl.php:203
|
2947 |
+
msgid "Get it from <a %1$s>%2$s</a>."
|
2948 |
msgstr ""
|
2949 |
|
2950 |
+
#: tpl/cdn/settings.tpl.php:204
|
2951 |
+
msgid ""
|
2952 |
+
"Recommended to generate the token from Cloudflare API token template "
|
2953 |
+
"\"WordPress\"."
|
2954 |
msgstr ""
|
2955 |
|
2956 |
+
#: tpl/cdn/settings.tpl.php:209
|
2957 |
+
msgid "Email Address"
|
2958 |
msgstr ""
|
2959 |
|
2960 |
+
#: tpl/cdn/settings.tpl.php:213
|
2961 |
+
msgid "Your Email address on %s."
|
2962 |
msgstr ""
|
2963 |
|
2964 |
+
#: tpl/cdn/settings.tpl.php:214
|
2965 |
+
msgid "Optional when API token used."
|
|
|
|
|
2966 |
msgstr ""
|
2967 |
|
2968 |
+
#: tpl/cdn/settings.tpl.php:219
|
2969 |
msgid "Domain"
|
2970 |
msgstr ""
|
2971 |
|
2972 |
+
#: tpl/cdn/settings.tpl.php:227
|
2973 |
msgid "You can just type part of the domain."
|
2974 |
msgstr ""
|
2975 |
|
2976 |
+
#: tpl/cdn/settings.tpl.php:228
|
2977 |
msgid ""
|
2978 |
"Once saved, it will be matched with the current list and completed "
|
2979 |
"automatically."
|
2996 |
msgstr ""
|
2997 |
|
2998 |
#: tpl/crawler/blacklist.tpl.php:31 tpl/crawler/map.tpl.php:43
|
2999 |
+
#: tpl/toolbox/purge.tpl.php:206
|
3000 |
msgid "URL"
|
3001 |
msgstr ""
|
3002 |
|
3030 |
msgstr ""
|
3031 |
|
3032 |
#: tpl/crawler/entry.tpl.php:9 tpl/general/entry.tpl.php:6
|
3033 |
+
#: tpl/general/entry.tpl.php:12 tpl/general/network_settings.tpl.php:8
|
3034 |
+
#: tpl/general/settings.tpl.php:42
|
3035 |
msgid "General Settings"
|
3036 |
msgstr ""
|
3037 |
|
3067 |
msgid "Sitemap Total"
|
3068 |
msgstr ""
|
3069 |
|
3070 |
+
#: tpl/crawler/map.tpl.php:44 tpl/dash/dashboard.tpl.php:500
|
3071 |
msgid "Crawler Status"
|
3072 |
msgstr ""
|
3073 |
|
3075 |
msgid "Add to Blacklist"
|
3076 |
msgstr ""
|
3077 |
|
3078 |
+
#: tpl/crawler/map.tpl.php:67
|
3079 |
msgid "Cache Hit"
|
3080 |
msgstr ""
|
3081 |
|
3082 |
+
#: tpl/crawler/map.tpl.php:68
|
3083 |
msgid "Cache Miss"
|
3084 |
msgstr ""
|
3085 |
|
3154 |
#: tpl/crawler/settings-simulation.tpl.php:49
|
3155 |
msgid ""
|
3156 |
"To crawl for a particular cookie, enter the cookie name, and the values you "
|
3157 |
+
"wish to crawl for. Values should be one per line. There will be one crawler "
|
3158 |
+
"created per cookie value, per simulated role."
|
3159 |
msgstr ""
|
3160 |
|
3161 |
#: tpl/crawler/settings-simulation.tpl.php:51
|
3240 |
msgid "Run time for previous crawler"
|
3241 |
msgstr ""
|
3242 |
|
3243 |
+
#: tpl/crawler/summary.tpl.php:85 tpl/dash/dashboard.tpl.php:512
|
3244 |
msgid "Current crawler started at"
|
3245 |
msgstr ""
|
3246 |
|
3247 |
+
#: tpl/crawler/summary.tpl.php:92 tpl/dash/dashboard.tpl.php:519
|
3248 |
msgid "Last interval"
|
3249 |
msgstr ""
|
3250 |
|
3251 |
+
#: tpl/crawler/summary.tpl.php:99 tpl/dash/dashboard.tpl.php:526
|
3252 |
msgid "Ended reason"
|
3253 |
msgstr ""
|
3254 |
|
3255 |
+
#: tpl/crawler/summary.tpl.php:106 tpl/dash/dashboard.tpl.php:533
|
3256 |
msgid "<b>Last crawled:</b> %s item(s)"
|
3257 |
msgstr ""
|
3258 |
|
3296 |
msgid "Waiting to be Crawled"
|
3297 |
msgstr ""
|
3298 |
|
3299 |
+
#: tpl/crawler/summary.tpl.php:178
|
3300 |
+
msgid "Already Cached"
|
3301 |
+
msgstr ""
|
3302 |
+
|
3303 |
+
#: tpl/crawler/summary.tpl.php:179
|
3304 |
+
msgid "Successfully Crawled"
|
3305 |
+
msgstr ""
|
3306 |
+
|
3307 |
#: tpl/crawler/summary.tpl.php:184
|
3308 |
msgid "Run frequency is set by the Interval Between Runs setting."
|
3309 |
msgstr ""
|
3336 |
msgid "No crawler meta file generated yet"
|
3337 |
msgstr ""
|
3338 |
|
3339 |
+
#: tpl/dash/dashboard.tpl.php:42
|
3340 |
msgid "QUIC.cloud Service Usage Statistics"
|
3341 |
msgstr ""
|
3342 |
|
3343 |
+
#: tpl/dash/dashboard.tpl.php:45
|
3344 |
msgid "Sync data from Cloud"
|
3345 |
msgstr ""
|
3346 |
|
3347 |
+
#: tpl/dash/dashboard.tpl.php:56 tpl/dash/dashboard.tpl.php:405
|
3348 |
#: tpl/toolbox/purge.tpl.php:70
|
3349 |
msgid "Critical CSS"
|
3350 |
msgstr ""
|
3351 |
|
3352 |
+
#: tpl/dash/dashboard.tpl.php:56 tpl/dash/dashboard.tpl.php:437
|
3353 |
msgid "Unique CSS"
|
3354 |
msgstr ""
|
3355 |
|
3356 |
+
#: tpl/dash/dashboard.tpl.php:57 tpl/dash/network_dash.tpl.php:29
|
3357 |
msgid "CDN Bandwidth"
|
3358 |
msgstr ""
|
3359 |
|
3360 |
+
#: tpl/dash/dashboard.tpl.php:58 tpl/dash/dashboard.tpl.php:469
|
3361 |
msgid "Low Quality Image Placeholder"
|
3362 |
msgstr ""
|
3363 |
|
3364 |
+
#: tpl/dash/dashboard.tpl.php:113 tpl/dash/network_dash.tpl.php:78
|
3365 |
msgid "Fast Queue Usage"
|
3366 |
msgstr ""
|
3367 |
|
3368 |
+
#: tpl/dash/dashboard.tpl.php:113 tpl/dash/network_dash.tpl.php:78
|
3369 |
msgid "Usage"
|
3370 |
msgstr ""
|
3371 |
|
3372 |
+
#: tpl/dash/dashboard.tpl.php:125 tpl/dash/network_dash.tpl.php:90
|
3373 |
msgid "PAYG Balance"
|
3374 |
msgstr ""
|
3375 |
|
3376 |
+
#: tpl/dash/dashboard.tpl.php:126 tpl/dash/network_dash.tpl.php:91
|
3377 |
msgid "This Month Usage"
|
3378 |
msgstr ""
|
3379 |
|
3380 |
+
#: tpl/dash/dashboard.tpl.php:128 tpl/dash/network_dash.tpl.php:93
|
3381 |
msgid "Pay as You Go Usage Statistics"
|
3382 |
msgstr ""
|
3383 |
|
3384 |
+
#: tpl/dash/dashboard.tpl.php:135 tpl/dash/network_dash.tpl.php:100
|
3385 |
msgid "Total Usage"
|
3386 |
msgstr ""
|
3387 |
|
3388 |
+
#: tpl/dash/dashboard.tpl.php:136 tpl/dash/network_dash.tpl.php:101
|
3389 |
msgid "Total images optimized in this month"
|
3390 |
msgstr ""
|
3391 |
|
3392 |
+
#: tpl/dash/dashboard.tpl.php:147
|
3393 |
msgid "Go to QUIC.cloud dashboard"
|
3394 |
msgstr ""
|
3395 |
|
3396 |
+
#: tpl/dash/dashboard.tpl.php:159
|
3397 |
msgid "Refresh page load time"
|
3398 |
msgstr ""
|
3399 |
|
3400 |
+
#: tpl/dash/dashboard.tpl.php:200 tpl/dash/dashboard.tpl.php:260
|
3401 |
+
#: tpl/dash/dashboard.tpl.php:429 tpl/dash/dashboard.tpl.php:461
|
3402 |
+
#: tpl/dash/dashboard.tpl.php:492
|
3403 |
msgid "Last requested"
|
3404 |
msgstr ""
|
3405 |
|
3406 |
+
#: tpl/dash/dashboard.tpl.php:205
|
3407 |
msgid "Current closest Cloud server is %s. Click to redetect."
|
3408 |
msgstr ""
|
3409 |
|
3410 |
+
#: tpl/dash/dashboard.tpl.php:205 tpl/img_optm/summary.tpl.php:57
|
3411 |
+
#: tpl/page_optm/settings_css.tpl.php:83 tpl/page_optm/settings_css.tpl.php:182
|
3412 |
+
#: tpl/page_optm/settings_media.tpl.php:176
|
3413 |
msgid ""
|
3414 |
"Are you sure you want to redetect the closest cloud server for this service?"
|
3415 |
msgstr ""
|
3416 |
|
3417 |
+
#: tpl/dash/dashboard.tpl.php:216
|
3418 |
msgid "Refresh page score"
|
3419 |
msgstr ""
|
3420 |
|
3421 |
+
#: tpl/dash/dashboard.tpl.php:268 tpl/img_optm/entry.tpl.php:6
|
3422 |
msgid "Image Optimization Summary"
|
3423 |
msgstr ""
|
3424 |
|
3425 |
+
#: tpl/dash/dashboard.tpl.php:278
|
3426 |
msgid "Image Groups Prepared"
|
3427 |
msgstr ""
|
3428 |
|
3429 |
+
#: tpl/dash/dashboard.tpl.php:293
|
3430 |
msgid "Images Requested"
|
3431 |
msgstr ""
|
3432 |
|
3433 |
+
#: tpl/dash/dashboard.tpl.php:325 tpl/img_optm/summary.tpl.php:342
|
3434 |
msgid "Last Request"
|
3435 |
msgstr ""
|
3436 |
|
3437 |
+
#: tpl/dash/dashboard.tpl.php:328
|
3438 |
msgid "Last Pull"
|
3439 |
msgstr ""
|
3440 |
|
3441 |
+
#: tpl/dash/dashboard.tpl.php:357
|
3442 |
msgid "Cache Status"
|
3443 |
msgstr ""
|
3444 |
|
3445 |
+
#: tpl/dash/dashboard.tpl.php:362
|
3446 |
msgid "Public Cache"
|
3447 |
msgstr ""
|
3448 |
|
3449 |
+
#: tpl/dash/dashboard.tpl.php:363
|
3450 |
msgid "Private Cache"
|
3451 |
msgstr ""
|
3452 |
|
3453 |
+
#: tpl/dash/dashboard.tpl.php:391
|
3454 |
msgid "Cache Stats"
|
3455 |
msgstr ""
|
3456 |
|
3457 |
+
#: tpl/dash/dashboard.tpl.php:410 tpl/dash/dashboard.tpl.php:442
|
3458 |
+
#: tpl/dash/dashboard.tpl.php:474 tpl/page_optm/settings_css.tpl.php:74
|
3459 |
+
#: tpl/page_optm/settings_css.tpl.php:173
|
3460 |
+
#: tpl/page_optm/settings_media.tpl.php:170
|
3461 |
msgid "Last generated"
|
3462 |
msgstr ""
|
3463 |
|
3464 |
+
#: tpl/dash/dashboard.tpl.php:413 tpl/dash/dashboard.tpl.php:445
|
3465 |
+
#: tpl/dash/dashboard.tpl.php:477
|
3466 |
msgid "Time to execute previous request"
|
3467 |
msgstr ""
|
3468 |
|
3469 |
+
#: tpl/dash/dashboard.tpl.php:418 tpl/dash/dashboard.tpl.php:450
|
3470 |
+
#: tpl/dash/dashboard.tpl.php:482
|
3471 |
msgid "Requests in queue"
|
3472 |
msgstr ""
|
3473 |
|
3474 |
+
#: tpl/dash/dashboard.tpl.php:421 tpl/dash/dashboard.tpl.php:453
|
3475 |
+
#: tpl/dash/dashboard.tpl.php:484
|
3476 |
msgid "Force cron"
|
3477 |
msgstr ""
|
3478 |
|
3479 |
+
#: tpl/dash/dashboard.tpl.php:504
|
3480 |
msgid "Crawler(s)"
|
3481 |
msgstr ""
|
3482 |
|
3483 |
+
#: tpl/dash/dashboard.tpl.php:507
|
3484 |
msgid "Currently active crawler"
|
3485 |
msgstr ""
|
3486 |
|
3487 |
+
#: tpl/dash/dashboard.tpl.php:539
|
3488 |
msgid "Manage Crawler"
|
3489 |
msgstr ""
|
3490 |
|
3674 |
msgid "A TTL of 0 indicates do not cache."
|
3675 |
msgstr ""
|
3676 |
|
3677 |
+
#: tpl/general/entry.tpl.php:7 tpl/page_optm/entry.tpl.php:12
|
3678 |
+
msgid "Tuning"
|
3679 |
+
msgstr ""
|
3680 |
+
|
3681 |
+
#: tpl/general/entry.tpl.php:20
|
3682 |
msgid "LiteSpeed Cache General Settings"
|
3683 |
msgstr ""
|
3684 |
|
3723 |
msgid "Next available request time: <code>After %s</code>"
|
3724 |
msgstr ""
|
3725 |
|
3726 |
+
#: tpl/general/settings.tpl.php:73
|
3727 |
msgid "Visit My Dashboard on QUIC.cloud"
|
3728 |
msgstr ""
|
3729 |
|
3730 |
+
#: tpl/general/settings.tpl.php:75 tpl/general/settings.tpl.php:77
|
3731 |
+
#: tpl/general/settings.tpl.php:106
|
3732 |
msgid "Link to QUIC.cloud"
|
3733 |
msgstr ""
|
3734 |
|
3735 |
+
#: tpl/general/settings.tpl.php:82 tpl/general/settings.tpl.php:93
|
3736 |
+
#: tpl/general/settings.tpl.php:105 tpl/general/settings.tpl.php:154
|
3737 |
+
#: tpl/general/settings.tpl.php:160 tpl/general/settings.tpl.php:166
|
3738 |
+
#: tpl/general/settings.tpl.php:172 tpl/general/settings.tpl.php:189
|
3739 |
msgid "Notice"
|
3740 |
msgstr ""
|
3741 |
|
3742 |
+
#: tpl/general/settings.tpl.php:83
|
3743 |
msgid ""
|
3744 |
"There was a problem with retrieving your Domain Key. Please click the %s "
|
3745 |
"button to retry."
|
3746 |
msgstr ""
|
3747 |
|
3748 |
+
#: tpl/general/settings.tpl.php:84
|
3749 |
msgid ""
|
3750 |
"There are two reasons why we might not be able to communicate with your "
|
3751 |
"domain:"
|
3752 |
msgstr ""
|
3753 |
|
3754 |
+
#: tpl/general/settings.tpl.php:85
|
3755 |
msgid "The POST callback to %s failed."
|
3756 |
msgstr ""
|
3757 |
|
3758 |
+
#: tpl/general/settings.tpl.php:86
|
3759 |
msgid "Our %s was not whitelisted."
|
3760 |
msgstr ""
|
3761 |
|
3762 |
+
#: tpl/general/settings.tpl.php:87
|
3763 |
msgid ""
|
3764 |
"Please verify that your other plugins are not blocking REST API calls, "
|
3765 |
"whitelist our server IPs, or contact your server admin for assistance."
|
3766 |
msgstr ""
|
3767 |
|
3768 |
+
#: tpl/general/settings.tpl.php:94
|
3769 |
msgid ""
|
3770 |
"Request submitted. Please wait, then refresh the page to see approval "
|
3771 |
"notification."
|
3772 |
msgstr ""
|
3773 |
|
3774 |
+
#: tpl/general/settings.tpl.php:100
|
3775 |
msgid "Warning"
|
3776 |
msgstr ""
|
3777 |
|
3778 |
+
#: tpl/general/settings.tpl.php:101
|
3779 |
msgid "You must have %1$s first before linking to QUIC.cloud."
|
3780 |
msgstr ""
|
3781 |
|
3782 |
+
#: tpl/general/settings.tpl.php:106
|
3783 |
msgid ""
|
3784 |
"You must click the %s button if you wish to associate this site with a QUIC."
|
3785 |
"cloud account."
|
3786 |
msgstr ""
|
3787 |
|
3788 |
+
#: tpl/general/settings.tpl.php:107
|
3789 |
msgid "Benefits of linking to a QUIC.cloud account"
|
3790 |
msgstr ""
|
3791 |
|
3792 |
+
#: tpl/general/settings.tpl.php:112
|
3793 |
msgid "A Domain Key is required for QUIC.cloud online services."
|
3794 |
msgstr ""
|
3795 |
|
3796 |
+
#: tpl/general/settings.tpl.php:115
|
3797 |
msgid "Current Cloud Nodes in Service"
|
3798 |
msgstr ""
|
3799 |
|
3800 |
+
#: tpl/general/settings.tpl.php:116
|
3801 |
msgid "Click to clear all nodes for further redetection."
|
3802 |
msgstr ""
|
3803 |
|
3804 |
+
#: tpl/general/settings.tpl.php:116
|
3805 |
msgid "Are you sure you want to clear all cloud nodes?"
|
3806 |
msgstr ""
|
3807 |
|
3808 |
+
#: tpl/general/settings.tpl.php:128
|
3809 |
msgid "No cloud services currently in use"
|
3810 |
msgstr ""
|
3811 |
|
3812 |
+
#: tpl/general/settings.tpl.php:150
|
3813 |
+
msgid "This option enables maximum optimization for Guest Mode visitors."
|
3814 |
msgstr ""
|
3815 |
|
3816 |
+
#: tpl/general/settings.tpl.php:154
|
3817 |
msgid "This option only works when turning %s on."
|
3818 |
msgstr ""
|
3819 |
|
3820 |
+
#: tpl/general/settings.tpl.php:160 tpl/general/settings.tpl.php:172
|
3821 |
msgid "You need to turn %s on to get maximum result."
|
3822 |
msgstr ""
|
3823 |
|
3824 |
+
#: tpl/general/settings.tpl.php:166
|
3825 |
msgid ""
|
3826 |
"You need to turn %s on and finish all WebP generation to get maximum result."
|
3827 |
msgstr ""
|
3828 |
|
3829 |
+
#: tpl/general/settings.tpl.php:187
|
3830 |
msgid ""
|
3831 |
"Enter this site's IP address to allow cloud services directly call IP "
|
3832 |
"instead of domain name. This eliminates the overhead of DNS and CDN lookups."
|
3833 |
msgstr ""
|
3834 |
|
3835 |
+
#: tpl/general/settings.tpl.php:188
|
3836 |
msgid "Your server IP"
|
3837 |
msgstr ""
|
3838 |
|
3839 |
+
#: tpl/general/settings.tpl.php:188
|
3840 |
msgid "Check my public IP from"
|
3841 |
msgstr ""
|
3842 |
|
3843 |
+
#: tpl/general/settings.tpl.php:189
|
3844 |
msgid ""
|
3845 |
"the auto-detected IP may not be accurate if you have an additional outgoing "
|
3846 |
"IP set, or you have multiple IPs configured on your server."
|
3847 |
msgstr ""
|
3848 |
|
3849 |
+
#: tpl/general/settings.tpl.php:190
|
3850 |
msgid "Please make sure this IP is the correct one for visiting your site."
|
3851 |
msgstr ""
|
3852 |
|
3853 |
+
#: tpl/general/settings.tpl.php:205
|
3854 |
msgid ""
|
3855 |
"Turn this option ON to show latest news automatically, including hotfixes, "
|
3856 |
"new releases, available beta versions, and promotions."
|
3864 |
|
3865 |
#: tpl/general/settings_inc.guest.tpl.php:13
|
3866 |
msgid ""
|
3867 |
+
"Guest Mode provides an always cacheable landing page for an automated "
|
3868 |
+
"guest's first time visit, and then attempts to update cache varies via AJAX."
|
3869 |
msgstr ""
|
3870 |
|
3871 |
#: tpl/general/settings_inc.guest.tpl.php:14
|
3872 |
msgid ""
|
3873 |
"This option can help to correct the cache vary for certain advanced mobile "
|
3874 |
+
"or tablet visitors."
|
3875 |
+
msgstr ""
|
3876 |
+
|
3877 |
+
#: tpl/general/settings_inc.guest.tpl.php:29
|
3878 |
+
msgid "Your %1s quota on %2s will still be in use."
|
3879 |
+
msgstr ""
|
3880 |
+
|
3881 |
+
#: tpl/general/settings_tuning.tpl.php:7
|
3882 |
+
#: tpl/page_optm/settings_tuning.tpl.php:18
|
3883 |
+
msgid "Tuning Settings"
|
3884 |
+
msgstr ""
|
3885 |
+
|
3886 |
+
#: tpl/general/settings_tuning.tpl.php:20
|
3887 |
+
msgid "Listed User Agents will be considered as Guest Mode visitors."
|
3888 |
+
msgstr ""
|
3889 |
+
|
3890 |
+
#: tpl/general/settings_tuning.tpl.php:34
|
3891 |
+
msgid "Listed IPs will be considered as Guest Mode visitors."
|
3892 |
msgstr ""
|
3893 |
|
3894 |
#: tpl/img_optm/entry.tpl.php:7 tpl/img_optm/entry.tpl.php:13
|
3971 |
msgid "The image compression quality setting of WordPress out of 100."
|
3972 |
msgstr ""
|
3973 |
|
3974 |
+
#: tpl/img_optm/summary.tpl.php:57 tpl/page_optm/settings_css.tpl.php:83
|
3975 |
+
#: tpl/page_optm/settings_css.tpl.php:182
|
3976 |
+
#: tpl/page_optm/settings_media.tpl.php:176
|
3977 |
msgid "Current closest Cloud server is %s. Click to redetect."
|
3978 |
msgstr ""
|
3979 |
|
4311 |
"dismissed. (<a %3$s>Learn More</a>)"
|
4312 |
msgstr ""
|
4313 |
|
4314 |
+
#: tpl/page_optm/entry.tpl.php:6 tpl/page_optm/settings_css.tpl.php:16
|
4315 |
msgid "CSS Settings"
|
4316 |
msgstr ""
|
4317 |
|
4319 |
msgid "JS Settings"
|
4320 |
msgstr ""
|
4321 |
|
4322 |
+
#: tpl/page_optm/entry.tpl.php:8 tpl/page_optm/settings_html.tpl.php:7
|
4323 |
msgid "HTML Settings"
|
4324 |
msgstr ""
|
4325 |
|
4326 |
+
#: tpl/page_optm/entry.tpl.php:9 tpl/page_optm/settings_media.tpl.php:14
|
4327 |
msgid "Media Settings"
|
4328 |
msgstr ""
|
4329 |
|
4335 |
msgid "Localization"
|
4336 |
msgstr ""
|
4337 |
|
|
|
|
|
|
|
|
|
4338 |
#: tpl/page_optm/entry.tpl.php:19
|
4339 |
msgid "LiteSpeed Cache Page Optimization"
|
4340 |
msgstr ""
|
4345 |
"Minify/Combine settings, please do a Purge All action."
|
4346 |
msgstr ""
|
4347 |
|
4348 |
+
#: tpl/page_optm/settings_css.tpl.php:30
|
4349 |
msgid "Minify CSS files and inline CSS code."
|
4350 |
msgstr ""
|
4351 |
|
4352 |
+
#: tpl/page_optm/settings_css.tpl.php:43
|
4353 |
msgid "Combine CSS files and inline CSS code."
|
4354 |
msgstr ""
|
4355 |
|
4356 |
+
#: tpl/page_optm/settings_css.tpl.php:44 tpl/page_optm/settings_js.tpl.php:35
|
4357 |
msgid "How to Fix Problems Caused by CSS/JS Optimization."
|
4358 |
msgstr ""
|
4359 |
|
4360 |
+
#: tpl/page_optm/settings_css.tpl.php:64
|
4361 |
msgid "Use QUIC.cloud online service to generate unique CSS."
|
4362 |
msgstr ""
|
4363 |
|
4364 |
+
#: tpl/page_optm/settings_css.tpl.php:65
|
4365 |
msgid "This will drop the unused CSS on each page from the combined file."
|
4366 |
msgstr ""
|
4367 |
|
4368 |
+
#: tpl/page_optm/settings_css.tpl.php:67
|
4369 |
+
msgid ""
|
4370 |
+
"Automatic generation of unused CSS is in the background via a cron-based "
|
4371 |
+
"queue."
|
4372 |
+
msgstr ""
|
4373 |
+
|
4374 |
+
#: tpl/page_optm/settings_css.tpl.php:77 tpl/page_optm/settings_css.tpl.php:176
|
4375 |
msgid "Last requested cost"
|
4376 |
msgstr ""
|
4377 |
|
4378 |
+
#: tpl/page_optm/settings_css.tpl.php:89 tpl/page_optm/settings_css.tpl.php:188
|
4379 |
+
msgid "URL list in %s queue waiting for cron"
|
4380 |
msgstr ""
|
4381 |
|
4382 |
+
#: tpl/page_optm/settings_css.tpl.php:108
|
4383 |
+
#: tpl/page_optm/settings_css.tpl.php:207
|
4384 |
+
msgid "Run %s Queue Manually"
|
|
|
|
|
4385 |
msgstr ""
|
4386 |
|
4387 |
+
#: tpl/page_optm/settings_css.tpl.php:124
|
4388 |
msgid ""
|
4389 |
"Include external CSS and inline CSS in combined file when %1$s is also "
|
4390 |
"enabled. This option helps maintain the priorities of CSS, which should "
|
4391 |
"minimize potential errors caused by CSS Combine."
|
4392 |
msgstr ""
|
4393 |
|
4394 |
+
#: tpl/page_optm/settings_css.tpl.php:137
|
4395 |
msgid ""
|
4396 |
"Pre-send internal CSS files to the browser before they are requested. "
|
4397 |
"(Requires the HTTP/2 protocol)"
|
4398 |
msgstr ""
|
4399 |
|
4400 |
+
#: tpl/page_optm/settings_css.tpl.php:156
|
4401 |
msgid "Optimize CSS delivery."
|
4402 |
msgstr ""
|
4403 |
|
4404 |
+
#: tpl/page_optm/settings_css.tpl.php:157
|
4405 |
+
#: tpl/page_optm/settings_html.tpl.php:129 tpl/page_optm/settings_js.tpl.php:80
|
4406 |
+
#: tpl/page_optm/settings_media.tpl.php:243
|
4407 |
msgid ""
|
4408 |
"This can improve your speed score in services like Pingdom, GTmetrix and "
|
4409 |
"PageSpeed."
|
4410 |
msgstr ""
|
4411 |
|
4412 |
+
#: tpl/page_optm/settings_css.tpl.php:158
|
4413 |
msgid ""
|
4414 |
+
"Use QUIC.cloud online service to generate critical CSS and load remaining "
|
4415 |
+
"CSS asynchronously."
|
4416 |
msgstr ""
|
4417 |
|
4418 |
+
#: tpl/page_optm/settings_css.tpl.php:160
|
4419 |
msgid ""
|
4420 |
+
"Automatic generation of critical CSS is in the background via a cron-based "
|
4421 |
+
"queue."
|
4422 |
msgstr ""
|
4423 |
|
4424 |
+
#: tpl/page_optm/settings_css.tpl.php:161
|
4425 |
msgid ""
|
4426 |
+
"When this option is turned %s, it will also load Google Fonts asynchronously."
|
|
|
4427 |
msgstr ""
|
4428 |
|
4429 |
+
#: tpl/page_optm/settings_css.tpl.php:164
|
4430 |
+
msgid "Elements with attribute %s in HTML code will be excluded."
|
|
|
|
|
|
|
|
|
4431 |
msgstr ""
|
4432 |
|
4433 |
+
#: tpl/page_optm/settings_css.tpl.php:222
|
4434 |
msgid ""
|
4435 |
"Disable this option to generate CCSS per Post Type instead of per page. This "
|
4436 |
"can save significant CCSS quota, however it may result in incorrect CSS "
|
4437 |
"styling if your site uses a page builder."
|
4438 |
msgstr ""
|
4439 |
|
4440 |
+
#: tpl/page_optm/settings_css.tpl.php:235
|
4441 |
msgid "This will inline the asynchronous CSS library to avoid render blocking."
|
4442 |
msgstr ""
|
4443 |
|
4444 |
+
#: tpl/page_optm/settings_css.tpl.php:246
|
4445 |
msgid "Default"
|
4446 |
msgstr ""
|
4447 |
|
4448 |
+
#: tpl/page_optm/settings_css.tpl.php:248
|
4449 |
msgid ""
|
4450 |
"Set this to append %1$s to all %2$s rules before caching CSS to specify how "
|
4451 |
"fonts should be displayed while being downloaded."
|
4452 |
msgstr ""
|
4453 |
|
4454 |
+
#: tpl/page_optm/settings_css.tpl.php:249
|
4455 |
msgid "%s is recommended."
|
4456 |
msgstr ""
|
4457 |
|
4458 |
+
#: tpl/page_optm/settings_css.tpl.php:249
|
4459 |
msgid "Swap"
|
4460 |
msgstr ""
|
4461 |
|
|
|
|
|
|
|
|
|
4462 |
#: tpl/page_optm/settings_html.tpl.php:20
|
4463 |
msgid "Minify HTML content."
|
4464 |
msgstr ""
|
4505 |
|
4506 |
#: tpl/page_optm/settings_html.tpl.php:101
|
4507 |
msgid ""
|
4508 |
+
"This will also add a preconnect to Google Fonts to establish a connection "
|
4509 |
+
"earlier."
|
4510 |
msgstr ""
|
4511 |
|
4512 |
#: tpl/page_optm/settings_html.tpl.php:115
|
4531 |
msgid "Combine all local JS files into a single file."
|
4532 |
msgstr ""
|
4533 |
|
4534 |
+
#: tpl/page_optm/settings_js.tpl.php:37 tpl/page_optm/settings_js.tpl.php:83
|
4535 |
msgid ""
|
4536 |
"This option may result in JS error or layout issue on frontend pages on "
|
4537 |
"certain themes/plugins."
|
4565 |
msgstr ""
|
4566 |
|
4567 |
#: tpl/page_optm/settings_js.tpl.php:78
|
4568 |
+
msgid ""
|
4569 |
+
"Doing so can help reduce resource contention and improve performance causing "
|
4570 |
+
"a lower FID (Core Web Vitals metric)."
|
4571 |
msgstr ""
|
4572 |
|
4573 |
#: tpl/page_optm/settings_localization.tpl.php:12
|
4597 |
msgid "Avatar list in queue waiting for update"
|
4598 |
msgstr ""
|
4599 |
|
4600 |
+
#: tpl/page_optm/settings_localization.tpl.php:62
|
4601 |
+
#: tpl/page_optm/settings_media.tpl.php:198
|
4602 |
+
msgid "Run Queue Manually"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4603 |
msgstr ""
|
4604 |
|
4605 |
+
#: tpl/page_optm/settings_localization.tpl.php:79
|
4606 |
+
msgid "Specify how long, in seconds, Gravatar files are cached."
|
|
|
4607 |
msgstr ""
|
4608 |
|
4609 |
+
#: tpl/page_optm/settings_media.tpl.php:27
|
4610 |
msgid "Load images only when they enter the viewport."
|
4611 |
msgstr ""
|
4612 |
|
4613 |
+
#: tpl/page_optm/settings_media.tpl.php:28
|
4614 |
+
#: tpl/page_optm/settings_media.tpl.php:214
|
4615 |
msgid "This can improve page loading time by reducing initial HTTP requests."
|
4616 |
msgstr ""
|
4617 |
|
4618 |
+
#: tpl/page_optm/settings_media.tpl.php:31
|
4619 |
msgid "Adding Style to Your Lazy-Loaded Images"
|
4620 |
msgstr ""
|
4621 |
|
4622 |
+
#: tpl/page_optm/settings_media.tpl.php:45
|
4623 |
msgid ""
|
4624 |
"Specify a base64 image to be used as a simple placeholder while images "
|
4625 |
"finish loading."
|
4626 |
msgstr ""
|
4627 |
|
4628 |
+
#: tpl/page_optm/settings_media.tpl.php:46
|
4629 |
msgid ""
|
4630 |
"This can be predefined in %2$s as well using constant %1$s, with this "
|
4631 |
"setting taking priority."
|
4632 |
msgstr ""
|
4633 |
|
4634 |
+
#: tpl/page_optm/settings_media.tpl.php:47
|
4635 |
msgid "By default a gray image placeholder %s will be used."
|
4636 |
msgstr ""
|
4637 |
|
4638 |
+
#: tpl/page_optm/settings_media.tpl.php:48
|
4639 |
msgid "For example, %s can be used for a transparent placeholder."
|
4640 |
msgstr ""
|
4641 |
|
4642 |
+
#: tpl/page_optm/settings_media.tpl.php:61
|
4643 |
msgid ""
|
4644 |
"Responsive image placeholders can help to reduce layout reshuffle when "
|
4645 |
"images are loaded."
|
4646 |
msgstr ""
|
4647 |
|
4648 |
+
#: tpl/page_optm/settings_media.tpl.php:62
|
4649 |
msgid ""
|
4650 |
"This will generate the placeholder with same dimensions as the image if it "
|
4651 |
"has the width and height attributes."
|
4652 |
msgstr ""
|
4653 |
|
4654 |
+
#: tpl/page_optm/settings_media.tpl.php:75
|
4655 |
msgid "Specify an SVG to be used as a placeholder when generating locally."
|
4656 |
msgstr ""
|
4657 |
|
4658 |
+
#: tpl/page_optm/settings_media.tpl.php:76
|
4659 |
msgid "It will be converted to a base64 SVG placeholder on-the-fly."
|
4660 |
msgstr ""
|
4661 |
|
4662 |
+
#: tpl/page_optm/settings_media.tpl.php:77
|
4663 |
msgid "Variables %s will be replaced with the corresponding image properties."
|
4664 |
msgstr ""
|
4665 |
|
4666 |
+
#: tpl/page_optm/settings_media.tpl.php:78
|
4667 |
msgid "Variables %s will be replaced with the configured background color."
|
4668 |
msgstr ""
|
4669 |
|
4670 |
+
#: tpl/page_optm/settings_media.tpl.php:92
|
4671 |
msgid "Specify the responsive placeholder SVG color."
|
4672 |
msgstr ""
|
4673 |
|
4674 |
+
#: tpl/page_optm/settings_media.tpl.php:106
|
4675 |
msgid ""
|
4676 |
"Use QUIC.cloud LQIP (Low Quality Image Placeholder) generator service for "
|
4677 |
"responsive image previews while loading."
|
4678 |
msgstr ""
|
4679 |
|
4680 |
+
#: tpl/page_optm/settings_media.tpl.php:107
|
4681 |
msgid "Keep this off to use plain color placeholders."
|
4682 |
msgstr ""
|
4683 |
|
4684 |
+
#: tpl/page_optm/settings_media.tpl.php:121
|
4685 |
msgid "Specify the quality when generating LQIP."
|
4686 |
msgstr ""
|
4687 |
|
4688 |
+
#: tpl/page_optm/settings_media.tpl.php:122
|
4689 |
msgid ""
|
4690 |
"Larger number will generate higher resolution quality placeholder, but will "
|
4691 |
"result in larger files which will increase page size and consume more points."
|
4692 |
msgstr ""
|
4693 |
|
4694 |
+
#: tpl/page_optm/settings_media.tpl.php:125
|
4695 |
msgid ""
|
4696 |
"Changes to this setting do not apply to already-generated LQIPs. To "
|
4697 |
"regenerate existing LQIPs, please %s first from the admin bar menu."
|
4698 |
msgstr ""
|
4699 |
|
4700 |
+
#: tpl/page_optm/settings_media.tpl.php:138
|
4701 |
msgid "pixels"
|
4702 |
msgstr ""
|
4703 |
|
4704 |
+
#: tpl/page_optm/settings_media.tpl.php:140
|
4705 |
msgid ""
|
4706 |
"LQIP requests will not be sent for images where both width and height are "
|
4707 |
"smaller than these dimensions."
|
4708 |
msgstr ""
|
4709 |
|
4710 |
+
#: tpl/page_optm/settings_media.tpl.php:156
|
4711 |
msgid "Automatically generate LQIP in the background via a cron-based queue."
|
4712 |
msgstr ""
|
4713 |
|
4714 |
+
#: tpl/page_optm/settings_media.tpl.php:158
|
4715 |
msgid ""
|
4716 |
"If set to %1$s, before the placeholder is localized, the %2$s configuration "
|
4717 |
"will be used."
|
4718 |
msgstr ""
|
4719 |
|
4720 |
+
#: tpl/page_optm/settings_media.tpl.php:162
|
4721 |
msgid ""
|
4722 |
"If set to %s this is done in the foreground, which may slow down page load."
|
4723 |
msgstr ""
|
4724 |
|
4725 |
+
#: tpl/page_optm/settings_media.tpl.php:182
|
4726 |
msgid "Size list in queue waiting for cron"
|
4727 |
msgstr ""
|
4728 |
|
4729 |
+
#: tpl/page_optm/settings_media.tpl.php:213
|
4730 |
msgid "Load iframes only when they enter the viewport."
|
4731 |
msgstr ""
|
4732 |
|
4733 |
+
#: tpl/page_optm/settings_media.tpl.php:227
|
4734 |
msgid ""
|
4735 |
"Set an explicit width and height on image elements to reduce layout shifts "
|
4736 |
+
"and improve CLS (a Core Web Vitals metric)."
|
4737 |
msgstr ""
|
4738 |
|
4739 |
+
#: tpl/page_optm/settings_media.tpl.php:229
|
4740 |
msgid "Note: this option only works when %1$s is %2$s."
|
4741 |
msgstr ""
|
4742 |
|
4743 |
+
#: tpl/page_optm/settings_media.tpl.php:242
|
4744 |
msgid "Include the lazy load image JavaScript library inline."
|
4745 |
msgstr ""
|
4746 |
|
4748 |
msgid "Listed images will not be lazy loaded."
|
4749 |
msgstr ""
|
4750 |
|
4751 |
+
#: tpl/page_optm/settings_media_exc.tpl.php:27
|
4752 |
+
#: tpl/page_optm/settings_tuning.tpl.php:37
|
4753 |
+
#: tpl/page_optm/settings_tuning.tpl.php:58
|
4754 |
+
#: tpl/page_optm/settings_tuning.tpl.php:138
|
4755 |
+
#: tpl/page_optm/settings_tuning.tpl.php:159
|
4756 |
+
msgid "Elements with attribute %s in html code will be excluded."
|
4757 |
+
msgstr ""
|
4758 |
+
|
4759 |
#: tpl/page_optm/settings_media_exc.tpl.php:49
|
4760 |
msgid "Images containing these class names will not be lazy loaded."
|
4761 |
msgstr ""
|
4780 |
msgid "These images will not generate LQIP."
|
4781 |
msgstr ""
|
4782 |
|
|
|
|
|
|
|
|
|
4783 |
#: tpl/page_optm/settings_tuning.tpl.php:31
|
4784 |
msgid "Listed CSS files or inline CSS code will not be minified/combined."
|
4785 |
msgstr ""
|
4786 |
|
4787 |
#: tpl/page_optm/settings_tuning.tpl.php:38
|
4788 |
#: tpl/page_optm/settings_tuning.tpl.php:59
|
4789 |
+
#: tpl/page_optm/settings_tuning.tpl.php:76
|
4790 |
+
#: tpl/page_optm/settings_tuning.tpl.php:139
|
4791 |
msgid "Predefined list will also be combined w/ the above settings"
|
4792 |
msgstr ""
|
4793 |
|
4800 |
"List the CSS selector that its style should be always contained in UCSS."
|
4801 |
msgstr ""
|
4802 |
|
4803 |
+
#: tpl/page_optm/settings_tuning.tpl.php:74
|
4804 |
+
msgid "Wildcard %s supported."
|
4805 |
+
msgstr ""
|
4806 |
+
|
4807 |
+
#: tpl/page_optm/settings_tuning.tpl.php:90
|
4808 |
+
msgid ""
|
4809 |
+
"List post types where each item of that type should have its own CCSS "
|
4810 |
+
"generated."
|
4811 |
+
msgstr ""
|
4812 |
+
|
4813 |
+
#: tpl/page_optm/settings_tuning.tpl.php:91
|
4814 |
+
msgid ""
|
4815 |
+
"For example, if every Page on the site has different formatting, enter %s in "
|
4816 |
+
"the box. Separate critical CSS files will be stored for every Page on the "
|
4817 |
+
"site."
|
4818 |
+
msgstr ""
|
4819 |
+
|
4820 |
+
#: tpl/page_optm/settings_tuning.tpl.php:105
|
4821 |
+
msgid ""
|
4822 |
+
"Separate critical CSS files will be generated for paths containing these "
|
4823 |
+
"strings."
|
4824 |
+
msgstr ""
|
4825 |
+
|
4826 |
+
#: tpl/page_optm/settings_tuning.tpl.php:119
|
4827 |
msgid "Specify critical CSS rules for above-the-fold content when enabling %s."
|
4828 |
msgstr ""
|
4829 |
|
4830 |
+
#: tpl/page_optm/settings_tuning.tpl.php:132
|
4831 |
msgid "Listed JS files or inline JS code will not be deferred."
|
4832 |
msgstr ""
|
4833 |
|
4834 |
+
#: tpl/page_optm/settings_tuning.tpl.php:153
|
4835 |
+
msgid "Listed JS files or inline JS code will not be optimized by %s."
|
4836 |
+
msgstr ""
|
4837 |
+
|
4838 |
+
#: tpl/page_optm/settings_tuning.tpl.php:173
|
4839 |
msgid "Prevent any optimization of listed pages."
|
4840 |
msgstr ""
|
4841 |
|
4842 |
+
#: tpl/page_optm/settings_tuning.tpl.php:187
|
4843 |
msgid ""
|
4844 |
+
"Only optimize pages for guest (not logged in) visitors. If turned this OFF, "
|
4845 |
+
"CSS/JS/CCSS files will be doubled by each user group."
|
4846 |
msgstr ""
|
4847 |
|
4848 |
+
#: tpl/page_optm/settings_tuning.tpl.php:199
|
4849 |
msgid "Selected roles will be excluded from all optimizations."
|
4850 |
msgstr ""
|
4851 |
|
4852 |
+
#: tpl/toolbox/beta_test.tpl.php:21
|
4853 |
msgid "Try GitHub Version"
|
4854 |
msgstr ""
|
4855 |
|
4856 |
+
#: tpl/toolbox/beta_test.tpl.php:25
|
4857 |
msgid ""
|
4858 |
"Use this section to switch plugin versions. To beta test a GitHub commit, "
|
4859 |
"enter the commit URL in the field below."
|
4860 |
msgstr ""
|
4861 |
|
4862 |
+
#: tpl/toolbox/beta_test.tpl.php:26
|
4863 |
+
msgid "Example"
|
4864 |
+
msgstr ""
|
4865 |
+
|
4866 |
+
#: tpl/toolbox/beta_test.tpl.php:30
|
4867 |
msgid "Use latest GitHub Dev commit"
|
4868 |
msgstr ""
|
4869 |
|
4870 |
+
#: tpl/toolbox/beta_test.tpl.php:32
|
4871 |
msgid "Use latest GitHub Master commit"
|
4872 |
msgstr ""
|
4873 |
|
4874 |
+
#: tpl/toolbox/beta_test.tpl.php:34 tpl/toolbox/beta_test.tpl.php:45
|
4875 |
msgid "Use latest WordPress release version"
|
4876 |
msgstr ""
|
4877 |
|
4878 |
+
#: tpl/toolbox/beta_test.tpl.php:34
|
4879 |
msgid "OR"
|
4880 |
msgstr ""
|
4881 |
|
4882 |
+
#: tpl/toolbox/beta_test.tpl.php:44
|
4883 |
msgid ""
|
4884 |
"Press the %s button to use the most recent GitHub commit. Master is for "
|
4885 |
"release candidate & Dev is for experimental testing."
|
4886 |
msgstr ""
|
4887 |
|
4888 |
+
#: tpl/toolbox/beta_test.tpl.php:44
|
4889 |
msgid "Use latest GitHub Dev/Master commit"
|
4890 |
msgstr ""
|
4891 |
|
4892 |
+
#: tpl/toolbox/beta_test.tpl.php:45
|
4893 |
msgid ""
|
4894 |
"Press the %s button to stop beta testing and go back to the current release "
|
4895 |
"from the WordPress Plugin Directory."
|
4896 |
msgstr ""
|
4897 |
|
4898 |
+
#: tpl/toolbox/beta_test.tpl.php:48
|
4899 |
msgid ""
|
4900 |
"In order to avoid an upgrade error, you must be using %1$s or later before "
|
4901 |
"you can upgrade to %2$s versions."
|
5128 |
msgstr ""
|
5129 |
|
5130 |
#: tpl/toolbox/purge.tpl.php:80
|
|
|
|
|
|
|
|
|
5131 |
msgid "This will delete all generated image LQIP placeholder files"
|
5132 |
msgstr ""
|
5133 |
|
5134 |
+
#: tpl/toolbox/purge.tpl.php:89
|
5135 |
msgid "This will delete all cached Gravatar files"
|
5136 |
msgstr ""
|
5137 |
|
5138 |
+
#: tpl/toolbox/purge.tpl.php:98
|
5139 |
msgid ""
|
5140 |
"Purge the cache entries created by this plugin except for Critical CSS & "
|
5141 |
"LQIP caches"
|
5142 |
msgstr ""
|
5143 |
|
5144 |
+
#: tpl/toolbox/purge.tpl.php:107
|
5145 |
msgid "Empty Entire Cache"
|
5146 |
msgstr ""
|
5147 |
|
5148 |
+
#: tpl/toolbox/purge.tpl.php:108
|
5149 |
msgid ""
|
5150 |
"Clears all cache entries related to this site, <i>including other web "
|
5151 |
"applications</i>."
|
5152 |
msgstr ""
|
5153 |
|
5154 |
+
#: tpl/toolbox/purge.tpl.php:109
|
5155 |
msgid "This action should only be used if things are cached incorrectly."
|
5156 |
msgstr ""
|
5157 |
|
5158 |
+
#: tpl/toolbox/purge.tpl.php:113
|
5159 |
msgid "This will clear EVERYTHING inside the cache."
|
5160 |
msgstr ""
|
5161 |
|
5162 |
+
#: tpl/toolbox/purge.tpl.php:114
|
5163 |
msgid "This may cause heavy load on the server."
|
5164 |
msgstr ""
|
5165 |
|
5166 |
+
#: tpl/toolbox/purge.tpl.php:115
|
5167 |
msgid "If only the WordPress site should be purged, use Purge All."
|
5168 |
msgstr ""
|
5169 |
|
5170 |
+
#: tpl/toolbox/purge.tpl.php:159
|
5171 |
msgid "Purge By..."
|
5172 |
msgstr ""
|
5173 |
|
5174 |
+
#: tpl/toolbox/purge.tpl.php:161
|
5175 |
msgid "Select below for \"Purge by\" options."
|
5176 |
msgstr ""
|
5177 |
|
5178 |
+
#: tpl/toolbox/purge.tpl.php:188
|
5179 |
msgid "Category"
|
5180 |
msgstr ""
|
5181 |
|
5182 |
+
#: tpl/toolbox/purge.tpl.php:194
|
5183 |
msgid "Post ID"
|
5184 |
msgstr ""
|
5185 |
|
5186 |
+
#: tpl/toolbox/purge.tpl.php:200
|
5187 |
msgid "Tag"
|
5188 |
msgstr ""
|
5189 |
|
5190 |
+
#: tpl/toolbox/purge.tpl.php:212
|
5191 |
msgid ""
|
5192 |
"Purge pages by category name - e.g. %2$s should be used for the URL %1$s."
|
5193 |
msgstr ""
|
5194 |
|
5195 |
+
#: tpl/toolbox/purge.tpl.php:217
|
5196 |
msgid "Purge pages by post ID."
|
5197 |
msgstr ""
|
5198 |
|
5199 |
+
#: tpl/toolbox/purge.tpl.php:221
|
5200 |
msgid "Purge pages by tag name - e.g. %2$s should be used for the URL %1$s."
|
5201 |
msgstr ""
|
5202 |
|
5203 |
+
#: tpl/toolbox/purge.tpl.php:226
|
5204 |
msgid "Purge pages by relative or full URL."
|
5205 |
msgstr ""
|
5206 |
|
5207 |
+
#: tpl/toolbox/purge.tpl.php:227
|
5208 |
msgid "e.g. Use %s or %s."
|
5209 |
msgstr ""
|
5210 |
|
5211 |
+
#: tpl/toolbox/purge.tpl.php:240
|
5212 |
msgid "Purge List"
|
5213 |
msgstr ""
|
5214 |
|
lib/guest.cls.php
ADDED
@@ -0,0 +1,186 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace LiteSpeed\Lib;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Update guest vary
|
6 |
+
*
|
7 |
+
* @since 4.1
|
8 |
+
*/
|
9 |
+
class Guest {
|
10 |
+
const CONF_FILE = '.litespeed_conf.dat';
|
11 |
+
const HASH = 'hash'; // Not set-able
|
12 |
+
const O_CACHE_LOGIN_COOKIE = 'cache-login_cookie';
|
13 |
+
const O_DEBUG = 'debug';
|
14 |
+
const O_DEBUG_IPS = 'debug-ips';
|
15 |
+
const O_UTIL_NO_HTTPS_VARY = 'util-no_https_vary';
|
16 |
+
const O_GUEST_UAS = 'guest_uas';
|
17 |
+
const O_GUEST_IPS = 'guest_ips';
|
18 |
+
|
19 |
+
private static $_ip;
|
20 |
+
private static $_vary_name = '_lscache_vary'; // this default vary cookie is used for logged in status check
|
21 |
+
private $_conf = false;
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Construtor
|
25 |
+
*
|
26 |
+
* @since 4.1
|
27 |
+
*/
|
28 |
+
public function __construct() {
|
29 |
+
! defined( 'LSCWP_CONTENT_FOLDER' ) && define( 'LSCWP_CONTENT_FOLDER', dirname( dirname( dirname( __DIR__ ) ) ) );
|
30 |
+
// Load config
|
31 |
+
$this->_conf = file_get_contents( LSCWP_CONTENT_FOLDER . '/' . self::CONF_FILE );
|
32 |
+
if ( $this->_conf ) {
|
33 |
+
$this->_conf = json_decode( $this->_conf, true );
|
34 |
+
}
|
35 |
+
|
36 |
+
if ( ! empty( $this->_conf[ self::O_CACHE_LOGIN_COOKIE ] ) ) {
|
37 |
+
self::$_vary_name = $this->_conf[ self::O_CACHE_LOGIN_COOKIE ];
|
38 |
+
}
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Update Guest vary
|
43 |
+
*
|
44 |
+
* @since 4.0
|
45 |
+
*/
|
46 |
+
public function update_guest_vary() {
|
47 |
+
// This process must not be cached
|
48 |
+
header( 'X-LiteSpeed-Cache-Control: no-cache' );
|
49 |
+
|
50 |
+
if ( $this->always_guest() ) {
|
51 |
+
echo '[]';
|
52 |
+
exit;
|
53 |
+
}
|
54 |
+
|
55 |
+
// If contains vary already, don't reload to avoid infinite loop when parent page having browser cache
|
56 |
+
if ( $this->_conf && self::has_vary() ) {
|
57 |
+
echo '[]';
|
58 |
+
exit;
|
59 |
+
}
|
60 |
+
|
61 |
+
// Send vary cookie
|
62 |
+
$vary = 'guest_mode:1';
|
63 |
+
if ( $this->_conf && empty( $this->_conf[ self::O_DEBUG ] ) ) {
|
64 |
+
$vary = md5( $this->_conf[ self::HASH ] . $vary );
|
65 |
+
}
|
66 |
+
|
67 |
+
$expire = time() + 2 * 86400;
|
68 |
+
$is_ssl = ! empty( $this->_conf[ self::O_UTIL_NO_HTTPS_VARY ] ) ? false : $this->is_ssl();
|
69 |
+
setcookie( self::$_vary_name, $vary, $expire, '/', false, $is_ssl, true );
|
70 |
+
|
71 |
+
// return json
|
72 |
+
echo json_encode( array( 'reload' => 'yes' ) );
|
73 |
+
exit;
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* WP's is_ssl() func
|
78 |
+
*
|
79 |
+
* @since 4.1
|
80 |
+
*/
|
81 |
+
private function is_ssl() {
|
82 |
+
if ( isset( $_SERVER['HTTPS'] ) ) {
|
83 |
+
if ( 'on' === strtolower( $_SERVER['HTTPS'] ) ) {
|
84 |
+
return true;
|
85 |
+
}
|
86 |
+
|
87 |
+
if ( '1' == $_SERVER['HTTPS'] ) {
|
88 |
+
return true;
|
89 |
+
}
|
90 |
+
} elseif ( isset( $_SERVER['SERVER_PORT'] ) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
|
91 |
+
return true;
|
92 |
+
}
|
93 |
+
return false;
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Check if default vary has a value
|
98 |
+
*
|
99 |
+
* @since 1.1.3
|
100 |
+
* @access public
|
101 |
+
*/
|
102 |
+
public static function has_vary() {
|
103 |
+
if ( empty( $_COOKIE[ self::$_vary_name ] ) ) {
|
104 |
+
return false;
|
105 |
+
}
|
106 |
+
return $_COOKIE[ self::$_vary_name ];
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Detect if is a guest visitor or not
|
111 |
+
*
|
112 |
+
* @since 4.0
|
113 |
+
*/
|
114 |
+
public function always_guest() {
|
115 |
+
if ( empty( $_SERVER[ 'HTTP_USER_AGENT' ] ) ) {
|
116 |
+
return false;
|
117 |
+
}
|
118 |
+
|
119 |
+
$quoted_uas = array();
|
120 |
+
foreach ( $this->_conf[ self::O_GUEST_UAS ] as $v ) {
|
121 |
+
$quoted_uas[] = preg_quote( $v, '#' );
|
122 |
+
}
|
123 |
+
$match = preg_match( '#' . implode( '|', $quoted_uas ) . '#i', $_SERVER[ 'HTTP_USER_AGENT' ] );
|
124 |
+
if ( $match ) {
|
125 |
+
return true;
|
126 |
+
}
|
127 |
+
|
128 |
+
if ( $this->ip_access( $this->_conf[ self::O_GUEST_IPS ] ) ) {
|
129 |
+
return true;
|
130 |
+
}
|
131 |
+
|
132 |
+
return false;
|
133 |
+
}
|
134 |
+
|
135 |
+
/**
|
136 |
+
* Check if the ip is in the range
|
137 |
+
*
|
138 |
+
* @since 1.1.0
|
139 |
+
* @access public
|
140 |
+
*/
|
141 |
+
public function ip_access( $ip_list ) {
|
142 |
+
if ( ! $ip_list ) {
|
143 |
+
return false;
|
144 |
+
}
|
145 |
+
if ( ! isset( self::$_ip ) ) {
|
146 |
+
self::$_ip = self::get_ip();
|
147 |
+
}
|
148 |
+
// $uip = explode('.', $_ip);
|
149 |
+
// if(empty($uip) || count($uip) != 4) Return false;
|
150 |
+
// foreach($ip_list as $key => $ip) $ip_list[$key] = explode('.', trim($ip));
|
151 |
+
// foreach($ip_list as $key => $ip) {
|
152 |
+
// if(count($ip) != 4) continue;
|
153 |
+
// for($i = 0; $i <= 3; $i++) if($ip[$i] == '*') $ip_list[$key][$i] = $uip[$i];
|
154 |
+
// }
|
155 |
+
return in_array( self::$_ip, $ip_list );
|
156 |
+
}
|
157 |
+
|
158 |
+
/**
|
159 |
+
* Get client ip
|
160 |
+
*
|
161 |
+
* @since 1.1.0
|
162 |
+
* @since 1.6.5 changed to public
|
163 |
+
* @access public
|
164 |
+
* @return string
|
165 |
+
*/
|
166 |
+
public static function get_ip() {
|
167 |
+
$_ip = '';
|
168 |
+
if ( function_exists( 'apache_request_headers' ) ) {
|
169 |
+
$apache_headers = apache_request_headers();
|
170 |
+
$_ip = ! empty( $apache_headers['True-Client-IP'] ) ? $apache_headers['True-Client-IP'] : false;
|
171 |
+
if ( ! $_ip ) {
|
172 |
+
$_ip = ! empty( $apache_headers['X-Forwarded-For'] ) ? $apache_headers['X-Forwarded-For'] : false;
|
173 |
+
$_ip = explode( ',', $_ip );
|
174 |
+
$_ip = $_ip[ 0 ];
|
175 |
+
}
|
176 |
+
|
177 |
+
}
|
178 |
+
|
179 |
+
if ( ! $_ip ) {
|
180 |
+
$_ip = ! empty( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : false;
|
181 |
+
}
|
182 |
+
return $_ip;
|
183 |
+
}
|
184 |
+
|
185 |
+
|
186 |
+
}
|
lib/object-cache.php
CHANGED
@@ -19,7 +19,7 @@ if ( ! file_exists( $lscwp_dir . 'litespeed-cache.php' ) ) {
|
|
19 |
}
|
20 |
}
|
21 |
|
22 |
-
$data_file = WP_CONTENT_DIR . '/.
|
23 |
$lib_file = $lscwp_dir . 'src/object.lib.php';
|
24 |
|
25 |
// Can't find LSCWP location, terminate object cache process
|
19 |
}
|
20 |
}
|
21 |
|
22 |
+
$data_file = WP_CONTENT_DIR . '/.litespeed_conf.dat';
|
23 |
$lib_file = $lscwp_dir . 'src/object.lib.php';
|
24 |
|
25 |
// Can't find LSCWP location, terminate object cache process
|
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: 4.
|
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', '4.
|
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: 4.1
|
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', '4.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
|
readme.txt
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
=== LiteSpeed Cache ===
|
2 |
Contributors: LiteSpeedTech
|
3 |
-
Tags: caching, optimize, performance, pagespeed, seo, speed, image optimize, compress, object cache, redis, memcached, database cleaner
|
4 |
Requires at least: 4.0
|
5 |
-
Tested up to: 5.7.
|
6 |
Stable tag: 3.6.4
|
7 |
License: GPLv3
|
8 |
License URI: http://www.gnu.org/licenses/gpl.html
|
@@ -39,7 +39,7 @@ LiteSpeed Cache for WordPress is compatible with ClassicPress.
|
|
39 |
* Load CSS/JS Asynchronously
|
40 |
* Browser Cache Support<sup>+</sup>
|
41 |
* Database Cleaner and Optimizer
|
42 |
-
* PageSpeed score optimization
|
43 |
* OPcode Cache Support<sup>+</sup>
|
44 |
* HTTP/2 Push for CSS/JS (on web servers that support it)
|
45 |
* DNS Prefetch
|
@@ -126,11 +126,11 @@ The vast majority of plugins and themes are compatible with LSCache. [Our API](h
|
|
126 |
|
127 |
== Privacy ==
|
128 |
|
129 |
-
This plugin includes
|
130 |
|
131 |
**For your own information:** LiteSpeed Cache for WordPress potentially stores a duplicate copy of every web page on display on your site. The pages are stored locally on the system where LiteSpeed server software is installed and are not transferred to or accessed by LiteSpeed employees in any way, except as necessary in providing routine technical support if you request it. All cache files are temporary, and may easily be purged before their natural expiration, if necessary, via a Purge All command. It is up to individual site administrators to come up with their own cache expiration rules.
|
132 |
|
133 |
-
In addition to caching, our WordPress plugin has
|
134 |
|
135 |
Please see the [QUIC.cloud Privacy Policy](https://quic.cloud/privacy-policy/) for our complete Privacy/GDPR statement.
|
136 |
|
@@ -246,6 +246,51 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The
|
|
246 |
|
247 |
== Changelog ==
|
248 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
249 |
= 4.0 - Apr 30 2021 =
|
250 |
* 🌱🌱🌱**Guest** Introduced `Guest Mode` for instantly cacheable content on the first visit.
|
251 |
* 🌱**UCSS** Added a new service: `Unique CSS`, to drop unused CSS from elements from combined CSS
|
1 |
=== LiteSpeed Cache ===
|
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: 5.7.2
|
6 |
Stable tag: 3.6.4
|
7 |
License: GPLv3
|
8 |
License URI: http://www.gnu.org/licenses/gpl.html
|
39 |
* Load CSS/JS Asynchronously
|
40 |
* Browser Cache Support<sup>+</sup>
|
41 |
* Database Cleaner and Optimizer
|
42 |
+
* PageSpeed score (including Core Web Vitals) optimization
|
43 |
* OPcode Cache Support<sup>+</sup>
|
44 |
* HTTP/2 Push for CSS/JS (on web servers that support it)
|
45 |
* DNS Prefetch
|
126 |
|
127 |
== Privacy ==
|
128 |
|
129 |
+
This plugin includes some suggested text that you can add to your site's Privacy Policy via the Guide in the WordPress Privacy settings.
|
130 |
|
131 |
**For your own information:** LiteSpeed Cache for WordPress potentially stores a duplicate copy of every web page on display on your site. The pages are stored locally on the system where LiteSpeed server software is installed and are not transferred to or accessed by LiteSpeed employees in any way, except as necessary in providing routine technical support if you request it. All cache files are temporary, and may easily be purged before their natural expiration, if necessary, via a Purge All command. It is up to individual site administrators to come up with their own cache expiration rules.
|
132 |
|
133 |
+
In addition to caching, our WordPress plugin has online features provided by QUIC.cloud for Image Optimization, CSS Optimization and Low Quality Image Placeholder services. When one of those optimizations are requested, data is transmitted to a remote QUIC.cloud server, processed, and then transmitted back for use on your site. Now if using the QUIC.cloud CDN it uses LSCache technologies to access your site then host your site to others globally and also your data is not transferred to or accessed by QUIC.cloud employees in any way, except as necessary in providing maintenance or technical support. QUIC.cloud keeps copies of that data for up to 7 days and then permanently deletes them. Similarly, the WordPress plugin has a Reporting feature whereby a site owner can transmit an environment report to LiteSpeed so that we may better provide technical support. None of these features collects any visitor data. Only server and site data are involved.
|
134 |
|
135 |
Please see the [QUIC.cloud Privacy Policy](https://quic.cloud/privacy-policy/) for our complete Privacy/GDPR statement.
|
136 |
|
246 |
|
247 |
== Changelog ==
|
248 |
|
249 |
+
= 4.1 - Jun 25 2021 =
|
250 |
+
* 🌱**UCSS/CCSS/LQIP** Moved queue storage to file system from database wp-options table to lessen the IO load. (#633504)
|
251 |
+
* 🌱**3rd** Added an option to disable ESI for the WooCommerce Cart. (#358 @Anna Feng @Astrid Wang)
|
252 |
+
* **ESI** Fixed an ESI nonce issue introduced in v4.0. (@Andrew Choi)
|
253 |
+
* **Object** Used new `.litespeed_conf.dat` instead of `.object-cache.ini` for object cache configuration storage.
|
254 |
+
* **Conf** Now updating related files after plugin upgrade and not just after activation.
|
255 |
+
* 🌱**Guest** Added a Guest Mode JS Excludes option. (@Ankit @Mamac @Rcverma)
|
256 |
+
* **Guest** Guest Mode now uses a lightweight script to update guest vary for reduced server load.
|
257 |
+
* **Guest** Guest Mode now adds missing image dimensions.
|
258 |
+
* **Guest** Guest vary will no longer update if there's already a vary in place to address the infinite loop caused by CloudFlare's incorrect cache control setting for PHP.
|
259 |
+
* **Guest** Guest vary update request will no longer be sent if `lscache_vary` is already set.
|
260 |
+
* **Guest** Added a Configurable Guest Mode UA/IP under the Tuning tab in the General menu.
|
261 |
+
* **Guest** Guest Mode now allows cron to be hooked, even when UCSS/CCSS options are off. (#338437 @Stars)
|
262 |
+
* **Guest** Simplified the vary generation process under Guest Mode.
|
263 |
+
* **Guest** Added a Guest Mode HTML comment for easier debugging. (@Ruikai)
|
264 |
+
* **Guest** Guest vary update ajax now bypasses potential POST cache.
|
265 |
+
* **CCSS** Added back the options `Separate CCSS Cache Post Types` and `Separate CCSS Cache URIs`. (@Joshua @Ankit)
|
266 |
+
* **CCSS** CCSS/UCSS queue is now limited to a maximum of 500 entries.
|
267 |
+
* **Control** The cache control constant `LSCACHE_NO_CACHE` will now have a higher priority than the Forced Public Cache setting.
|
268 |
+
* **Crawler** The Crawler can now crawl Guest Mode pages.
|
269 |
+
* **Crawler** Fixed a potential XSS vulnerability in the Crawler settings. (#927355)
|
270 |
+
* **Crawler** The Crawler now supports a cookie value of `_null`. (@Tobolo)
|
271 |
+
* **Media** Updated the default value for the Responsive Placeholder SVG to be transparent.
|
272 |
+
* **Media** WebP images in the background may now be served in Guest Mode.
|
273 |
+
* **Media** WebP images in CSS may now be bypassed if the requesting Guest Mode client doesnt support WebP.
|
274 |
+
* **Media** Fixed empty default image placeholder under Guest Mode.
|
275 |
+
* 🐞**Image Optimize** Changed the missing `$_POST` to `$post_data` so the database status is properly updated. (#345 @Lucas)
|
276 |
+
* **Import** Export file is now readable to allow importing of partial configurations. (@Ryan D @Joshua)
|
277 |
+
* **Page Optimize** Fixed W3 validator errors in Guest Mode. (#61393817)
|
278 |
+
* **3rd** A fatal WooCommerce error is no longer triggered by a custom theme reusing a previous LSCWP cache detection tag.
|
279 |
+
* **3rd** AMP may now bypass Guest Mode automatically.
|
280 |
+
* **Localize** Dropped the `Localize Resources` option as Guest Mode is a sufficient replacement. (Note: Due to user feedback during the development period, we have decided to reinstate this option in a future version.)
|
281 |
+
* **Cloud** Changed the WP API url.
|
282 |
+
* **Lang** Corrected a missing language folder.
|
283 |
+
* **GUI** Added a CCSS/UCSS loading page visualization. (#360 @Astrid Wang @Anna Feng)
|
284 |
+
* **GUI** Added a warning to indicate when Guest Mode CCSS/UCSS quota is in use. (#361 @Astrid Wang @Anna Feng)
|
285 |
+
* **GUI** Added a `litespeed-info` text color. (@Astrid Wang)
|
286 |
+
* **GUI** Implemented various UI/UX improvements. (@Joshua @Lisa)
|
287 |
+
* **GUI** Duplicate cloud service messages with the same content will only display once now. (@Marc Dahl)
|
288 |
+
* **GUI** Added a WebP replacement warning for Guest Mode Optimization if WebP replacement is off.
|
289 |
+
* **Misc** Dropped `wp_assets` from distribution to reduce the package size. (@lowwebtech)
|
290 |
+
* **Misc** Increased the new version and score detection intervals.
|
291 |
+
* **Misc** Optimized WP Assets images. (#352 @lowwebtech)
|
292 |
+
* **Debug** Dropped the redudant error_log debug info.
|
293 |
+
|
294 |
= 4.0 - Apr 30 2021 =
|
295 |
* 🌱🌱🌱**Guest** Introduced `Guest Mode` for instantly cacheable content on the first visit.
|
296 |
* 🌱**UCSS** Added a new service: `Unique CSS`, to drop unused CSS from elements from combined CSS
|
src/activation.cls.php
CHANGED
@@ -20,6 +20,17 @@ class Activation extends Base {
|
|
20 |
|
21 |
const NETWORK_TRANSIENT_COUNT = 'lscwp_network_count';
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
/**
|
24 |
* The activation hook callback.
|
25 |
*
|
@@ -236,6 +247,10 @@ class Activation extends Base {
|
|
236 |
Admin_Display::error( $ex->getMessage() );
|
237 |
}
|
238 |
|
|
|
|
|
|
|
|
|
239 |
// delete in case it's not deleted prior to deactivation.
|
240 |
GUI::dismiss_whm();
|
241 |
}
|
@@ -250,6 +265,7 @@ class Activation extends Base {
|
|
250 |
* 2) adv-cache.php;
|
251 |
* 3) object-cache.php;
|
252 |
* 4) .htaccess;
|
|
|
253 |
*
|
254 |
* @since 3.0
|
255 |
* @access public
|
@@ -290,6 +306,74 @@ class Activation extends Base {
|
|
290 |
} catch ( \Exception $ex ) {
|
291 |
Admin_Display::error( $ex->getMessage() );
|
292 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
293 |
}
|
294 |
|
295 |
/**
|
20 |
|
21 |
const NETWORK_TRANSIENT_COUNT = 'lscwp_network_count';
|
22 |
|
23 |
+
private static $_data_file;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Construct
|
27 |
+
*
|
28 |
+
* @since 4.1
|
29 |
+
*/
|
30 |
+
public function __construct() {
|
31 |
+
self::$_data_file = LSCWP_CONTENT_DIR . '/' . self::CONF_FILE;
|
32 |
+
}
|
33 |
+
|
34 |
/**
|
35 |
* The activation hook callback.
|
36 |
*
|
247 |
Admin_Display::error( $ex->getMessage() );
|
248 |
}
|
249 |
|
250 |
+
/* 5) .litespeed_conf.dat; */
|
251 |
+
|
252 |
+
self::_del_conf_data_file();
|
253 |
+
|
254 |
// delete in case it's not deleted prior to deactivation.
|
255 |
GUI::dismiss_whm();
|
256 |
}
|
265 |
* 2) adv-cache.php;
|
266 |
* 3) object-cache.php;
|
267 |
* 4) .htaccess;
|
268 |
+
* 5) .litespeed_conf.dat;
|
269 |
*
|
270 |
* @since 3.0
|
271 |
* @access public
|
306 |
} catch ( \Exception $ex ) {
|
307 |
Admin_Display::error( $ex->getMessage() );
|
308 |
}
|
309 |
+
|
310 |
+
/* 5) .litespeed_conf.dat; */
|
311 |
+
|
312 |
+
if ( ( $options[ self::O_GUEST ] || $options[ self::O_OBJECT ] ) && ( ! $options[ self::O_DEBUG_DISABLE_ALL ] || is_multisite() ) ) {
|
313 |
+
$this->_update_conf_data_file( $options );
|
314 |
+
}
|
315 |
+
}
|
316 |
+
|
317 |
+
/**
|
318 |
+
* Delete data conf file
|
319 |
+
*
|
320 |
+
* @since 4.1
|
321 |
+
*/
|
322 |
+
private static function _del_conf_data_file() {
|
323 |
+
if ( file_exists( self::$_data_file ) ) {
|
324 |
+
unlink( self::$_data_file );
|
325 |
+
}
|
326 |
+
}
|
327 |
+
|
328 |
+
/**
|
329 |
+
* Update data conf file for guest mode & object cache
|
330 |
+
*
|
331 |
+
* @since 4.1
|
332 |
+
*/
|
333 |
+
private function _update_conf_data_file( $options ) {
|
334 |
+
$ids = array();
|
335 |
+
if ( $options[ self::O_OBJECT ] ) {
|
336 |
+
$this_ids = array(
|
337 |
+
self::O_OBJECT_KIND,
|
338 |
+
self::O_OBJECT_HOST,
|
339 |
+
self::O_OBJECT_PORT,
|
340 |
+
self::O_OBJECT_LIFE,
|
341 |
+
self::O_OBJECT_USER,
|
342 |
+
self::O_OBJECT_PSWD,
|
343 |
+
self::O_OBJECT_DB_ID,
|
344 |
+
self::O_OBJECT_PERSISTENT,
|
345 |
+
self::O_OBJECT_ADMIN,
|
346 |
+
self::O_OBJECT_TRANSIENTS,
|
347 |
+
self::O_OBJECT_GLOBAL_GROUPS,
|
348 |
+
self::O_OBJECT_NON_PERSISTENT_GROUPS,
|
349 |
+
);
|
350 |
+
$ids = array_merge( $ids, $this_ids );
|
351 |
+
}
|
352 |
+
|
353 |
+
if ( $options[ self::O_GUEST ] ) {
|
354 |
+
$this_ids = array(
|
355 |
+
self::HASH,
|
356 |
+
self::O_CACHE_LOGIN_COOKIE,
|
357 |
+
self::O_DEBUG,
|
358 |
+
self::O_DEBUG_IPS,
|
359 |
+
self::O_UTIL_NO_HTTPS_VARY,
|
360 |
+
self::O_GUEST_UAS,
|
361 |
+
self::O_GUEST_IPS,
|
362 |
+
);
|
363 |
+
$ids = array_merge( $ids, $this_ids );
|
364 |
+
}
|
365 |
+
|
366 |
+
$data = array();
|
367 |
+
foreach ( $ids as $v ) {
|
368 |
+
$data[ $v ] = $options[ $v ];
|
369 |
+
}
|
370 |
+
$data = json_encode( $data );
|
371 |
+
|
372 |
+
$old_data = File::read( self::$_data_file );
|
373 |
+
if ( $old_data != $data ) {
|
374 |
+
defined( 'LSCWP_LOG' ) && Debug2::debug( '[Activation] Updating .litespeed_conf.dat' );
|
375 |
+
File::save( self::$_data_file, $data );
|
376 |
+
}
|
377 |
}
|
378 |
|
379 |
/**
|
src/admin-display.cls.php
CHANGED
@@ -382,8 +382,8 @@ class Admin_Display extends Base {
|
|
382 |
$messages = self::get_option( $msg_name, array() );
|
383 |
|
384 |
if ( is_array($msg) ) {
|
385 |
-
foreach ($msg as $str) {
|
386 |
-
$messages[] = self::build_notice( $color, $str, $irremovable );
|
387 |
}
|
388 |
}
|
389 |
else {
|
382 |
$messages = self::get_option( $msg_name, array() );
|
383 |
|
384 |
if ( is_array($msg) ) {
|
385 |
+
foreach ( $msg as $k => $str ) {
|
386 |
+
$messages[ $k ] = self::build_notice( $color, $str, $irremovable );
|
387 |
}
|
388 |
}
|
389 |
else {
|
src/admin.cls.php
CHANGED
@@ -89,7 +89,7 @@ class Admin extends Root {
|
|
89 |
// Add privacy policy
|
90 |
// @since 2.2.6
|
91 |
if ( function_exists( 'wp_add_privacy_policy_content' ) ) {
|
92 |
-
wp_add_privacy_policy_content( Core::
|
93 |
}
|
94 |
|
95 |
$this->cls( 'Media' )->after_admin_init();
|
89 |
// Add privacy policy
|
90 |
// @since 2.2.6
|
91 |
if ( function_exists( 'wp_add_privacy_policy_content' ) ) {
|
92 |
+
wp_add_privacy_policy_content( Core::NAME, Doc::privacy_policy() );
|
93 |
}
|
94 |
|
95 |
$this->cls( 'Media' )->after_admin_init();
|
src/base.cls.php
CHANGED
@@ -26,6 +26,8 @@ class Base extends Root {
|
|
26 |
const O_GUEST = 'guest';
|
27 |
const O_GUEST_OPTM = 'guest_optm';
|
28 |
const O_NEWS = 'news';
|
|
|
|
|
29 |
|
30 |
## -------------------------------------------------- ##
|
31 |
## -------------- Cache ----------------- ##
|
@@ -135,17 +137,18 @@ class Base extends Root {
|
|
135 |
const O_OPTM_GGFONTS_RM = 'optm-ggfonts_rm';
|
136 |
const O_OPTM_CSS_ASYNC = 'optm-css_async';
|
137 |
const O_OPTM_CCSS_PER_URL = 'optm-ccss_per_url';
|
|
|
|
|
138 |
const O_OPTM_CSS_ASYNC_INLINE = 'optm-css_async_inline';
|
139 |
const O_OPTM_CSS_FONT_DISPLAY = 'optm-css_font_display';
|
140 |
const O_OPTM_JS_DEFER = 'optm-js_defer';
|
141 |
-
const O_OPTM_LOCALIZE = 'optm-localize';
|
142 |
-
const O_OPTM_LOCALIZE_DOMAINS = 'optm-localize_domains';
|
143 |
const O_OPTM_EMOJI_RM = 'optm-emoji_rm';
|
144 |
const O_OPTM_NOSCRIPT_RM = 'optm-noscript_rm';
|
145 |
const O_OPTM_GGFONTS_ASYNC = 'optm-ggfonts_async';
|
146 |
const O_OPTM_EXC_ROLES = 'optm-exc_roles';
|
147 |
const O_OPTM_CCSS_CON = 'optm-ccss_con';
|
148 |
const O_OPTM_JS_DEFER_EXC = 'optm-js_defer_exc';
|
|
|
149 |
const O_OPTM_DNS_PREFETCH = 'optm-dns_prefetch';
|
150 |
const O_OPTM_DNS_PREFETCH_CTRL = 'optm-dns_prefetch_ctrl';
|
151 |
const O_OPTM_EXC = 'optm-exc';
|
@@ -319,6 +322,8 @@ class Base extends Root {
|
|
319 |
self::O_GUEST => false,
|
320 |
self::O_GUEST_OPTM => false,
|
321 |
self::O_NEWS => false,
|
|
|
|
|
322 |
|
323 |
// Cache
|
324 |
self::O_CACHE => false,
|
@@ -414,6 +419,8 @@ class Base extends Root {
|
|
414 |
self::O_OPTM_GGFONTS_RM => false,
|
415 |
self::O_OPTM_CSS_ASYNC => false,
|
416 |
self::O_OPTM_CCSS_PER_URL => false,
|
|
|
|
|
417 |
self::O_OPTM_CSS_ASYNC_INLINE => false,
|
418 |
self::O_OPTM_CSS_FONT_DISPLAY => false,
|
419 |
self::O_OPTM_JS_DEFER => false,
|
@@ -423,6 +430,7 @@ class Base extends Root {
|
|
423 |
self::O_OPTM_EXC_ROLES => array(),
|
424 |
self::O_OPTM_CCSS_CON => '',
|
425 |
self::O_OPTM_JS_DEFER_EXC => array(),
|
|
|
426 |
self::O_OPTM_DNS_PREFETCH => array(),
|
427 |
self::O_OPTM_DNS_PREFETCH_CTRL => false,
|
428 |
self::O_OPTM_EXC => array(),
|
@@ -447,8 +455,6 @@ class Base extends Root {
|
|
447 |
self::O_DISCUSS_AVATAR_CACHE => false,
|
448 |
self::O_DISCUSS_AVATAR_CRON => false,
|
449 |
self::O_DISCUSS_AVATAR_CACHE_TTL => 0,
|
450 |
-
self::O_OPTM_LOCALIZE => false,
|
451 |
-
self::O_OPTM_LOCALIZE_DOMAINS => array(),
|
452 |
|
453 |
// Media
|
454 |
self::O_MEDIA_LAZY => false,
|
@@ -810,10 +816,10 @@ class Base extends Root {
|
|
810 |
// self::O_OPTM_CSS_EXC => 'uri', // Need to comment out for inline & external CSS
|
811 |
// self::O_OPTM_JS_EXC => 'uri',
|
812 |
self::O_OPTM_EXC => 'relative',
|
|
|
813 |
// self::O_OPTM_JS_DEFER_EXC => 'uri',
|
814 |
self::O_OPTM_DNS_PREFETCH => 'domain',
|
815 |
self::O_CDN_ORI => 'noprotocol', // `Original URLs`
|
816 |
-
// self::O_OPTM_LOCALIZE_DOMAINS => 'noprotocol', // `Localize Resources`
|
817 |
// self:: => '',
|
818 |
// self:: => '',
|
819 |
);
|
26 |
const O_GUEST = 'guest';
|
27 |
const O_GUEST_OPTM = 'guest_optm';
|
28 |
const O_NEWS = 'news';
|
29 |
+
const O_GUEST_UAS = 'guest_uas';
|
30 |
+
const O_GUEST_IPS = 'guest_ips';
|
31 |
|
32 |
## -------------------------------------------------- ##
|
33 |
## -------------- Cache ----------------- ##
|
137 |
const O_OPTM_GGFONTS_RM = 'optm-ggfonts_rm';
|
138 |
const O_OPTM_CSS_ASYNC = 'optm-css_async';
|
139 |
const O_OPTM_CCSS_PER_URL = 'optm-ccss_per_url';
|
140 |
+
const O_OPTM_CCSS_SEP_POSTTYPE = 'optm-ccss_sep_posttype';
|
141 |
+
const O_OPTM_CCSS_SEP_URI = 'optm-ccss_sep_uri';
|
142 |
const O_OPTM_CSS_ASYNC_INLINE = 'optm-css_async_inline';
|
143 |
const O_OPTM_CSS_FONT_DISPLAY = 'optm-css_font_display';
|
144 |
const O_OPTM_JS_DEFER = 'optm-js_defer';
|
|
|
|
|
145 |
const O_OPTM_EMOJI_RM = 'optm-emoji_rm';
|
146 |
const O_OPTM_NOSCRIPT_RM = 'optm-noscript_rm';
|
147 |
const O_OPTM_GGFONTS_ASYNC = 'optm-ggfonts_async';
|
148 |
const O_OPTM_EXC_ROLES = 'optm-exc_roles';
|
149 |
const O_OPTM_CCSS_CON = 'optm-ccss_con';
|
150 |
const O_OPTM_JS_DEFER_EXC = 'optm-js_defer_exc';
|
151 |
+
const O_OPTM_GM_JS_EXC = 'optm-gm_js_exc';
|
152 |
const O_OPTM_DNS_PREFETCH = 'optm-dns_prefetch';
|
153 |
const O_OPTM_DNS_PREFETCH_CTRL = 'optm-dns_prefetch_ctrl';
|
154 |
const O_OPTM_EXC = 'optm-exc';
|
322 |
self::O_GUEST => false,
|
323 |
self::O_GUEST_OPTM => false,
|
324 |
self::O_NEWS => false,
|
325 |
+
self::O_GUEST_UAS => array(),
|
326 |
+
self::O_GUEST_IPS => array(),
|
327 |
|
328 |
// Cache
|
329 |
self::O_CACHE => false,
|
419 |
self::O_OPTM_GGFONTS_RM => false,
|
420 |
self::O_OPTM_CSS_ASYNC => false,
|
421 |
self::O_OPTM_CCSS_PER_URL => false,
|
422 |
+
self::O_OPTM_CCSS_SEP_POSTTYPE => array(),
|
423 |
+
self::O_OPTM_CCSS_SEP_URI => array(),
|
424 |
self::O_OPTM_CSS_ASYNC_INLINE => false,
|
425 |
self::O_OPTM_CSS_FONT_DISPLAY => false,
|
426 |
self::O_OPTM_JS_DEFER => false,
|
430 |
self::O_OPTM_EXC_ROLES => array(),
|
431 |
self::O_OPTM_CCSS_CON => '',
|
432 |
self::O_OPTM_JS_DEFER_EXC => array(),
|
433 |
+
self::O_OPTM_GM_JS_EXC => array(),
|
434 |
self::O_OPTM_DNS_PREFETCH => array(),
|
435 |
self::O_OPTM_DNS_PREFETCH_CTRL => false,
|
436 |
self::O_OPTM_EXC => array(),
|
455 |
self::O_DISCUSS_AVATAR_CACHE => false,
|
456 |
self::O_DISCUSS_AVATAR_CRON => false,
|
457 |
self::O_DISCUSS_AVATAR_CACHE_TTL => 0,
|
|
|
|
|
458 |
|
459 |
// Media
|
460 |
self::O_MEDIA_LAZY => false,
|
816 |
// self::O_OPTM_CSS_EXC => 'uri', // Need to comment out for inline & external CSS
|
817 |
// self::O_OPTM_JS_EXC => 'uri',
|
818 |
self::O_OPTM_EXC => 'relative',
|
819 |
+
self::O_OPTM_CCSS_SEP_URI => 'uri',
|
820 |
// self::O_OPTM_JS_DEFER_EXC => 'uri',
|
821 |
self::O_OPTM_DNS_PREFETCH => 'domain',
|
822 |
self::O_CDN_ORI => 'noprotocol', // `Original URLs`
|
|
|
823 |
// self:: => '',
|
824 |
// self:: => '',
|
825 |
);
|
src/cloud.cls.php
CHANGED
@@ -9,6 +9,7 @@ defined( 'WPINC' ) || exit;
|
|
9 |
|
10 |
class Cloud extends Base {
|
11 |
const CLOUD_SERVER = 'https://api.quic.cloud';
|
|
|
12 |
const CLOUD_SERVER_DASH = 'https://my.quic.cloud';
|
13 |
|
14 |
const SVC_D_NODES = 'd/nodes';
|
@@ -32,18 +33,24 @@ class Cloud extends Base {
|
|
32 |
const EXPIRATION_REQ = 300; // Seconds of min interval between two unfinished requests
|
33 |
const EXPIRATION_TOKEN = 900; // Min intval to request a token 15m
|
34 |
|
35 |
-
const API_NEWS = 'wp/news';
|
36 |
const API_REPORT = 'wp/report' ;
|
37 |
-
const
|
38 |
-
const
|
|
|
39 |
|
40 |
private static $CENTER_SVC_SET = array(
|
41 |
self::SVC_D_NODES,
|
42 |
self::SVC_D_REGIONNODES,
|
43 |
self::SVC_D_SYNC_CONF,
|
44 |
self::SVC_D_USAGE,
|
45 |
-
self::API_NEWS,
|
46 |
self::API_REPORT,
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
self::API_VER,
|
48 |
self::API_BETA_TEST,
|
49 |
);
|
@@ -309,6 +316,10 @@ class Cloud extends Base {
|
|
309 |
return self::CLOUD_SERVER;
|
310 |
}
|
311 |
|
|
|
|
|
|
|
|
|
312 |
// Check if the stored server needs to be refreshed
|
313 |
if ( ! $force ) {
|
314 |
if ( ! empty( $this->_summary[ 'server.' . $service ] ) && ! empty( $this->_summary[ 'server_date.' . $service ] ) && $this->_summary[ 'server_date.' . $service ] > time() - 86400 * self::EXPIRATION_NODE ) {
|
@@ -479,7 +490,7 @@ class Cloud extends Base {
|
|
479 |
|
480 |
if ( $service_tag !== self::API_VER ) {
|
481 |
$msg = __( 'Cloud Error', 'litespeed-cache' ) . ': ' . sprintf( __( 'Please try after %1$s for service %2$s.', 'litespeed-cache' ), Utility::readable_time( $expired, 0, true ), '<code>' . $service_tag . '</code>' );
|
482 |
-
Admin_Display::error( $msg );
|
483 |
}
|
484 |
|
485 |
return false;
|
9 |
|
10 |
class Cloud extends Base {
|
11 |
const CLOUD_SERVER = 'https://api.quic.cloud';
|
12 |
+
const CLOUD_SERVER_WP = 'https://wpapi.quic.cloud';
|
13 |
const CLOUD_SERVER_DASH = 'https://my.quic.cloud';
|
14 |
|
15 |
const SVC_D_NODES = 'd/nodes';
|
33 |
const EXPIRATION_REQ = 300; // Seconds of min interval between two unfinished requests
|
34 |
const EXPIRATION_TOKEN = 900; // Min intval to request a token 15m
|
35 |
|
|
|
36 |
const API_REPORT = 'wp/report' ;
|
37 |
+
const API_NEWS = 'news';
|
38 |
+
const API_VER = 'ver';
|
39 |
+
const API_BETA_TEST = 'beta_test';
|
40 |
|
41 |
private static $CENTER_SVC_SET = array(
|
42 |
self::SVC_D_NODES,
|
43 |
self::SVC_D_REGIONNODES,
|
44 |
self::SVC_D_SYNC_CONF,
|
45 |
self::SVC_D_USAGE,
|
46 |
+
// self::API_NEWS,
|
47 |
self::API_REPORT,
|
48 |
+
// self::API_VER,
|
49 |
+
// self::API_BETA_TEST,
|
50 |
+
);
|
51 |
+
|
52 |
+
private static $WP_SVC_SET = array(
|
53 |
+
self::API_NEWS,
|
54 |
self::API_VER,
|
55 |
self::API_BETA_TEST,
|
56 |
);
|
316 |
return self::CLOUD_SERVER;
|
317 |
}
|
318 |
|
319 |
+
if ( in_array( $service, self::$WP_SVC_SET ) ) {
|
320 |
+
return self::CLOUD_SERVER_WP;
|
321 |
+
}
|
322 |
+
|
323 |
// Check if the stored server needs to be refreshed
|
324 |
if ( ! $force ) {
|
325 |
if ( ! empty( $this->_summary[ 'server.' . $service ] ) && ! empty( $this->_summary[ 'server_date.' . $service ] ) && $this->_summary[ 'server_date.' . $service ] > time() - 86400 * self::EXPIRATION_NODE ) {
|
490 |
|
491 |
if ( $service_tag !== self::API_VER ) {
|
492 |
$msg = __( 'Cloud Error', 'litespeed-cache' ) . ': ' . sprintf( __( 'Please try after %1$s for service %2$s.', 'litespeed-cache' ), Utility::readable_time( $expired, 0, true ), '<code>' . $service_tag . '</code>' );
|
493 |
+
Admin_Display::error( array( 'cloud_trylater' => $msg ) );
|
494 |
}
|
495 |
|
496 |
return false;
|
src/conf.cls.php
CHANGED
@@ -127,7 +127,11 @@ class Conf extends Base {
|
|
127 |
// Mark as conf loaded
|
128 |
! defined( 'LITESPEED_CONF_LOADED' ) && define( 'LITESPEED_CONF_LOADED', true );
|
129 |
|
130 |
-
|
|
|
|
|
|
|
|
|
131 |
if ( self::get_option( '__activation' ) ) {
|
132 |
// Check new version @since 2.9.3
|
133 |
Cloud::version_check( 'activate' . ( defined( 'LSCWP_REF' ) ? '_' . LSCWP_REF : '' ) );
|
127 |
// Mark as conf loaded
|
128 |
! defined( 'LITESPEED_CONF_LOADED' ) && define( 'LITESPEED_CONF_LOADED', true );
|
129 |
|
130 |
+
/**
|
131 |
+
* Activation delayed file update
|
132 |
+
* Pros: This is to avoid file correction script changed in new versions
|
133 |
+
* Cons: Conf upgrade won't get file correction if there is new values that are used in file
|
134 |
+
*/
|
135 |
if ( self::get_option( '__activation' ) ) {
|
136 |
// Check new version @since 2.9.3
|
137 |
Cloud::version_check( 'activate' . ( defined( 'LSCWP_REF' ) ? '_' . LSCWP_REF : '' ) );
|
src/control.cls.php
CHANGED
@@ -391,6 +391,11 @@ class Control extends Root {
|
|
391 |
* @return bool True if is still cacheable, otherwise false.
|
392 |
*/
|
393 |
public static function is_cacheable() {
|
|
|
|
|
|
|
|
|
|
|
394 |
// Guest mode always cacheable
|
395 |
if ( defined( 'LITESPEED_GUEST' ) && LITESPEED_GUEST ) {
|
396 |
return true;
|
@@ -529,8 +534,15 @@ class Control extends Root {
|
|
529 |
|
530 |
// Guest mode directly return cacheable result
|
531 |
if ( defined( 'LITESPEED_GUEST' ) && LITESPEED_GUEST ) {
|
532 |
-
|
533 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
534 |
return $hdr;
|
535 |
}
|
536 |
|
@@ -609,11 +621,6 @@ class Control extends Root {
|
|
609 |
return;
|
610 |
}
|
611 |
|
612 |
-
if ( defined('LSCACHE_NO_CACHE') && LSCACHE_NO_CACHE ) {
|
613 |
-
self::set_nocache('LSCACHE_NO_CACHE constant defined');
|
614 |
-
return;
|
615 |
-
}
|
616 |
-
|
617 |
// Apply 3rd party filter
|
618 |
// NOTE: Hook always needs to run asap because some 3rd party set is_mobile in this hook
|
619 |
do_action('litespeed_control_finalize', defined( 'LSCACHE_IS_ESI' ) ? LSCACHE_IS_ESI : false ); // Pass ESI block id
|
391 |
* @return bool True if is still cacheable, otherwise false.
|
392 |
*/
|
393 |
public static function is_cacheable() {
|
394 |
+
if ( defined( 'LSCACHE_NO_CACHE' ) && LSCACHE_NO_CACHE ) {
|
395 |
+
Debug2::debug( '[Ctrl] LSCACHE_NO_CACHE constant defined' );
|
396 |
+
return false;
|
397 |
+
}
|
398 |
+
|
399 |
// Guest mode always cacheable
|
400 |
if ( defined( 'LITESPEED_GUEST' ) && LITESPEED_GUEST ) {
|
401 |
return true;
|
534 |
|
535 |
// Guest mode directly return cacheable result
|
536 |
if ( defined( 'LITESPEED_GUEST' ) && LITESPEED_GUEST ) {
|
537 |
+
// If is POST, no cache
|
538 |
+
if ( defined( 'LSCACHE_NO_CACHE' ) && LSCACHE_NO_CACHE ) {
|
539 |
+
$hdr .= 'no-cache';
|
540 |
+
}
|
541 |
+
else {
|
542 |
+
$hdr .= 'public';
|
543 |
+
$hdr .= ',max-age=' . $this->get_ttl();
|
544 |
+
}
|
545 |
+
|
546 |
return $hdr;
|
547 |
}
|
548 |
|
621 |
return;
|
622 |
}
|
623 |
|
|
|
|
|
|
|
|
|
|
|
624 |
// Apply 3rd party filter
|
625 |
// NOTE: Hook always needs to run asap because some 3rd party set is_mobile in this hook
|
626 |
do_action('litespeed_control_finalize', defined( 'LSCACHE_IS_ESI' ) ? LSCACHE_IS_ESI : false ); // Pass ESI block id
|
src/core.cls.php
CHANGED
@@ -90,6 +90,17 @@ class Core extends Root {
|
|
90 |
* @since 2.9.4
|
91 |
*/
|
92 |
$this->cls( 'REST' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
}
|
94 |
|
95 |
/**
|
@@ -579,6 +590,10 @@ class Core extends Root {
|
|
579 |
$this->footer_comment .= "\n<!-- Object Cache " . \WP_Object_Cache::get_instance()->debug() . " -->";
|
580 |
}
|
581 |
|
|
|
|
|
|
|
|
|
582 |
if ( $is_forced ) {
|
583 |
Debug2::debug( '--forced--' );
|
584 |
}
|
90 |
* @since 2.9.4
|
91 |
*/
|
92 |
$this->cls( 'REST' );
|
93 |
+
|
94 |
+
/**
|
95 |
+
* Hook wpnonce function
|
96 |
+
*
|
97 |
+
* Note: ESI nonce won't be available until hook after_setup_theme ESI init due to Guest Mode concern
|
98 |
+
* @since v4.1
|
99 |
+
*/
|
100 |
+
if ( $this->cls( 'Router' )->esi_enabled() && ! function_exists( 'wp_create_nonce' ) ) {
|
101 |
+
Debug2::debug( '[ESI] Overwrite wp_create_nonce()' );
|
102 |
+
litespeed_define_nonce_func();
|
103 |
+
}
|
104 |
}
|
105 |
|
106 |
/**
|
590 |
$this->footer_comment .= "\n<!-- Object Cache " . \WP_Object_Cache::get_instance()->debug() . " -->";
|
591 |
}
|
592 |
|
593 |
+
if ( defined( 'LITESPEED_GUEST' ) && LITESPEED_GUEST && $running_info_showing ) {
|
594 |
+
$this->footer_comment .= "\n<!-- Guest Mode -->";
|
595 |
+
}
|
596 |
+
|
597 |
if ( $is_forced ) {
|
598 |
Debug2::debug( '--forced--' );
|
599 |
}
|
src/crawler.cls.php
CHANGED
@@ -209,6 +209,10 @@ class Crawler extends Root {
|
|
209 |
continue;
|
210 |
}
|
211 |
|
|
|
|
|
|
|
|
|
212 |
$this->_crawler_conf[ 'cookies' ][ substr( $k, 7 ) ] = $v;
|
213 |
}
|
214 |
|
@@ -696,9 +700,12 @@ class Crawler extends Root {
|
|
696 |
*
|
697 |
* @since 3.3
|
698 |
*/
|
699 |
-
public function self_curl( $url, $ua, $uid = false ) {
|
700 |
$this->_crawler_conf[ 'base' ] = home_url();
|
701 |
$this->_crawler_conf[ 'ua' ] = $ua;
|
|
|
|
|
|
|
702 |
if ( $uid ) {
|
703 |
$this->_crawler_conf[ 'cookies' ][ 'litespeed_role' ] = $uid;
|
704 |
$this->_crawler_conf[ 'cookies' ][ 'litespeed_hash' ] = Router::get_hash();
|
@@ -768,6 +775,16 @@ class Crawler extends Root {
|
|
768 |
$crawler_factors[ 'webp' ] = array( 1 => 'WebP', 0 => '' );
|
769 |
}
|
770 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
771 |
// Mobile crawler
|
772 |
if ( $this->conf( Base::O_CACHE_MOBILE ) ) {
|
773 |
$crawler_factors[ 'mobile' ] = array( 1 => '<font data-balloon-pos="up" aria-label="Mobile">📱</font>', 0 => '' );
|
@@ -800,7 +817,7 @@ class Crawler extends Root {
|
|
800 |
$crawler_factors[ $this_cookie_key ] = array();
|
801 |
|
802 |
foreach ( $v[ 'vals' ] as $v2 ) {
|
803 |
-
$crawler_factors[ $this_cookie_key ][ $v2 ] = '<font data-balloon-pos="up" aria-label="Cookie">🍪</font>' . $v[ 'name' ] . '=' . $v2;
|
804 |
}
|
805 |
}
|
806 |
|
209 |
continue;
|
210 |
}
|
211 |
|
212 |
+
if ( $v == '_null' ) {
|
213 |
+
continue;
|
214 |
+
}
|
215 |
+
|
216 |
$this->_crawler_conf[ 'cookies' ][ substr( $k, 7 ) ] = $v;
|
217 |
}
|
218 |
|
700 |
*
|
701 |
* @since 3.3
|
702 |
*/
|
703 |
+
public function self_curl( $url, $ua, $uid = false, $accept = false ) { // $accept not in use yet
|
704 |
$this->_crawler_conf[ 'base' ] = home_url();
|
705 |
$this->_crawler_conf[ 'ua' ] = $ua;
|
706 |
+
if ( $accept ) {
|
707 |
+
$this->_crawler_conf[ 'headers' ] = array( 'Accept: ' . $accept );
|
708 |
+
}
|
709 |
if ( $uid ) {
|
710 |
$this->_crawler_conf[ 'cookies' ][ 'litespeed_role' ] = $uid;
|
711 |
$this->_crawler_conf[ 'cookies' ][ 'litespeed_hash' ] = Router::get_hash();
|
775 |
$crawler_factors[ 'webp' ] = array( 1 => 'WebP', 0 => '' );
|
776 |
}
|
777 |
|
778 |
+
// Guest Mode on/off
|
779 |
+
if ( $this->conf( Base::O_GUEST ) ) {
|
780 |
+
$vary_name = $this->cls( 'Vary' )->get_vary_name();
|
781 |
+
$vary_val = 'guest_mode:1';
|
782 |
+
if ( ! defined( 'LSCWP_LOG' ) ) {
|
783 |
+
$vary_val = md5( $this->conf( Base::HASH ) . $vary_val );
|
784 |
+
}
|
785 |
+
$crawler_factors[ 'cookie:' . $vary_name ] = array( $vary_val => '', '_null' => '<font data-balloon-pos="up" aria-label="Guest Mode">👒</font>' );
|
786 |
+
}
|
787 |
+
|
788 |
// Mobile crawler
|
789 |
if ( $this->conf( Base::O_CACHE_MOBILE ) ) {
|
790 |
$crawler_factors[ 'mobile' ] = array( 1 => '<font data-balloon-pos="up" aria-label="Mobile">📱</font>', 0 => '' );
|
817 |
$crawler_factors[ $this_cookie_key ] = array();
|
818 |
|
819 |
foreach ( $v[ 'vals' ] as $v2 ) {
|
820 |
+
$crawler_factors[ $this_cookie_key ][ $v2 ] = $v2 == '_null' ? '' : '<font data-balloon-pos="up" aria-label="Cookie">🍪</font>' . esc_html( $v[ 'name' ] ) . '=' . esc_html( $v2 );
|
821 |
}
|
822 |
}
|
823 |
|
src/css.cls.php
CHANGED
@@ -87,11 +87,8 @@ class CSS extends Base {
|
|
87 |
file_exists( LITESPEED_STATIC_DIR . '/ucss' ) && File::rrmdir( LITESPEED_STATIC_DIR . '/ucss' );
|
88 |
}
|
89 |
|
90 |
-
// Clear
|
91 |
-
$this->_summary
|
92 |
-
$this->_summary[ 'queue_ucss' ] = array();
|
93 |
-
$this->_summary[ 'curr_request_ccss' ] = 0;
|
94 |
-
$this->_summary[ 'curr_request_ucss' ] = 0;
|
95 |
self::save_summary();
|
96 |
|
97 |
Debug2::debug2( '[CSS] Cleared ccss/ucss queue' );
|
@@ -125,8 +122,22 @@ class CSS extends Base {
|
|
125 |
return $request_url;
|
126 |
}
|
127 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
// Per posttype
|
129 |
-
return
|
130 |
}
|
131 |
|
132 |
/**
|
@@ -153,33 +164,81 @@ class CSS extends Base {
|
|
153 |
|
154 |
$uid = get_current_user_id();
|
155 |
|
|
|
|
|
|
|
156 |
// Store it to prepare for cron
|
157 |
-
|
158 |
-
|
|
|
|
|
|
|
159 |
}
|
|
|
160 |
$queue_k = ( strlen( $vary ) > 32 ? md5( $vary ) : $vary ) . ' ' . $url_tag;
|
161 |
-
$
|
162 |
'url' => $request_url,
|
163 |
-
'user_agent' => substr( $
|
164 |
'is_mobile' => $this->_separate_mobile_ccss(),
|
|
|
165 |
'uid' => $uid,
|
166 |
'vary' => $vary,
|
167 |
'url_tag' => $url_tag,
|
168 |
); // Current UA will be used to request
|
169 |
-
|
|
|
170 |
|
171 |
// Prepare cache tag for later purge
|
172 |
Tag::add( 'CCSS.' . md5( $queue_k ) );
|
173 |
|
174 |
-
// For v4.
|
175 |
-
if ( isset( $this->_summary[ 'ccss_type_history' ] ) ) {
|
176 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
177 |
}
|
178 |
|
179 |
-
self::save_summary();
|
180 |
return null;
|
181 |
}
|
182 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
183 |
/**
|
184 |
* Get UCSS path
|
185 |
*
|
@@ -202,25 +261,42 @@ class CSS extends Base {
|
|
202 |
|
203 |
$uid = get_current_user_id();
|
204 |
|
|
|
|
|
205 |
// Store it for cron
|
206 |
-
|
207 |
-
|
|
|
|
|
|
|
208 |
}
|
|
|
209 |
$queue_k = ( strlen( $vary ) > 32 ? md5( $vary ) : $vary ) . ' ' . $url_tag;
|
210 |
-
$
|
211 |
'url' => $request_url,
|
212 |
-
'user_agent' => substr( $
|
213 |
'is_mobile' => $this->_separate_mobile_ccss(),
|
|
|
214 |
'uid' => $uid,
|
215 |
'vary' => $vary,
|
216 |
'url_tag' => $url_tag,
|
217 |
); // Current UA will be used to request
|
218 |
-
|
|
|
219 |
|
220 |
// Prepare cache tag for later purge
|
221 |
Tag::add( 'UCSS.' . md5( $queue_k ) );
|
222 |
|
223 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
224 |
|
225 |
return false;
|
226 |
}
|
@@ -243,7 +319,10 @@ class CSS extends Base {
|
|
243 |
*/
|
244 |
public static function cron_ccss( $continue = false ) {
|
245 |
$_instance = self::cls();
|
246 |
-
|
|
|
|
|
|
|
247 |
return;
|
248 |
}
|
249 |
|
@@ -256,8 +335,9 @@ class CSS extends Base {
|
|
256 |
}
|
257 |
|
258 |
$i = 0;
|
259 |
-
foreach ( $
|
260 |
-
|
|
|
261 |
Debug2::debug( '[CCSS] cron job [tag] ' . $k . ' [url] ' . $v[ 'url' ] . ( $v[ 'is_mobile' ] ? ' 📱 ' : '' ) . ' [UA] ' . $v[ 'user_agent' ] );
|
262 |
|
263 |
if ( empty( $v[ 'url_tag' ] ) ) {
|
@@ -265,8 +345,12 @@ class CSS extends Base {
|
|
265 |
continue;
|
266 |
}
|
267 |
|
|
|
|
|
|
|
|
|
268 |
$i ++;
|
269 |
-
$res = $_instance->_generate( $v[ 'url' ], $k, $v[ 'uid' ], $v[ 'user_agent' ], $v[ 'vary' ], $v[ 'url_tag' ], 'ccss', $v[ 'is_mobile' ] );
|
270 |
|
271 |
if ( $res ) {
|
272 |
Purge::add( 'CCSS.' . md5( $k ) );
|
@@ -278,6 +362,7 @@ class CSS extends Base {
|
|
278 |
}
|
279 |
|
280 |
if ( $i > 3 ) {
|
|
|
281 |
return Router::self_redirect( Router::ACTION_CSS, CSS::TYPE_GEN_CCSS );
|
282 |
}
|
283 |
}
|
@@ -290,7 +375,10 @@ class CSS extends Base {
|
|
290 |
*/
|
291 |
public static function cron_ucss( $continue = false ) {
|
292 |
$_instance = self::cls();
|
293 |
-
|
|
|
|
|
|
|
294 |
return;
|
295 |
}
|
296 |
|
@@ -303,12 +391,17 @@ class CSS extends Base {
|
|
303 |
}
|
304 |
|
305 |
$i = 0;
|
306 |
-
foreach ( $
|
307 |
-
|
|
|
308 |
Debug2::debug( '[UCSS] cron job [tag] ' . $k . ' [url] ' . $v[ 'url' ] . ( $v[ 'is_mobile' ] ? ' 📱 ' : '' ) . ' [UA] ' . $v[ 'user_agent' ] );
|
309 |
|
|
|
|
|
|
|
|
|
310 |
$i ++;
|
311 |
-
$res = $_instance->_generate( $v[ 'url' ], $k, $v[ 'uid' ], $v[ 'user_agent' ], $v[ 'vary' ], $v[ 'url_tag' ], 'ucss', $v[ 'is_mobile' ] );
|
312 |
|
313 |
if ( $res ) {
|
314 |
Purge::add( 'UCSS.' . md5( $k ) );
|
@@ -320,18 +413,46 @@ class CSS extends Base {
|
|
320 |
}
|
321 |
|
322 |
if ( $i > 3 ) {
|
|
|
323 |
return Router::self_redirect( Router::ACTION_CSS, CSS::TYPE_GEN_UCSS );
|
324 |
}
|
325 |
}
|
326 |
}
|
327 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
328 |
/**
|
329 |
* Send to QC API to generate CCSS/UCSS
|
330 |
*
|
331 |
* @since 2.3
|
332 |
* @access private
|
333 |
*/
|
334 |
-
private function _generate( $request_url, $queue_k, $uid, $user_agent, $vary, $url_tag, $type, $is_mobile ) {
|
335 |
set_time_limit( 120 );
|
336 |
|
337 |
// Check if has credit to push
|
@@ -356,10 +477,10 @@ class CSS extends Base {
|
|
356 |
// Parse HTML to gather all CSS content before requesting
|
357 |
$css = false;
|
358 |
if ( $type == 'ccss' ) {
|
359 |
-
list( $css, $html ) = $this->_prepare_css( $html );
|
360 |
}
|
361 |
else {
|
362 |
-
list( , $html ) = $this->_prepare_css( $html, true ); // Use this to drop CSS from HTML as we don't need those CSS to generate UCSS
|
363 |
$filename = $this->cls( 'Data' )->load_url_file( $url_tag, $vary, 'css' );
|
364 |
$filepath_prefix = $this->_build_filepath_prefix( 'css' );
|
365 |
$static_file = LITESPEED_STATIC_DIR . $filepath_prefix . $filename . '.css';
|
@@ -380,6 +501,7 @@ class CSS extends Base {
|
|
380 |
'ccss_type' => $queue_k,
|
381 |
'user_agent' => $user_agent,
|
382 |
'is_mobile' => $is_mobile ? 1 : 0, // todo:compatible w/ tablet
|
|
|
383 |
'html' => $html,
|
384 |
'css' => $css,
|
385 |
);
|
@@ -439,7 +561,7 @@ class CSS extends Base {
|
|
439 |
public function test_url( $request_url ) {
|
440 |
$user_agent = $_SERVER[ 'HTTP_USER_AGENT' ];
|
441 |
$html = $this->_prepare_html( $request_url, $user_agent );
|
442 |
-
list( $css, $html ) = $this->_prepare_css( $html, true );
|
443 |
// var_dump( $css );
|
444 |
// $html = <<<EOT
|
445 |
|
@@ -488,7 +610,7 @@ class CSS extends Base {
|
|
488 |
*
|
489 |
* @since 3.4.3
|
490 |
*/
|
491 |
-
private function _prepare_css( $html, $dryrun = false ) {
|
492 |
$css = '';
|
493 |
preg_match_all( '#<link ([^>]+)/?>|<style([^>]*)>([^<]+)</style>#isU', $html, $matches, PREG_SET_ORDER );
|
494 |
foreach ( $matches as $match ) {
|
@@ -547,7 +669,9 @@ class CSS extends Base {
|
|
547 |
}
|
548 |
|
549 |
$con = Optimizer::minify_css( $con );
|
550 |
-
|
|
|
|
|
551 |
|
552 |
if ( ! empty( $attrs[ 'media' ] ) && $attrs[ 'media' ] !== 'all' ) {
|
553 |
$con = '@media ' . $attrs[ 'media' ] . '{' . $con . "}\n";
|
@@ -588,43 +712,6 @@ class CSS extends Base {
|
|
588 |
return $whitelist;
|
589 |
}
|
590 |
|
591 |
-
/**
|
592 |
-
* Pop up the current request and save
|
593 |
-
*
|
594 |
-
* @since 3.0
|
595 |
-
*/
|
596 |
-
private function _popup_and_save( $type, $queue_k, $request_url ) {
|
597 |
-
if ( empty( $this->_summary[ $type . '_history' ] ) ) {
|
598 |
-
$this->_summary[ $type . '_history' ] = array();
|
599 |
-
}
|
600 |
-
$this->_summary[ $type . '_history' ][ $queue_k ] = $request_url;
|
601 |
-
|
602 |
-
while ( count( $this->_summary[ $type . '_history' ] ) > 10 ) {
|
603 |
-
array_shift( $this->_summary[ $type . '_history' ] );
|
604 |
-
}
|
605 |
-
|
606 |
-
unset( $this->_summary[ 'queue_' . $type ][ $queue_k ] );
|
607 |
-
|
608 |
-
self::save_summary();
|
609 |
-
}
|
610 |
-
|
611 |
-
/**
|
612 |
-
* Clear all waiting queues
|
613 |
-
*
|
614 |
-
* @since 3.4
|
615 |
-
*/
|
616 |
-
public function clear_q( $type ) {
|
617 |
-
if ( empty( $this->_summary[ 'queue_' . $type ] ) ) {
|
618 |
-
return;
|
619 |
-
}
|
620 |
-
|
621 |
-
$this->_summary[ 'queue_' . $type ] = array();
|
622 |
-
self::save_summary();
|
623 |
-
|
624 |
-
$msg = __( 'Queue cleared successfully.', 'litespeed-cache' );
|
625 |
-
Admin_Display::succeed( $msg );
|
626 |
-
}
|
627 |
-
|
628 |
/**
|
629 |
* Handle all request actions from main cls
|
630 |
*
|
87 |
file_exists( LITESPEED_STATIC_DIR . '/ucss' ) && File::rrmdir( LITESPEED_STATIC_DIR . '/ucss' );
|
88 |
}
|
89 |
|
90 |
+
// Clear All summary data
|
91 |
+
$this->_summary = array();
|
|
|
|
|
|
|
92 |
self::save_summary();
|
93 |
|
94 |
Debug2::debug2( '[CSS] Cleared ccss/ucss queue' );
|
122 |
return $request_url;
|
123 |
}
|
124 |
|
125 |
+
$sep_uri = $this->conf( self::O_OPTM_CCSS_SEP_URI );
|
126 |
+
if ( $sep_uri && $hit = Utility::str_hit_array( $request_url, $sep_uri ) ) {
|
127 |
+
Debug2::debug( '[CCSS] Separate CCSS due to separate URI setting: ' . $hit );
|
128 |
+
return $request_url;
|
129 |
+
}
|
130 |
+
|
131 |
+
$pt = Utility::page_type();
|
132 |
+
|
133 |
+
$sep_pt = $this->conf( self::O_OPTM_CCSS_SEP_POSTTYPE );
|
134 |
+
if ( in_array( $pt, $sep_pt ) ) {
|
135 |
+
Debug2::debug( '[CCSS] Separate CCSS due to posttype setting: ' . $pt );
|
136 |
+
return $request_url;
|
137 |
+
}
|
138 |
+
|
139 |
// Per posttype
|
140 |
+
return $pt;
|
141 |
}
|
142 |
|
143 |
/**
|
164 |
|
165 |
$uid = get_current_user_id();
|
166 |
|
167 |
+
$ua = ! empty( $_SERVER[ 'HTTP_USER_AGENT' ] ) ? $_SERVER[ 'HTTP_USER_AGENT' ] : '';
|
168 |
+
|
169 |
+
|
170 |
// Store it to prepare for cron
|
171 |
+
$queue = $this->load_queue( 'ccss' );
|
172 |
+
|
173 |
+
if ( count( $queue ) > 500 ) {
|
174 |
+
Debug2::debug( '[CSS] CCSS Queue is full - 500' );
|
175 |
+
return null;
|
176 |
}
|
177 |
+
|
178 |
$queue_k = ( strlen( $vary ) > 32 ? md5( $vary ) : $vary ) . ' ' . $url_tag;
|
179 |
+
$queue[ $queue_k ] = array(
|
180 |
'url' => $request_url,
|
181 |
+
'user_agent' => substr( $ua, 0, 200 ),
|
182 |
'is_mobile' => $this->_separate_mobile_ccss(),
|
183 |
+
'is_webp' => $this->cls( 'Media' )->webp_support() ? 1 : 0,
|
184 |
'uid' => $uid,
|
185 |
'vary' => $vary,
|
186 |
'url_tag' => $url_tag,
|
187 |
); // Current UA will be used to request
|
188 |
+
$this->save_queue( 'ccss', $queue );
|
189 |
+
Debug2::debug( '[CSS] Added queue_ccss [url_tag] ' . $url_tag . ' [UA] ' . $ua . ' [vary] ' . $vary . ' [uid] ' . $uid );
|
190 |
|
191 |
// Prepare cache tag for later purge
|
192 |
Tag::add( 'CCSS.' . md5( $queue_k ) );
|
193 |
|
194 |
+
// For v4.1- clean up
|
195 |
+
if ( isset( $this->_summary[ 'ccss_type_history' ] ) || isset( $this->_summary[ 'ccss_history' ] ) || isset( $this->_summary[ 'queue_ccss' ] ) ) {
|
196 |
+
if ( isset( $this->_summary[ 'ccss_type_history' ] ) ) {
|
197 |
+
unset( $this->_summary[ 'ccss_type_history' ] );
|
198 |
+
}
|
199 |
+
if ( isset( $this->_summary[ 'ccss_history' ] ) ) {
|
200 |
+
unset( $this->_summary[ 'ccss_history' ] );
|
201 |
+
}
|
202 |
+
if ( isset( $this->_summary[ 'queue_ccss' ] ) ) {
|
203 |
+
unset( $this->_summary[ 'queue_ccss' ] );
|
204 |
+
}
|
205 |
+
self::save_summary();
|
206 |
}
|
207 |
|
|
|
208 |
return null;
|
209 |
}
|
210 |
|
211 |
+
/**
|
212 |
+
* Load current queues from data file
|
213 |
+
*
|
214 |
+
* @since 4.1
|
215 |
+
*/
|
216 |
+
public function load_queue( $type ) {
|
217 |
+
$filepath_prefix = $this->_build_filepath_prefix( $type );
|
218 |
+
$static_path = LITESPEED_STATIC_DIR . $filepath_prefix . '.litespeed_conf.dat';
|
219 |
+
|
220 |
+
$queue = array();
|
221 |
+
if ( file_exists( $static_path ) ) {
|
222 |
+
$queue = json_decode( file_get_contents( $static_path ), true );
|
223 |
+
}
|
224 |
+
|
225 |
+
return $queue;
|
226 |
+
}
|
227 |
+
|
228 |
+
/**
|
229 |
+
* Save current queues to data file
|
230 |
+
*
|
231 |
+
* @since 4.1
|
232 |
+
*/
|
233 |
+
public function save_queue( $type, $list ) {
|
234 |
+
$filepath_prefix = $this->_build_filepath_prefix( $type );
|
235 |
+
$static_path = LITESPEED_STATIC_DIR . $filepath_prefix . '.litespeed_conf.dat';
|
236 |
+
|
237 |
+
$data = json_encode( $list );
|
238 |
+
|
239 |
+
File::save( $static_path, $data, true );
|
240 |
+
}
|
241 |
+
|
242 |
/**
|
243 |
* Get UCSS path
|
244 |
*
|
261 |
|
262 |
$uid = get_current_user_id();
|
263 |
|
264 |
+
$ua = ! empty( $_SERVER[ 'HTTP_USER_AGENT' ] ) ? $_SERVER[ 'HTTP_USER_AGENT' ] : '';
|
265 |
+
|
266 |
// Store it for cron
|
267 |
+
$queue = $this->load_queue( 'ucss' );
|
268 |
+
|
269 |
+
if ( count( $queue ) > 500 ) {
|
270 |
+
Debug2::debug( '[CSS] UCSS Queue is full - 500' );
|
271 |
+
return false;
|
272 |
}
|
273 |
+
|
274 |
$queue_k = ( strlen( $vary ) > 32 ? md5( $vary ) : $vary ) . ' ' . $url_tag;
|
275 |
+
$queue[ $queue_k ] = array(
|
276 |
'url' => $request_url,
|
277 |
+
'user_agent' => substr( $ua, 0, 200 ),
|
278 |
'is_mobile' => $this->_separate_mobile_ccss(),
|
279 |
+
'is_webp' => $this->cls( 'Media' )->webp_support() ? 1 : 0,
|
280 |
'uid' => $uid,
|
281 |
'vary' => $vary,
|
282 |
'url_tag' => $url_tag,
|
283 |
); // Current UA will be used to request
|
284 |
+
$this->save_queue( 'ucss', $queue );
|
285 |
+
Debug2::debug( '[CSS] Added queue_ucss [url_tag] ' . $url_tag . ' [UA] ' . $ua . ' [vary] ' . $vary . ' [uid] ' . $uid );
|
286 |
|
287 |
// Prepare cache tag for later purge
|
288 |
Tag::add( 'UCSS.' . md5( $queue_k ) );
|
289 |
|
290 |
+
// For v4.1- clean up
|
291 |
+
if ( isset( $this->_summary[ 'ucss_history' ] ) || isset( $this->_summary[ 'queue_ucss' ] ) ) {
|
292 |
+
if ( isset( $this->_summary[ 'ucss_history' ] ) ) {
|
293 |
+
unset( $this->_summary[ 'ucss_history' ] );
|
294 |
+
}
|
295 |
+
if ( isset( $this->_summary[ 'queue_ucss' ] ) ) {
|
296 |
+
unset( $this->_summary[ 'queue_ucss' ] );
|
297 |
+
}
|
298 |
+
self::save_summary();
|
299 |
+
}
|
300 |
|
301 |
return false;
|
302 |
}
|
319 |
*/
|
320 |
public static function cron_ccss( $continue = false ) {
|
321 |
$_instance = self::cls();
|
322 |
+
|
323 |
+
$queue = $_instance->load_queue( 'ccss' );
|
324 |
+
|
325 |
+
if ( empty( $queue ) ) {
|
326 |
return;
|
327 |
}
|
328 |
|
335 |
}
|
336 |
|
337 |
$i = 0;
|
338 |
+
foreach ( $queue as $k => $v ) {
|
339 |
+
unset( $queue[ $k ] );
|
340 |
+
$_instance->save_queue( 'ccss', $queue );
|
341 |
Debug2::debug( '[CCSS] cron job [tag] ' . $k . ' [url] ' . $v[ 'url' ] . ( $v[ 'is_mobile' ] ? ' 📱 ' : '' ) . ' [UA] ' . $v[ 'user_agent' ] );
|
342 |
|
343 |
if ( empty( $v[ 'url_tag' ] ) ) {
|
345 |
continue;
|
346 |
}
|
347 |
|
348 |
+
if ( ! isset( $v[ 'is_webp' ] ) ) {
|
349 |
+
$v[ 'is_webp' ] = false;
|
350 |
+
}
|
351 |
+
|
352 |
$i ++;
|
353 |
+
$res = $_instance->_generate( $v[ 'url' ], $k, $v[ 'uid' ], $v[ 'user_agent' ], $v[ 'vary' ], $v[ 'url_tag' ], 'ccss', $v[ 'is_mobile' ], $v[ 'is_webp' ] );
|
354 |
|
355 |
if ( $res ) {
|
356 |
Purge::add( 'CCSS.' . md5( $k ) );
|
362 |
}
|
363 |
|
364 |
if ( $i > 3 ) {
|
365 |
+
$_instance->_print_loading( count( $queue ), 'CCSS' );
|
366 |
return Router::self_redirect( Router::ACTION_CSS, CSS::TYPE_GEN_CCSS );
|
367 |
}
|
368 |
}
|
375 |
*/
|
376 |
public static function cron_ucss( $continue = false ) {
|
377 |
$_instance = self::cls();
|
378 |
+
|
379 |
+
$queue = $_instance->load_queue( 'ucss' );
|
380 |
+
|
381 |
+
if ( empty( $queue ) ) {
|
382 |
return;
|
383 |
}
|
384 |
|
391 |
}
|
392 |
|
393 |
$i = 0;
|
394 |
+
foreach ( $queue as $k => $v ) {
|
395 |
+
unset( $queue[ $k ] );
|
396 |
+
$_instance->save_queue( 'ucss', $queue );
|
397 |
Debug2::debug( '[UCSS] cron job [tag] ' . $k . ' [url] ' . $v[ 'url' ] . ( $v[ 'is_mobile' ] ? ' 📱 ' : '' ) . ' [UA] ' . $v[ 'user_agent' ] );
|
398 |
|
399 |
+
if ( ! isset( $v[ 'is_webp' ] ) ) {
|
400 |
+
$v[ 'is_webp' ] = false;
|
401 |
+
}
|
402 |
+
|
403 |
$i ++;
|
404 |
+
$res = $_instance->_generate( $v[ 'url' ], $k, $v[ 'uid' ], $v[ 'user_agent' ], $v[ 'vary' ], $v[ 'url_tag' ], 'ucss', $v[ 'is_mobile' ], $v[ 'is_webp' ] );
|
405 |
|
406 |
if ( $res ) {
|
407 |
Purge::add( 'UCSS.' . md5( $k ) );
|
413 |
}
|
414 |
|
415 |
if ( $i > 3 ) {
|
416 |
+
$_instance->_print_loading( count( $queue ), 'UCSS' );
|
417 |
return Router::self_redirect( Router::ACTION_CSS, CSS::TYPE_GEN_UCSS );
|
418 |
}
|
419 |
}
|
420 |
}
|
421 |
|
422 |
+
/**
|
423 |
+
* Clear all waiting queues
|
424 |
+
*
|
425 |
+
* @since 3.4
|
426 |
+
*/
|
427 |
+
public function clear_q( $type ) {
|
428 |
+
$filepath_prefix = $this->_build_filepath_prefix( $type );
|
429 |
+
$static_path = LITESPEED_STATIC_DIR . $filepath_prefix . '.litespeed_conf.dat';
|
430 |
+
|
431 |
+
if ( file_exists( $static_path ) ) {
|
432 |
+
unlink( $static_path );
|
433 |
+
}
|
434 |
+
|
435 |
+
$msg = __( 'Queue cleared successfully.', 'litespeed-cache' );
|
436 |
+
Admin_Display::succeed( $msg );
|
437 |
+
}
|
438 |
+
|
439 |
+
/**
|
440 |
+
* Print a loading message when redirecting CCSS/UCSS page to aviod whiteboard confusion
|
441 |
+
*/
|
442 |
+
private function _print_loading( $counter, $type ) {
|
443 |
+
echo '<div style="font-size: 25px; text-align: center; padding-top: 150px; width: 100%; position: absolute;">';
|
444 |
+
echo "<img width='35' src='" . LSWCP_PLUGIN_URL . "assets/img/Litespeed.icon.svg' /> ";
|
445 |
+
echo sprintf( __( '%1$s %2$s files left in queue', 'litespeed-cache' ), $counter, $type );
|
446 |
+
echo '</div>';
|
447 |
+
}
|
448 |
+
|
449 |
/**
|
450 |
* Send to QC API to generate CCSS/UCSS
|
451 |
*
|
452 |
* @since 2.3
|
453 |
* @access private
|
454 |
*/
|
455 |
+
private function _generate( $request_url, $queue_k, $uid, $user_agent, $vary, $url_tag, $type, $is_mobile, $is_webp ) {
|
456 |
set_time_limit( 120 );
|
457 |
|
458 |
// Check if has credit to push
|
477 |
// Parse HTML to gather all CSS content before requesting
|
478 |
$css = false;
|
479 |
if ( $type == 'ccss' ) {
|
480 |
+
list( $css, $html ) = $this->_prepare_css( $html, $is_webp );
|
481 |
}
|
482 |
else {
|
483 |
+
list( , $html ) = $this->_prepare_css( $html, $is_webp, true ); // Use this to drop CSS from HTML as we don't need those CSS to generate UCSS
|
484 |
$filename = $this->cls( 'Data' )->load_url_file( $url_tag, $vary, 'css' );
|
485 |
$filepath_prefix = $this->_build_filepath_prefix( 'css' );
|
486 |
$static_file = LITESPEED_STATIC_DIR . $filepath_prefix . $filename . '.css';
|
501 |
'ccss_type' => $queue_k,
|
502 |
'user_agent' => $user_agent,
|
503 |
'is_mobile' => $is_mobile ? 1 : 0, // todo:compatible w/ tablet
|
504 |
+
'is_webp' => $is_webp ? 1 : 0,
|
505 |
'html' => $html,
|
506 |
'css' => $css,
|
507 |
);
|
561 |
public function test_url( $request_url ) {
|
562 |
$user_agent = $_SERVER[ 'HTTP_USER_AGENT' ];
|
563 |
$html = $this->_prepare_html( $request_url, $user_agent );
|
564 |
+
list( $css, $html ) = $this->_prepare_css( $html, true, true );
|
565 |
// var_dump( $css );
|
566 |
// $html = <<<EOT
|
567 |
|
610 |
*
|
611 |
* @since 3.4.3
|
612 |
*/
|
613 |
+
private function _prepare_css( $html, $is_webp = false, $dryrun = false ) {
|
614 |
$css = '';
|
615 |
preg_match_all( '#<link ([^>]+)/?>|<style([^>]*)>([^<]+)</style>#isU', $html, $matches, PREG_SET_ORDER );
|
616 |
foreach ( $matches as $match ) {
|
669 |
}
|
670 |
|
671 |
$con = Optimizer::minify_css( $con );
|
672 |
+
if ( $is_webp ) {
|
673 |
+
$con = $this->cls( 'Media' )->replace_background_webp( $con );
|
674 |
+
}
|
675 |
|
676 |
if ( ! empty( $attrs[ 'media' ] ) && $attrs[ 'media' ] !== 'all' ) {
|
677 |
$con = '@media ' . $attrs[ 'media' ] . '{' . $con . "}\n";
|
712 |
return $whitelist;
|
713 |
}
|
714 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
715 |
/**
|
716 |
* Handle all request actions from main cls
|
717 |
*
|
src/data.cls.php
CHANGED
@@ -18,6 +18,9 @@ class Data extends Root {
|
|
18 |
'4.0' => array(
|
19 |
'litespeed_update_4',
|
20 |
),
|
|
|
|
|
|
|
21 |
);
|
22 |
|
23 |
private $_db_site_updater = array(
|
@@ -121,6 +124,9 @@ class Data extends Root {
|
|
121 |
|
122 |
$this->correct_tb_existance();
|
123 |
|
|
|
|
|
|
|
124 |
// Update version to latest
|
125 |
Conf::delete_option( Base::_VER );
|
126 |
Conf::add_option( Base::_VER, Core::VER );
|
18 |
'4.0' => array(
|
19 |
'litespeed_update_4',
|
20 |
),
|
21 |
+
'4.1' => array(
|
22 |
+
'litespeed_update_4_1',
|
23 |
+
),
|
24 |
);
|
25 |
|
26 |
private $_db_site_updater = array(
|
124 |
|
125 |
$this->correct_tb_existance();
|
126 |
|
127 |
+
// Update related files
|
128 |
+
$this->cls( 'Activation' )->update_files();
|
129 |
+
|
130 |
// Update version to latest
|
131 |
Conf::delete_option( Base::_VER );
|
132 |
Conf::add_option( Base::_VER, Core::VER );
|
src/data.upgrade.func.php
CHANGED
@@ -13,6 +13,16 @@ use LiteSpeed\Conf;
|
|
13 |
use LiteSpeed\Admin_Display;
|
14 |
use LiteSpeed\File;
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
/**
|
17 |
* Drop cssjs table and rm cssjs folder
|
18 |
* @since 4.0
|
@@ -186,8 +196,8 @@ function litespeed_update_3_0( $ver ) {
|
|
186 |
'litespeed-media-webp_attribute' => 'img_optm-webp_attr',
|
187 |
'litespeed-optm-css' => 'optm-ccss_con',
|
188 |
'litespeed-optm_excludes' => 'optm-exc',
|
189 |
-
|
190 |
-
|
191 |
'litespeed-optm-js-defer-excludes' => 'optm-js_defer_exc',
|
192 |
'litespeed-cache-dns_prefetch' => 'optm-dns_prefetch',
|
193 |
'litespeed-cache-exclude-optimization-roles' => 'optm-exc_roles',
|
13 |
use LiteSpeed\Admin_Display;
|
14 |
use LiteSpeed\File;
|
15 |
|
16 |
+
/**
|
17 |
+
* Drop object cache data file
|
18 |
+
* @since 4.1
|
19 |
+
*/
|
20 |
+
function litespeed_update_4_1() {
|
21 |
+
if ( file_exists( WP_CONTENT_DIR . '/.object-cache.ini' ) ) {
|
22 |
+
unlink( WP_CONTENT_DIR . '/.object-cache.ini' );
|
23 |
+
}
|
24 |
+
}
|
25 |
+
|
26 |
/**
|
27 |
* Drop cssjs table and rm cssjs folder
|
28 |
* @since 4.0
|
196 |
'litespeed-media-webp_attribute' => 'img_optm-webp_attr',
|
197 |
'litespeed-optm-css' => 'optm-ccss_con',
|
198 |
'litespeed-optm_excludes' => 'optm-exc',
|
199 |
+
'litespeed-optm-ccss-separate_posttype' => 'optm-ccss_sep_posttype',
|
200 |
+
'litespeed-optm-css-separate_uri' => 'optm-ccss_sep_uri',
|
201 |
'litespeed-optm-js-defer-excludes' => 'optm-js_defer_exc',
|
202 |
'litespeed-cache-dns_prefetch' => 'optm-dns_prefetch',
|
203 |
'litespeed-cache-exclude-optimization-roles' => 'optm-exc_roles',
|
src/doc.cls.php
CHANGED
@@ -21,7 +21,8 @@ class Doc {
|
|
21 |
* @access public
|
22 |
*/
|
23 |
public static function privacy_policy() {
|
24 |
-
return __( 'This site utilizes caching in order to facilitate a faster response time and better user experience. Caching potentially stores a duplicate copy of every web page that is on display on this site. All cache files are temporary, and are never accessed by any third party, except as necessary to obtain technical support from the cache plugin vendor. Cache files expire on a schedule set by the site administrator, but may easily be purged by the admin before their natural expiration, if necessary.', 'litespeed-cache' )
|
|
|
25 |
}
|
26 |
|
27 |
|
@@ -101,10 +102,10 @@ class Doc {
|
|
101 |
*/
|
102 |
public static function notice_ips() {
|
103 |
echo '<div class="litespeed-primary">';
|
104 |
-
echo '⚠️ ' . __( 'For online services to work correctly, you must whitelist all
|
105 |
echo ' ' . __( 'Before generating key, please verify all IPs on this list are whitelisted', 'litespeed-cache' ) . ': ';
|
106 |
echo '<a href="' . Cloud::CLOUD_SERVER . '/ips" target="_blank">' . __( 'Current Online Server IPs', 'litespeed-cache' ) . '</a>';
|
107 |
echo '</div>';
|
108 |
}
|
109 |
|
110 |
-
}
|
21 |
* @access public
|
22 |
*/
|
23 |
public static function privacy_policy() {
|
24 |
+
return __( 'This site utilizes caching in order to facilitate a faster response time and better user experience. Caching potentially stores a duplicate copy of every web page that is on display on this site. All cache files are temporary, and are never accessed by any third party, except as necessary to obtain technical support from the cache plugin vendor. Cache files expire on a schedule set by the site administrator, but may easily be purged by the admin before their natural expiration, if necessary. We may use QUIC.cloud services to process & cache your data temporarily.', 'litespeed-cache' )
|
25 |
+
. sprintf( __( 'Please see %s for more details.', 'litespeed-cache' ), '<a href="https://quic.cloud/privacy-policy/" target="_blank">https://quic.cloud/privacy-policy/</a>' );
|
26 |
}
|
27 |
|
28 |
|
102 |
*/
|
103 |
public static function notice_ips() {
|
104 |
echo '<div class="litespeed-primary">';
|
105 |
+
echo '⚠️ ' . sprintf( __( 'For online services to work correctly, you must whitelist all %s server IPs.', 'litespeed-cache' ), 'QUIC.cloud' ) . '<br/>';
|
106 |
echo ' ' . __( 'Before generating key, please verify all IPs on this list are whitelisted', 'litespeed-cache' ) . ': ';
|
107 |
echo '<a href="' . Cloud::CLOUD_SERVER . '/ips" target="_blank">' . __( 'Current Online Server IPs', 'litespeed-cache' ) . '</a>';
|
108 |
echo '</div>';
|
109 |
}
|
110 |
|
111 |
+
}
|
src/esi.cls.php
CHANGED
@@ -59,9 +59,9 @@ class ESI extends Root {
|
|
59 |
* Overwrite wp_create_nonce func
|
60 |
* @since 2.9.5
|
61 |
*/
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
}
|
66 |
|
67 |
/**
|
@@ -112,6 +112,10 @@ class ESI extends Root {
|
|
112 |
* @since 2.9.5
|
113 |
*/
|
114 |
private function _transform_nonce() {
|
|
|
|
|
|
|
|
|
115 |
// Load ESI nonces in conf
|
116 |
$nonces = $this->conf( Base::O_ESI_NONCE );
|
117 |
add_filter( 'litespeed_esi_nonces', array( $this->cls( 'Data' ), 'load_esi_nonces' ) );
|
@@ -122,9 +126,6 @@ class ESI extends Root {
|
|
122 |
}
|
123 |
|
124 |
add_action( 'litespeed_nonce', array( $this, 'nonce_action' ) );
|
125 |
-
|
126 |
-
Debug2::debug( '[ESI] Overwrite wp_create_nonce()' );
|
127 |
-
litespeed_define_nonce_func();
|
128 |
}
|
129 |
|
130 |
/**
|
@@ -156,6 +157,15 @@ class ESI extends Root {
|
|
156 |
* @since 2.9.5
|
157 |
*/
|
158 |
public function is_nonce_action( $action ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
foreach ( $this->_nonce_actions as $k => $v ) {
|
160 |
if ( strpos( $k, '*' ) !== false ) {
|
161 |
if( preg_match( '#' . $k . '#iU', $action ) ) {
|
59 |
* Overwrite wp_create_nonce func
|
60 |
* @since 2.9.5
|
61 |
*/
|
62 |
+
$this->_transform_nonce();
|
63 |
+
|
64 |
+
! defined( 'LITESPEED_ESI_INITED' ) && define( 'LITESPEED_ESI_INITED', true );
|
65 |
}
|
66 |
|
67 |
/**
|
112 |
* @since 2.9.5
|
113 |
*/
|
114 |
private function _transform_nonce() {
|
115 |
+
if ( is_admin() ) {
|
116 |
+
return;
|
117 |
+
}
|
118 |
+
|
119 |
// Load ESI nonces in conf
|
120 |
$nonces = $this->conf( Base::O_ESI_NONCE );
|
121 |
add_filter( 'litespeed_esi_nonces', array( $this->cls( 'Data' ), 'load_esi_nonces' ) );
|
126 |
}
|
127 |
|
128 |
add_action( 'litespeed_nonce', array( $this, 'nonce_action' ) );
|
|
|
|
|
|
|
129 |
}
|
130 |
|
131 |
/**
|
157 |
* @since 2.9.5
|
158 |
*/
|
159 |
public function is_nonce_action( $action ) {
|
160 |
+
// If GM not run yet, then ESI not init yet, then ESI nonce will not be allowed even nonce func replaced.
|
161 |
+
if ( ! defined( 'LITESPEED_ESI_INITED' ) ) {
|
162 |
+
return null;
|
163 |
+
}
|
164 |
+
|
165 |
+
if ( is_admin() ) {
|
166 |
+
return null;
|
167 |
+
}
|
168 |
+
|
169 |
foreach ( $this->_nonce_actions as $k => $v ) {
|
170 |
if ( strpos( $k, '*' ) !== false ) {
|
171 |
if( preg_match( '#' . $k . '#iU', $action ) ) {
|
src/gui.cls.php
CHANGED
@@ -16,12 +16,13 @@ class GUI extends Base {
|
|
16 |
|
17 |
// [ file_tag => [ days, litespeed_only ], ... ]
|
18 |
private $_promo_list = array(
|
19 |
-
'new_version' => array(
|
20 |
-
'score' => array(
|
21 |
// 'slack' => array( 3, false ),
|
22 |
);
|
23 |
|
24 |
const LIB_GUEST_JS = 'assets/js/guest.min.js';
|
|
|
25 |
|
26 |
const TYPE_DISMISS_WHM = 'whm';
|
27 |
const TYPE_DISMISS_EXPIRESDEFAULT = 'ExpiresDefault';
|
@@ -508,16 +509,6 @@ class GUI extends Base {
|
|
508 |
) );
|
509 |
}
|
510 |
|
511 |
-
if ( $this->conf( self::O_OPTM_LOCALIZE ) ) {
|
512 |
-
$wp_admin_bar->add_menu( array(
|
513 |
-
'parent' => 'litespeed-menu',
|
514 |
-
'id' => 'litespeed-purge-localres',
|
515 |
-
'title' => __( 'Purge All', 'litespeed-cache' ) . ' - ' . __( 'Localized Resources', 'litespeed-cache' ),
|
516 |
-
'href' => Utility::build_url( Router::ACTION_PURGE, Purge::TYPE_PURGE_ALL_LOCALRES, false, '_ori' ),
|
517 |
-
'meta' => array( 'tabindex' => '0' ),
|
518 |
-
) );
|
519 |
-
}
|
520 |
-
|
521 |
if ( Placeholder::has_lqip_cache() ) {
|
522 |
$wp_admin_bar->add_menu( array(
|
523 |
'parent' => 'litespeed-menu',
|
@@ -659,16 +650,6 @@ class GUI extends Base {
|
|
659 |
) );
|
660 |
}
|
661 |
|
662 |
-
if ( $this->conf( self::O_OPTM_LOCALIZE ) ) {
|
663 |
-
$wp_admin_bar->add_menu( array(
|
664 |
-
'parent' => 'litespeed-menu',
|
665 |
-
'id' => 'litespeed-purge-localres',
|
666 |
-
'title' => __( 'Purge All', 'litespeed-cache' ) . ' - ' . __( 'Localized Resources', 'litespeed-cache' ),
|
667 |
-
'href' => Utility::build_url( Router::ACTION_PURGE, Purge::TYPE_PURGE_ALL_LOCALRES ),
|
668 |
-
'meta' => array( 'tabindex' => '0' ),
|
669 |
-
) );
|
670 |
-
}
|
671 |
-
|
672 |
if ( Placeholder::has_lqip_cache() ) {
|
673 |
$wp_admin_bar->add_menu( array(
|
674 |
'parent' => 'litespeed-menu',
|
@@ -779,8 +760,10 @@ class GUI extends Base {
|
|
779 |
*/
|
780 |
private function _enqueue_guest_js( $buffer ) {
|
781 |
$js_con = File::read( LSCWP_DIR . self::LIB_GUEST_JS );
|
782 |
-
$
|
783 |
-
$
|
|
|
|
|
784 |
return $buffer;
|
785 |
}
|
786 |
|
16 |
|
17 |
// [ file_tag => [ days, litespeed_only ], ... ]
|
18 |
private $_promo_list = array(
|
19 |
+
'new_version' => array( 7, false ),
|
20 |
+
'score' => array( 14, false ),
|
21 |
// 'slack' => array( 3, false ),
|
22 |
);
|
23 |
|
24 |
const LIB_GUEST_JS = 'assets/js/guest.min.js';
|
25 |
+
const PHP_GUEST = 'guest.vary.php';
|
26 |
|
27 |
const TYPE_DISMISS_WHM = 'whm';
|
28 |
const TYPE_DISMISS_EXPIRESDEFAULT = 'ExpiresDefault';
|
509 |
) );
|
510 |
}
|
511 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
512 |
if ( Placeholder::has_lqip_cache() ) {
|
513 |
$wp_admin_bar->add_menu( array(
|
514 |
'parent' => 'litespeed-menu',
|
650 |
) );
|
651 |
}
|
652 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
653 |
if ( Placeholder::has_lqip_cache() ) {
|
654 |
$wp_admin_bar->add_menu( array(
|
655 |
'parent' => 'litespeed-menu',
|
760 |
*/
|
761 |
private function _enqueue_guest_js( $buffer ) {
|
762 |
$js_con = File::read( LSCWP_DIR . self::LIB_GUEST_JS );
|
763 |
+
// $guest_update_url = add_query_arg( 'litespeed_guest', 1, home_url( '/' ) );
|
764 |
+
$guest_update_url = LSWCP_PLUGIN_URL . self::PHP_GUEST;
|
765 |
+
$js_con = str_replace( 'litespeed_url', esc_url( $guest_update_url ), $js_con );
|
766 |
+
$buffer = str_replace( '</body>', '<script data-no-optimize="1">' . $js_con . '</script></body>', $buffer );
|
767 |
return $buffer;
|
768 |
}
|
769 |
|
src/htaccess.cls.php
CHANGED
@@ -90,7 +90,8 @@ class Htaccess extends Root {
|
|
90 |
self::REWRITE_ON,
|
91 |
"CacheLookup on",
|
92 |
"RewriteRule .* - [E=Cache-Control:no-autoflush]",
|
93 |
-
"RewriteRule \.object-cache\.ini - [F,L]",
|
|
|
94 |
);
|
95 |
|
96 |
// backend .htaccess privilege
|
90 |
self::REWRITE_ON,
|
91 |
"CacheLookup on",
|
92 |
"RewriteRule .* - [E=Cache-Control:no-autoflush]",
|
93 |
+
// "RewriteRule \.object-cache\.ini - [F,L]",
|
94 |
+
'RewriteRule ' . preg_quote( self::CONF_FILE ) . ' - [F,L]',
|
95 |
);
|
96 |
|
97 |
// backend .htaccess privilege
|
src/img-optm.cls.php
CHANGED
@@ -721,7 +721,7 @@ class Img_Optm extends Base {
|
|
721 |
return Cloud::err( 'no/wrong status' );
|
722 |
}
|
723 |
|
724 |
-
$status = $
|
725 |
|
726 |
$last_log_pid = 0;
|
727 |
|
721 |
return Cloud::err( 'no/wrong status' );
|
722 |
}
|
723 |
|
724 |
+
$status = $post_data[ 'status' ];
|
725 |
|
726 |
$last_log_pid = 0;
|
727 |
|
src/import.cls.php
CHANGED
@@ -3,20 +3,17 @@
|
|
3 |
* The import/export class.
|
4 |
*
|
5 |
* @since 1.8.2
|
6 |
-
* @package LiteSpeed_Cache
|
7 |
-
* @subpackage LiteSpeed_Cache/inc
|
8 |
-
* @author LiteSpeed Technologies <info@litespeedtech.com>
|
9 |
*/
|
10 |
-
namespace LiteSpeed
|
11 |
|
12 |
-
defined( 'WPINC' ) || exit
|
13 |
|
14 |
class Import extends Base {
|
15 |
protected $_summary;
|
16 |
|
17 |
-
const TYPE_IMPORT = 'import'
|
18 |
-
const TYPE_EXPORT = 'export'
|
19 |
-
const TYPE_RESET = 'reset'
|
20 |
|
21 |
/**
|
22 |
* Init
|
@@ -24,7 +21,7 @@ class Import extends Base {
|
|
24 |
* @since 1.8.2
|
25 |
*/
|
26 |
public function __construct() {
|
27 |
-
Debug2::debug( 'Import init' )
|
28 |
|
29 |
$this->_summary = self::get_summary();
|
30 |
}
|
@@ -36,28 +33,32 @@ class Import extends Base {
|
|
36 |
* @access public
|
37 |
*/
|
38 |
public function export( $only_data_return = false ) {
|
|
|
39 |
|
40 |
-
$data =
|
|
|
|
|
|
|
41 |
|
42 |
-
$data =
|
43 |
|
44 |
if ( $only_data_return ) {
|
45 |
-
return $data
|
46 |
}
|
47 |
|
48 |
-
$filename = $this->_generate_filename()
|
49 |
|
50 |
// Update log
|
51 |
-
$this->_summary[ 'export_file' ] = $filename
|
52 |
-
$this->_summary[ 'export_time' ] = time()
|
53 |
self::save_summary();
|
54 |
|
55 |
-
Debug2::debug( 'Import: Saved to ' . $filename )
|
56 |
|
57 |
-
@header( 'Content-Disposition: attachment; filename=' . $filename )
|
58 |
-
echo $data
|
59 |
|
60 |
-
exit
|
61 |
}
|
62 |
|
63 |
/**
|
@@ -66,58 +67,76 @@ class Import extends Base {
|
|
66 |
* @since 1.8.2
|
67 |
* @access public
|
68 |
*/
|
69 |
-
public function import( $file = false )
|
70 |
-
{
|
71 |
if ( ! $file ) {
|
72 |
if ( empty( $_FILES[ 'ls_file' ][ 'name' ] ) || substr( $_FILES[ 'ls_file' ][ 'name' ], -5 ) != '.data' || empty( $_FILES[ 'ls_file' ][ 'tmp_name' ] ) ) {
|
73 |
-
Debug2::debug( 'Import: Failed to import, wront ls_file' )
|
74 |
|
75 |
-
$msg = __( 'Import failed due to file error.', 'litespeed-cache' )
|
76 |
-
Admin_Display::error( $msg )
|
77 |
|
78 |
-
return false
|
79 |
}
|
80 |
|
81 |
-
$this->_summary[ 'import_file' ] = $_FILES[ 'ls_file' ][ 'name' ]
|
82 |
|
83 |
-
$data = file_get_contents( $_FILES[ 'ls_file' ][ 'tmp_name' ] )
|
84 |
}
|
85 |
else {
|
86 |
-
$this->_summary[ 'import_file' ] = $file
|
87 |
|
88 |
-
$data = file_get_contents( $file )
|
89 |
}
|
90 |
|
91 |
// Update log
|
92 |
-
$this->_summary[ 'import_time' ] = time()
|
93 |
self::save_summary();
|
94 |
|
|
|
95 |
try {
|
96 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
} catch ( \Exception $ex ) {
|
98 |
-
Debug2::debug( 'Import
|
99 |
-
return false
|
100 |
}
|
101 |
|
102 |
-
if ( ! $
|
103 |
-
Debug2::debug( 'Import
|
104 |
-
return false
|
|
|
|
|
|
|
105 |
}
|
106 |
|
107 |
-
$this->cls( 'Conf' )->update_confs( $
|
108 |
|
109 |
|
110 |
if ( ! $file ) {
|
111 |
-
Debug2::debug( 'Import: Imported ' . $_FILES[ 'ls_file' ][ 'name' ] )
|
112 |
|
113 |
-
$msg = sprintf( __( 'Imported setting file %s successfully.', 'litespeed-cache' ), $_FILES[ 'ls_file' ][ 'name' ] )
|
114 |
-
Admin_Display::succeed( $msg )
|
115 |
}
|
116 |
else {
|
117 |
-
Debug2::debug( 'Import: Imported ' . $file )
|
118 |
}
|
119 |
|
120 |
-
return true
|
121 |
|
122 |
}
|
123 |
|
@@ -127,16 +146,15 @@ class Import extends Base {
|
|
127 |
* @since 2.6.3
|
128 |
* @access public
|
129 |
*/
|
130 |
-
public function reset()
|
131 |
-
|
132 |
-
$options = $this->cls( 'Conf' )->load_default_vals() ;
|
133 |
|
134 |
-
$this->cls( 'Conf' )->update_confs( $options )
|
135 |
|
136 |
-
Debug2::debug( '[Import] Reset successfully.' )
|
137 |
|
138 |
-
$msg = __( 'Reset successfully.', 'litespeed-cache' )
|
139 |
-
Admin_Display::succeed( $msg )
|
140 |
|
141 |
}
|
142 |
|
@@ -146,24 +164,23 @@ class Import extends Base {
|
|
146 |
* @since 1.8.2
|
147 |
* @access private
|
148 |
*/
|
149 |
-
private function _generate_filename()
|
150 |
-
{
|
151 |
// Generate filename
|
152 |
-
$parsed_home = parse_url( get_home_url() )
|
153 |
-
$filename = 'LSCWP_cfg-'
|
154 |
if ( ! empty( $parsed_home[ 'host' ] ) ) {
|
155 |
-
$filename .= $parsed_home[ 'host' ] . '_'
|
156 |
}
|
157 |
|
158 |
if ( ! empty( $parsed_home[ 'path' ] ) ) {
|
159 |
-
$filename .= $parsed_home[ 'path' ] . '_'
|
160 |
}
|
161 |
|
162 |
-
$filename = str_replace( '/', '_', $filename )
|
163 |
|
164 |
-
$filename .= '-' . date( 'Ymd_His' ) . '.data'
|
165 |
|
166 |
-
return $filename
|
167 |
}
|
168 |
|
169 |
/**
|
3 |
* The import/export class.
|
4 |
*
|
5 |
* @since 1.8.2
|
|
|
|
|
|
|
6 |
*/
|
7 |
+
namespace LiteSpeed;
|
8 |
|
9 |
+
defined( 'WPINC' ) || exit;
|
10 |
|
11 |
class Import extends Base {
|
12 |
protected $_summary;
|
13 |
|
14 |
+
const TYPE_IMPORT = 'import';
|
15 |
+
const TYPE_EXPORT = 'export';
|
16 |
+
const TYPE_RESET = 'reset';
|
17 |
|
18 |
/**
|
19 |
* Init
|
21 |
* @since 1.8.2
|
22 |
*/
|
23 |
public function __construct() {
|
24 |
+
Debug2::debug( 'Import init' );
|
25 |
|
26 |
$this->_summary = self::get_summary();
|
27 |
}
|
33 |
* @access public
|
34 |
*/
|
35 |
public function export( $only_data_return = false ) {
|
36 |
+
$raw_data = $this->get_options( true );
|
37 |
|
38 |
+
$data = array();
|
39 |
+
foreach ( $raw_data as $k => $v ) {
|
40 |
+
$data[] = json_encode( array( $k, $v ) );
|
41 |
+
}
|
42 |
|
43 |
+
$data = implode( "\n\n", $data );
|
44 |
|
45 |
if ( $only_data_return ) {
|
46 |
+
return $data;
|
47 |
}
|
48 |
|
49 |
+
$filename = $this->_generate_filename();
|
50 |
|
51 |
// Update log
|
52 |
+
$this->_summary[ 'export_file' ] = $filename;
|
53 |
+
$this->_summary[ 'export_time' ] = time();
|
54 |
self::save_summary();
|
55 |
|
56 |
+
Debug2::debug( 'Import: Saved to ' . $filename );
|
57 |
|
58 |
+
@header( 'Content-Disposition: attachment; filename=' . $filename );
|
59 |
+
echo $data;
|
60 |
|
61 |
+
exit;
|
62 |
}
|
63 |
|
64 |
/**
|
67 |
* @since 1.8.2
|
68 |
* @access public
|
69 |
*/
|
70 |
+
public function import( $file = false ) {
|
|
|
71 |
if ( ! $file ) {
|
72 |
if ( empty( $_FILES[ 'ls_file' ][ 'name' ] ) || substr( $_FILES[ 'ls_file' ][ 'name' ], -5 ) != '.data' || empty( $_FILES[ 'ls_file' ][ 'tmp_name' ] ) ) {
|
73 |
+
Debug2::debug( 'Import: Failed to import, wront ls_file' );
|
74 |
|
75 |
+
$msg = __( 'Import failed due to file error.', 'litespeed-cache' );
|
76 |
+
Admin_Display::error( $msg );
|
77 |
|
78 |
+
return false;
|
79 |
}
|
80 |
|
81 |
+
$this->_summary[ 'import_file' ] = $_FILES[ 'ls_file' ][ 'name' ];
|
82 |
|
83 |
+
$data = file_get_contents( $_FILES[ 'ls_file' ][ 'tmp_name' ] );
|
84 |
}
|
85 |
else {
|
86 |
+
$this->_summary[ 'import_file' ] = $file;
|
87 |
|
88 |
+
$data = file_get_contents( $file );
|
89 |
}
|
90 |
|
91 |
// Update log
|
92 |
+
$this->_summary[ 'import_time' ] = time();
|
93 |
self::save_summary();
|
94 |
|
95 |
+
$ori_data = array();
|
96 |
try {
|
97 |
+
// Check if the data is v4+ or not
|
98 |
+
if ( strpos( $data, '["_version",' ) === 0 ) {
|
99 |
+
Debug2::debug( '[Import] Data version: v4+' );
|
100 |
+
$data = explode( "\n", $data );
|
101 |
+
foreach ( $data as $v ) {
|
102 |
+
$v = trim( $v );
|
103 |
+
if ( ! $v ) {
|
104 |
+
continue;
|
105 |
+
}
|
106 |
+
list( $k, $v ) = json_decode( $v, true );
|
107 |
+
$ori_data[ $k ] = $v;
|
108 |
+
}
|
109 |
+
}
|
110 |
+
else {
|
111 |
+
$ori_data = json_decode( base64_decode( $data ), true );
|
112 |
+
}
|
113 |
} catch ( \Exception $ex ) {
|
114 |
+
Debug2::debug( '[Import] ❌ Failed to parse serialized data' );
|
115 |
+
return false;
|
116 |
}
|
117 |
|
118 |
+
if ( ! $ori_data ) {
|
119 |
+
Debug2::debug( '[Import] ❌ Failed to import, no data' );
|
120 |
+
return false;
|
121 |
+
}
|
122 |
+
else {
|
123 |
+
Debug2::debug( '[Import] Importing data', $ori_data );
|
124 |
}
|
125 |
|
126 |
+
$this->cls( 'Conf' )->update_confs( $ori_data );
|
127 |
|
128 |
|
129 |
if ( ! $file ) {
|
130 |
+
Debug2::debug( 'Import: Imported ' . $_FILES[ 'ls_file' ][ 'name' ] );
|
131 |
|
132 |
+
$msg = sprintf( __( 'Imported setting file %s successfully.', 'litespeed-cache' ), $_FILES[ 'ls_file' ][ 'name' ] );
|
133 |
+
Admin_Display::succeed( $msg );
|
134 |
}
|
135 |
else {
|
136 |
+
Debug2::debug( 'Import: Imported ' . $file );
|
137 |
}
|
138 |
|
139 |
+
return true;
|
140 |
|
141 |
}
|
142 |
|
146 |
* @since 2.6.3
|
147 |
* @access public
|
148 |
*/
|
149 |
+
public function reset() {
|
150 |
+
$options = $this->cls( 'Conf' )->load_default_vals();
|
|
|
151 |
|
152 |
+
$this->cls( 'Conf' )->update_confs( $options );
|
153 |
|
154 |
+
Debug2::debug( '[Import] Reset successfully.' );
|
155 |
|
156 |
+
$msg = __( 'Reset successfully.', 'litespeed-cache' );
|
157 |
+
Admin_Display::succeed( $msg );
|
158 |
|
159 |
}
|
160 |
|
164 |
* @since 1.8.2
|
165 |
* @access private
|
166 |
*/
|
167 |
+
private function _generate_filename() {
|
|
|
168 |
// Generate filename
|
169 |
+
$parsed_home = parse_url( get_home_url() );
|
170 |
+
$filename = 'LSCWP_cfg-';
|
171 |
if ( ! empty( $parsed_home[ 'host' ] ) ) {
|
172 |
+
$filename .= $parsed_home[ 'host' ] . '_';
|
173 |
}
|
174 |
|
175 |
if ( ! empty( $parsed_home[ 'path' ] ) ) {
|
176 |
+
$filename .= $parsed_home[ 'path' ] . '_';
|
177 |
}
|
178 |
|
179 |
+
$filename = str_replace( '/', '_', $filename );
|
180 |
|
181 |
+
$filename .= '-' . date( 'Ymd_His' ) . '.data';
|
182 |
|
183 |
+
return $filename;
|
184 |
}
|
185 |
|
186 |
/**
|
src/lang.cls.php
CHANGED
@@ -52,6 +52,8 @@ class Lang extends Base {
|
|
52 |
$_lang_list = array(
|
53 |
self::O_SERVER_IP => __( 'Server IP', 'litespeed-cache' ),
|
54 |
self::O_API_KEY => __( 'Domain Key', 'litespeed-cache' ),
|
|
|
|
|
55 |
|
56 |
self::O_CACHE => __( 'Enable Cache', 'litespeed-cache' ),
|
57 |
self::O_CACHE_BROWSER => __( 'Browser Cache', 'litespeed-cache' ),
|
@@ -88,7 +90,7 @@ class Lang extends Base {
|
|
88 |
self::O_OBJECT_GLOBAL_GROUPS => __( 'Global Groups', 'litespeed-cache' ),
|
89 |
self::O_OBJECT_NON_PERSISTENT_GROUPS => __( 'Do Not Cache Groups', 'litespeed-cache' ),
|
90 |
self::O_OBJECT_PERSISTENT => __( 'Persistent Connection', 'litespeed-cache' ),
|
91 |
-
self::O_OBJECT_ADMIN => __( 'Cache
|
92 |
self::O_OBJECT_TRANSIENTS => __( 'Store Transients', 'litespeed-cache' ),
|
93 |
|
94 |
self::O_PURGE_ON_UPGRADE => __( 'Purge All On Upgrade', 'litespeed-cache' ),
|
@@ -113,14 +115,12 @@ class Lang extends Base {
|
|
113 |
self::O_OPTM_JS_COMB_EXT_INL => __( 'JS Combine External and Inline', 'litespeed-cache' ),
|
114 |
self::O_OPTM_JS_HTTP2 => __( 'JS HTTP/2 Push', 'litespeed-cache' ),
|
115 |
self::O_OPTM_HTML_MIN => __( 'HTML Minify', 'litespeed-cache' ),
|
116 |
-
self::O_OPTM_HTML_LAZY => __( 'HTML
|
117 |
self::O_OPTM_CSS_ASYNC => __( 'Load CSS Asynchronously', 'litespeed-cache' ),
|
118 |
self::O_OPTM_CCSS_PER_URL => __( 'CCSS Per URL', 'litespeed-cache' ),
|
119 |
self::O_OPTM_CSS_ASYNC_INLINE => __( 'Inline CSS Async Lib', 'litespeed-cache' ),
|
120 |
self::O_OPTM_CSS_FONT_DISPLAY => __( 'Font Display Optimization', 'litespeed-cache' ),
|
121 |
self::O_OPTM_JS_DEFER => __( 'Load JS Deferred', 'litespeed-cache' ),
|
122 |
-
self::O_OPTM_LOCALIZE => __( 'Localize Resources', 'litespeed-cache' ),
|
123 |
-
self::O_OPTM_LOCALIZE_DOMAINS => __( 'Localization Files', 'litespeed-cache' ),
|
124 |
self::O_OPTM_DNS_PREFETCH => __( 'DNS Prefetch', 'litespeed-cache' ),
|
125 |
self::O_OPTM_DNS_PREFETCH_CTRL => __( 'DNS Prefetch Control', 'litespeed-cache' ),
|
126 |
self::O_OPTM_CSS_EXC => __( 'CSS Excludes', 'litespeed-cache' ),
|
@@ -129,11 +129,14 @@ class Lang extends Base {
|
|
129 |
self::O_OPTM_GGFONTS_ASYNC => __( 'Load Google Fonts Asynchronously', 'litespeed-cache' ),
|
130 |
self::O_OPTM_GGFONTS_RM => __( 'Remove Google Fonts', 'litespeed-cache' ),
|
131 |
self::O_OPTM_CCSS_CON => __( 'Critical CSS Rules', 'litespeed-cache' ),
|
|
|
|
|
132 |
self::O_OPTM_JS_DEFER_EXC => __( 'JS Deferred Excludes', 'litespeed-cache' ),
|
|
|
133 |
self::O_OPTM_EMOJI_RM => __( 'Remove WordPress Emoji', 'litespeed-cache' ),
|
134 |
-
self::O_OPTM_NOSCRIPT_RM => __( 'Remove Noscript
|
135 |
self::O_OPTM_EXC => __( 'URI Excludes', 'litespeed-cache' ),
|
136 |
-
self::O_OPTM_GUEST_ONLY => __( 'Optimize for
|
137 |
self::O_OPTM_EXC_ROLES => __( 'Role Excludes', 'litespeed-cache' ),
|
138 |
|
139 |
self::O_DISCUSS_AVATAR_CACHE => __( 'Gravatar Cache', 'litespeed-cache' ),
|
52 |
$_lang_list = array(
|
53 |
self::O_SERVER_IP => __( 'Server IP', 'litespeed-cache' ),
|
54 |
self::O_API_KEY => __( 'Domain Key', 'litespeed-cache' ),
|
55 |
+
self::O_GUEST_UAS => __( 'Guest Mode User Agents', 'litespeed-cache' ),
|
56 |
+
self::O_GUEST_IPS => __( 'Guest Mode IPs', 'litespeed-cache' ),
|
57 |
|
58 |
self::O_CACHE => __( 'Enable Cache', 'litespeed-cache' ),
|
59 |
self::O_CACHE_BROWSER => __( 'Browser Cache', 'litespeed-cache' ),
|
90 |
self::O_OBJECT_GLOBAL_GROUPS => __( 'Global Groups', 'litespeed-cache' ),
|
91 |
self::O_OBJECT_NON_PERSISTENT_GROUPS => __( 'Do Not Cache Groups', 'litespeed-cache' ),
|
92 |
self::O_OBJECT_PERSISTENT => __( 'Persistent Connection', 'litespeed-cache' ),
|
93 |
+
self::O_OBJECT_ADMIN => __( 'Cache WP-Admin', 'litespeed-cache' ),
|
94 |
self::O_OBJECT_TRANSIENTS => __( 'Store Transients', 'litespeed-cache' ),
|
95 |
|
96 |
self::O_PURGE_ON_UPGRADE => __( 'Purge All On Upgrade', 'litespeed-cache' ),
|
115 |
self::O_OPTM_JS_COMB_EXT_INL => __( 'JS Combine External and Inline', 'litespeed-cache' ),
|
116 |
self::O_OPTM_JS_HTTP2 => __( 'JS HTTP/2 Push', 'litespeed-cache' ),
|
117 |
self::O_OPTM_HTML_MIN => __( 'HTML Minify', 'litespeed-cache' ),
|
118 |
+
self::O_OPTM_HTML_LAZY => __( 'HTML Lazy Load Selectors', 'litespeed-cache' ),
|
119 |
self::O_OPTM_CSS_ASYNC => __( 'Load CSS Asynchronously', 'litespeed-cache' ),
|
120 |
self::O_OPTM_CCSS_PER_URL => __( 'CCSS Per URL', 'litespeed-cache' ),
|
121 |
self::O_OPTM_CSS_ASYNC_INLINE => __( 'Inline CSS Async Lib', 'litespeed-cache' ),
|
122 |
self::O_OPTM_CSS_FONT_DISPLAY => __( 'Font Display Optimization', 'litespeed-cache' ),
|
123 |
self::O_OPTM_JS_DEFER => __( 'Load JS Deferred', 'litespeed-cache' ),
|
|
|
|
|
124 |
self::O_OPTM_DNS_PREFETCH => __( 'DNS Prefetch', 'litespeed-cache' ),
|
125 |
self::O_OPTM_DNS_PREFETCH_CTRL => __( 'DNS Prefetch Control', 'litespeed-cache' ),
|
126 |
self::O_OPTM_CSS_EXC => __( 'CSS Excludes', 'litespeed-cache' ),
|
129 |
self::O_OPTM_GGFONTS_ASYNC => __( 'Load Google Fonts Asynchronously', 'litespeed-cache' ),
|
130 |
self::O_OPTM_GGFONTS_RM => __( 'Remove Google Fonts', 'litespeed-cache' ),
|
131 |
self::O_OPTM_CCSS_CON => __( 'Critical CSS Rules', 'litespeed-cache' ),
|
132 |
+
self::O_OPTM_CCSS_SEP_POSTTYPE => __( 'Separate CCSS Cache Post Types', 'litespeed-cache' ),
|
133 |
+
self::O_OPTM_CCSS_SEP_URI => __( 'Separate CCSS Cache URIs', 'litespeed-cache' ),
|
134 |
self::O_OPTM_JS_DEFER_EXC => __( 'JS Deferred Excludes', 'litespeed-cache' ),
|
135 |
+
self::O_OPTM_GM_JS_EXC => __( 'Guest Mode JS Excludes', 'litespeed-cache' ),
|
136 |
self::O_OPTM_EMOJI_RM => __( 'Remove WordPress Emoji', 'litespeed-cache' ),
|
137 |
+
self::O_OPTM_NOSCRIPT_RM => __( 'Remove Noscript Tags', 'litespeed-cache' ),
|
138 |
self::O_OPTM_EXC => __( 'URI Excludes', 'litespeed-cache' ),
|
139 |
+
self::O_OPTM_GUEST_ONLY => __( 'Optimize for Guests Only', 'litespeed-cache' ),
|
140 |
self::O_OPTM_EXC_ROLES => __( 'Role Excludes', 'litespeed-cache' ),
|
141 |
|
142 |
self::O_DISCUSS_AVATAR_CACHE => __( 'Gravatar Cache', 'litespeed-cache' ),
|
src/localization.cls.php
DELETED
@@ -1,135 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The localization class.
|
4 |
-
*
|
5 |
-
* @since 3.3
|
6 |
-
*/
|
7 |
-
namespace LiteSpeed;
|
8 |
-
|
9 |
-
defined( 'WPINC' ) || exit;
|
10 |
-
|
11 |
-
class Localization extends Base {
|
12 |
-
/**
|
13 |
-
* Localize Resources
|
14 |
-
*
|
15 |
-
* @since 3.3
|
16 |
-
*/
|
17 |
-
public function serve_static( $uri ) {
|
18 |
-
$url = 'https://' . $uri;
|
19 |
-
|
20 |
-
if ( ! $this->conf( self::O_OPTM_LOCALIZE ) ) {
|
21 |
-
// wp_redirect( $url );
|
22 |
-
exit( 'Not supported' );
|
23 |
-
}
|
24 |
-
|
25 |
-
if ( substr( $url, -3 ) !== '.js' ) {
|
26 |
-
// wp_redirect( $url );
|
27 |
-
exit( 'Not supported' );
|
28 |
-
}
|
29 |
-
|
30 |
-
$match = false;
|
31 |
-
$domains = $this->conf( self::O_OPTM_LOCALIZE_DOMAINS );
|
32 |
-
foreach ( $domains as $v ) {
|
33 |
-
if ( ! $v || strpos( $v, '#' ) === 0 ) {
|
34 |
-
continue;
|
35 |
-
}
|
36 |
-
|
37 |
-
$type = 'js';
|
38 |
-
$domain = $v;
|
39 |
-
// Try to parse space splitted value
|
40 |
-
if ( strpos( $v, ' ' ) ) {
|
41 |
-
$v = explode( ' ', $v );
|
42 |
-
if ( ! empty( $v[ 1 ] ) ) {
|
43 |
-
$type = strtolower( $v[ 0 ] );
|
44 |
-
$domain = $v[ 1 ];
|
45 |
-
}
|
46 |
-
}
|
47 |
-
|
48 |
-
if ( strpos( $domain, 'https://' ) !== 0 ) {
|
49 |
-
continue;
|
50 |
-
}
|
51 |
-
|
52 |
-
if ( $type != 'js' ) {
|
53 |
-
continue;
|
54 |
-
}
|
55 |
-
|
56 |
-
if ( strpos( $url, $domain ) !== 0 ) {
|
57 |
-
continue;
|
58 |
-
}
|
59 |
-
|
60 |
-
$match = true;
|
61 |
-
break;
|
62 |
-
}
|
63 |
-
|
64 |
-
if ( ! $match ) {
|
65 |
-
// wp_redirect( $url );
|
66 |
-
exit( 'Not supported' );
|
67 |
-
}
|
68 |
-
|
69 |
-
Control::set_no_vary();
|
70 |
-
Control::set_public_forced( 'Localized Resources' );
|
71 |
-
Tag::add( Tag::TYPE_LOCALRES );
|
72 |
-
|
73 |
-
header( 'Content-Type: application/javascript' );
|
74 |
-
|
75 |
-
$res = wp_remote_get( $url );
|
76 |
-
$content = wp_remote_retrieve_body( $res );
|
77 |
-
|
78 |
-
if ( ! $content ) {
|
79 |
-
$content = '/* Failed to load ' . $url . ' */';
|
80 |
-
}
|
81 |
-
|
82 |
-
echo $content;
|
83 |
-
|
84 |
-
exit;
|
85 |
-
}
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
/**
|
90 |
-
* Localize JS/Fonts
|
91 |
-
*
|
92 |
-
* @since 3.3
|
93 |
-
* @access public
|
94 |
-
*/
|
95 |
-
public function finalize( $content ) {
|
96 |
-
if ( ! $this->conf( self::O_OPTM_LOCALIZE ) ) {
|
97 |
-
return $content;
|
98 |
-
}
|
99 |
-
|
100 |
-
$domains = $this->conf( self::O_OPTM_LOCALIZE_DOMAINS );
|
101 |
-
if ( ! $domains ) {
|
102 |
-
return $content;
|
103 |
-
}
|
104 |
-
|
105 |
-
foreach ( $domains as $v ) {
|
106 |
-
if ( ! $v || strpos( $v, '#' ) === 0 ) {
|
107 |
-
continue;
|
108 |
-
}
|
109 |
-
|
110 |
-
$type = 'js';
|
111 |
-
$domain = $v;
|
112 |
-
// Try to parse space splitted value
|
113 |
-
if ( strpos( $v, ' ' ) ) {
|
114 |
-
$v = explode( ' ', $v );
|
115 |
-
if ( ! empty( $v[ 1 ] ) ) {
|
116 |
-
$type = strtolower( $v[ 0 ] );
|
117 |
-
$domain = $v[ 1 ];
|
118 |
-
}
|
119 |
-
}
|
120 |
-
|
121 |
-
if ( strpos( $domain, 'https://' ) !== 0 ) {
|
122 |
-
continue;
|
123 |
-
}
|
124 |
-
|
125 |
-
if ( $type != 'js' ) {
|
126 |
-
continue;
|
127 |
-
}
|
128 |
-
|
129 |
-
$content = str_replace( $domain, LITESPEED_STATIC_URL . '/localres/' . substr( $domain, 8 ), $content );
|
130 |
-
}
|
131 |
-
|
132 |
-
return $content;
|
133 |
-
}
|
134 |
-
|
135 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/media.cls.php
CHANGED
@@ -374,7 +374,7 @@ class Media extends Root {
|
|
374 |
* @since 1.6.2
|
375 |
* @access public
|
376 |
*/
|
377 |
-
|
378 |
if ( ! empty( $_SERVER[ 'HTTP_ACCEPT' ] ) && strpos( $_SERVER[ 'HTTP_ACCEPT' ], 'image/webp' ) !== false ) {
|
379 |
return true;
|
380 |
}
|
@@ -491,7 +491,7 @@ class Media extends Root {
|
|
491 |
foreach ( $html_list as $k => $v ) {
|
492 |
$snippet = $cfg_trim_noscript ? '' : '<noscript>' . $v . '</noscript>';
|
493 |
if ( $cfg_js_delay ) {
|
494 |
-
$v = str_replace( ' src=', ' litespeed-src=', $v );
|
495 |
}
|
496 |
else {
|
497 |
$v = str_replace( ' src=', ' data-src=', $v );
|
@@ -608,8 +608,9 @@ class Media extends Root {
|
|
608 |
}
|
609 |
|
610 |
// Add missing dimensions
|
611 |
-
if ( $this->conf( Base::O_MEDIA_ADD_MISSING_SIZES ) ) {
|
612 |
if ( empty( $attrs[ 'width' ] ) || $attrs[ 'width' ] == 'auto' || empty( $attrs[ 'height' ] ) || $attrs[ 'height' ] == 'auto' ) {
|
|
|
613 |
$dimensions = $this->_detect_dimensions( $attrs[ 'src' ] );
|
614 |
if ( $dimensions ) {
|
615 |
$ori_width = $dimensions[ 0 ];
|
@@ -791,12 +792,14 @@ class Media extends Root {
|
|
791 |
|
792 |
// parse srcset
|
793 |
// todo: should apply this to cdn too
|
794 |
-
if ( $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE_SRCSET ) ) {
|
795 |
$content = Utility::srcset_replace( $content, array( $this, 'replace_webp' ) );
|
796 |
}
|
797 |
|
798 |
// Replace background-image
|
799 |
-
|
|
|
|
|
800 |
|
801 |
return $content;
|
802 |
}
|
@@ -807,9 +810,7 @@ class Media extends Root {
|
|
807 |
* @since 4.0
|
808 |
*/
|
809 |
public function replace_background_webp( $content ) {
|
810 |
-
|
811 |
-
return $content;
|
812 |
-
}
|
813 |
|
814 |
// preg_match_all( '#background-image:(\s*)url\((.*)\)#iU', $content, $matches );
|
815 |
preg_match_all( '#url\(([^)]+)\)#iU', $content, $matches );
|
@@ -844,7 +845,7 @@ class Media extends Root {
|
|
844 |
* @access public
|
845 |
*/
|
846 |
public function replace_webp( $url ) {
|
847 |
-
Debug2::debug2( '[Media] webp replacing: ' . $url );
|
848 |
|
849 |
if ( substr( $url, -5 ) == '.webp' ) {
|
850 |
Debug2::debug2( '[Media] already webp' );
|
374 |
* @since 1.6.2
|
375 |
* @access public
|
376 |
*/
|
377 |
+
public function webp_support() {
|
378 |
if ( ! empty( $_SERVER[ 'HTTP_ACCEPT' ] ) && strpos( $_SERVER[ 'HTTP_ACCEPT' ], 'image/webp' ) !== false ) {
|
379 |
return true;
|
380 |
}
|
491 |
foreach ( $html_list as $k => $v ) {
|
492 |
$snippet = $cfg_trim_noscript ? '' : '<noscript>' . $v . '</noscript>';
|
493 |
if ( $cfg_js_delay ) {
|
494 |
+
$v = str_replace( ' src=', ' data-litespeed-src=', $v );
|
495 |
}
|
496 |
else {
|
497 |
$v = str_replace( ' src=', ' data-src=', $v );
|
608 |
}
|
609 |
|
610 |
// Add missing dimensions
|
611 |
+
if ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_MEDIA_ADD_MISSING_SIZES ) ) {
|
612 |
if ( empty( $attrs[ 'width' ] ) || $attrs[ 'width' ] == 'auto' || empty( $attrs[ 'height' ] ) || $attrs[ 'height' ] == 'auto' ) {
|
613 |
+
Debug2::debug( '[Media] ⚠️ Missing sizes for image [src] ' . $attrs[ 'src' ] );
|
614 |
$dimensions = $this->_detect_dimensions( $attrs[ 'src' ] );
|
615 |
if ( $dimensions ) {
|
616 |
$ori_width = $dimensions[ 0 ];
|
792 |
|
793 |
// parse srcset
|
794 |
// todo: should apply this to cdn too
|
795 |
+
if ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE_SRCSET ) ) {
|
796 |
$content = Utility::srcset_replace( $content, array( $this, 'replace_webp' ) );
|
797 |
}
|
798 |
|
799 |
// Replace background-image
|
800 |
+
if ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) {
|
801 |
+
$content = $this->replace_background_webp( $content );
|
802 |
+
}
|
803 |
|
804 |
return $content;
|
805 |
}
|
810 |
* @since 4.0
|
811 |
*/
|
812 |
public function replace_background_webp( $content ) {
|
813 |
+
Debug2::debug2( '[Media] Start replacing bakcground WebP.' );
|
|
|
|
|
814 |
|
815 |
// preg_match_all( '#background-image:(\s*)url\((.*)\)#iU', $content, $matches );
|
816 |
preg_match_all( '#url\(([^)]+)\)#iU', $content, $matches );
|
845 |
* @access public
|
846 |
*/
|
847 |
public function replace_webp( $url ) {
|
848 |
+
Debug2::debug2( '[Media] webp replacing: ' . substr( $url, 0, 200 ) );
|
849 |
|
850 |
if ( substr( $url, -5 ) == '.webp' ) {
|
851 |
Debug2::debug2( '[Media] already webp' );
|
src/object-cache.cls.php
CHANGED
@@ -13,7 +13,20 @@ defined( 'WPINC' ) || exit;
|
|
13 |
require_once dirname( __DIR__ ) . '/autoload.php';
|
14 |
|
15 |
class Object_Cache extends Root {
|
16 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
private $_conn;
|
18 |
private $_cfg_enabled;
|
19 |
private $_cfg_method;
|
@@ -29,8 +42,8 @@ class Object_Cache extends Root {
|
|
29 |
|
30 |
private $_oc_driver = 'Memcached'; // Redis or Memcached
|
31 |
|
32 |
-
private $_global_groups;
|
33 |
-
private $_non_persistent_groups;
|
34 |
|
35 |
/**
|
36 |
* Init
|
@@ -42,8 +55,6 @@ class Object_Cache extends Root {
|
|
42 |
public function __construct( $cfg = false ) {
|
43 |
defined( 'LSCWP_LOG' ) && Debug2::debug2( '[Object] init' );
|
44 |
|
45 |
-
$this->_oc_data_file = WP_CONTENT_DIR . '/.object-cache.ini';
|
46 |
-
|
47 |
if ( $cfg ) {
|
48 |
if ( ! is_array( $cfg[ Base::O_OBJECT_GLOBAL_GROUPS ] ) ) {
|
49 |
$cfg[ Base::O_OBJECT_GLOBAL_GROUPS ] = explode( "\n", $cfg[ Base::O_OBJECT_GLOBAL_GROUPS ] );
|
@@ -91,20 +102,21 @@ class Object_Cache extends Root {
|
|
91 |
}
|
92 |
$this->_cfg_enabled = $this->conf( Base::O_OBJECT ) && class_exists( $this->_oc_driver ) && $this->_cfg_host;
|
93 |
}
|
94 |
-
elseif ( file_exists(
|
95 |
-
|
96 |
-
$
|
97 |
-
$this->
|
98 |
-
$this->
|
99 |
-
$this->
|
100 |
-
$this->
|
101 |
-
$this->
|
102 |
-
$this->
|
103 |
-
$this->
|
104 |
-
$this->
|
105 |
-
$this->
|
106 |
-
$this->
|
107 |
-
$this->
|
|
|
108 |
|
109 |
if ( $this->_cfg_method ) {
|
110 |
$this->_oc_driver = 'Redis';
|
@@ -145,30 +157,6 @@ class Object_Cache extends Root {
|
|
145 |
public function update_file( $options ) {
|
146 |
$changed = false;
|
147 |
|
148 |
-
// Update data file
|
149 |
-
$data = "[object_cache]"
|
150 |
-
. "\nmethod = " . $options[ Base::O_OBJECT_KIND ]
|
151 |
-
. "\nhost = " . $options[ Base::O_OBJECT_HOST ]
|
152 |
-
. "\nport = " . (int) $options[ Base::O_OBJECT_PORT ]
|
153 |
-
. "\nlife = " . $options[ Base::O_OBJECT_LIFE ]
|
154 |
-
. "\nuser = '" . $options[ Base::O_OBJECT_USER ] . "'"
|
155 |
-
. "\npswd = '" . $options[ Base::O_OBJECT_PSWD ] . "'"
|
156 |
-
. "\ndb = " . (int) $options[ Base::O_OBJECT_DB_ID ]
|
157 |
-
. "\npersistent = " . ( $options[ Base::O_OBJECT_PERSISTENT ] ? 1 : 0 )
|
158 |
-
. "\ncache_admin = " . ( $options[ Base::O_OBJECT_ADMIN ] ? 1 : 0 )
|
159 |
-
. "\ncache_transients = " . ( $options[ Base::O_OBJECT_TRANSIENTS ] ? 1 : 0 )
|
160 |
-
. "\nglobal_groups = " . implode( ',', $options[ Base::O_OBJECT_GLOBAL_GROUPS ] )
|
161 |
-
. "\nnon_persistent_groups = " . implode( ',', $options[ Base::O_OBJECT_NON_PERSISTENT_GROUPS ] )
|
162 |
-
;
|
163 |
-
|
164 |
-
$old_data = File::read( $this->_oc_data_file );
|
165 |
-
if ( $old_data != $data ) {
|
166 |
-
defined( 'LSCWP_LOG' ) && Debug2::debug( '[Settings] Update .object_cache.ini and flush object cache' );
|
167 |
-
File::save( $this->_oc_data_file, $data );
|
168 |
-
|
169 |
-
$changed = true;
|
170 |
-
}
|
171 |
-
|
172 |
// NOTE: When included in oc.php, `LSCWP_DIR` will show undefined, so this must be assigned/generated when used
|
173 |
$_oc_ori_file = LSCWP_DIR . 'lib/object-cache.php';
|
174 |
$_oc_wp_file = WP_CONTENT_DIR . '/object-cache.php';
|
@@ -204,11 +192,6 @@ class Object_Cache extends Root {
|
|
204 |
defined( 'LSCWP_LOG' ) && Debug2::debug( '[Object] removing ' . $_oc_wp_file );
|
205 |
unlink( $_oc_wp_file );
|
206 |
}
|
207 |
-
|
208 |
-
if ( file_exists( $this->_oc_data_file ) ) {
|
209 |
-
Debug2::debug( '[Object] Removing ' . $this->_oc_data_file );
|
210 |
-
unlink( $this->_oc_data_file );
|
211 |
-
}
|
212 |
}
|
213 |
|
214 |
/**
|
13 |
require_once dirname( __DIR__ ) . '/autoload.php';
|
14 |
|
15 |
class Object_Cache extends Root {
|
16 |
+
const O_OBJECT = 'object';
|
17 |
+
const O_OBJECT_KIND = 'object-kind';
|
18 |
+
const O_OBJECT_HOST = 'object-host';
|
19 |
+
const O_OBJECT_PORT = 'object-port';
|
20 |
+
const O_OBJECT_LIFE = 'object-life';
|
21 |
+
const O_OBJECT_PERSISTENT = 'object-persistent';
|
22 |
+
const O_OBJECT_ADMIN = 'object-admin';
|
23 |
+
const O_OBJECT_TRANSIENTS = 'object-transients';
|
24 |
+
const O_OBJECT_DB_ID = 'object-db_id';
|
25 |
+
const O_OBJECT_USER = 'object-user';
|
26 |
+
const O_OBJECT_PSWD = 'object-pswd';
|
27 |
+
const O_OBJECT_GLOBAL_GROUPS = 'object-global_groups';
|
28 |
+
const O_OBJECT_NON_PERSISTENT_GROUPS = 'object-non_persistent_groups';
|
29 |
+
|
30 |
private $_conn;
|
31 |
private $_cfg_enabled;
|
32 |
private $_cfg_method;
|
42 |
|
43 |
private $_oc_driver = 'Memcached'; // Redis or Memcached
|
44 |
|
45 |
+
private $_global_groups = array();
|
46 |
+
private $_non_persistent_groups = array();
|
47 |
|
48 |
/**
|
49 |
* Init
|
55 |
public function __construct( $cfg = false ) {
|
56 |
defined( 'LSCWP_LOG' ) && Debug2::debug2( '[Object] init' );
|
57 |
|
|
|
|
|
58 |
if ( $cfg ) {
|
59 |
if ( ! is_array( $cfg[ Base::O_OBJECT_GLOBAL_GROUPS ] ) ) {
|
60 |
$cfg[ Base::O_OBJECT_GLOBAL_GROUPS ] = explode( "\n", $cfg[ Base::O_OBJECT_GLOBAL_GROUPS ] );
|
102 |
}
|
103 |
$this->_cfg_enabled = $this->conf( Base::O_OBJECT ) && class_exists( $this->_oc_driver ) && $this->_cfg_host;
|
104 |
}
|
105 |
+
elseif ( file_exists( WP_CONTENT_DIR . '/' . self::CONF_FILE ) ) { // Get cfg from _data_file
|
106 |
+
// Use self::const to avoid loading more classes
|
107 |
+
$cfg = json_decode( file_get_contents( WP_CONTENT_DIR . '/' . self::CONF_FILE ), true );
|
108 |
+
$this->_cfg_method = ! empty( $cfg[ self::O_OBJECT_KIND ] ) ? $cfg[ self::O_OBJECT_KIND ] : false;
|
109 |
+
$this->_cfg_host = $cfg[ self::O_OBJECT_HOST ];
|
110 |
+
$this->_cfg_port = $cfg[ self::O_OBJECT_PORT ];
|
111 |
+
$this->_cfg_life = ! empty( $cfg[ self::O_OBJECT_LIFE ] ) ? $cfg[ self::O_OBJECT_LIFE ] : $this->_default_life;
|
112 |
+
$this->_cfg_persistent = ! empty( $cfg[ self::O_OBJECT_PERSISTENT ] ) ? $cfg[ self::O_OBJECT_PERSISTENT ] : false;
|
113 |
+
$this->_cfg_admin = ! empty( $cfg[ self::O_OBJECT_ADMIN ] ) ? $cfg[ self::O_OBJECT_ADMIN ] : false;
|
114 |
+
$this->_cfg_transients = ! empty( $cfg[ self::O_OBJECT_TRANSIENTS ] ) ? $cfg[ self::O_OBJECT_TRANSIENTS ] : false;
|
115 |
+
$this->_cfg_db = ! empty( $cfg[ self::O_OBJECT_DB_ID ] ) ? $cfg[ self::O_OBJECT_DB_ID ] : 0;
|
116 |
+
$this->_cfg_user = ! empty( $cfg[ self::O_OBJECT_USER ] ) ? $cfg[ self::O_OBJECT_USER ] : '';
|
117 |
+
$this->_cfg_pswd = ! empty( $cfg[ self::O_OBJECT_PSWD ] ) ? $cfg[ self::O_OBJECT_PSWD ] : '';
|
118 |
+
$this->_global_groups = ! empty( $cfg[ self::O_OBJECT_GLOBAL_GROUPS ] ) ? $cfg[ self::O_OBJECT_GLOBAL_GROUPS ] : array();
|
119 |
+
$this->_non_persistent_groups = ! empty( $cfg[ self::O_OBJECT_NON_PERSISTENT_GROUPS ] ) ? $cfg[ self::O_OBJECT_NON_PERSISTENT_GROUPS ] : array();
|
120 |
|
121 |
if ( $this->_cfg_method ) {
|
122 |
$this->_oc_driver = 'Redis';
|
157 |
public function update_file( $options ) {
|
158 |
$changed = false;
|
159 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
// NOTE: When included in oc.php, `LSCWP_DIR` will show undefined, so this must be assigned/generated when used
|
161 |
$_oc_ori_file = LSCWP_DIR . 'lib/object-cache.php';
|
162 |
$_oc_wp_file = WP_CONTENT_DIR . '/object-cache.php';
|
192 |
defined( 'LSCWP_LOG' ) && Debug2::debug( '[Object] removing ' . $_oc_wp_file );
|
193 |
unlink( $_oc_wp_file );
|
194 |
}
|
|
|
|
|
|
|
|
|
|
|
195 |
}
|
196 |
|
197 |
/**
|
src/optimize.cls.php
CHANGED
@@ -84,13 +84,19 @@ class Optimize extends Base {
|
|
84 |
add_filter( 'script_loader_src', array( $this, 'remove_query_strings' ), 999 );
|
85 |
}
|
86 |
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
}
|
95 |
|
96 |
/**
|
@@ -256,6 +262,7 @@ class Optimize extends Base {
|
|
256 |
do_action( 'litespeed_optm' );
|
257 |
|
258 |
// Parse css from content
|
|
|
259 |
if ( $this->cfg_css_min || $this->cfg_css_comb || $this->cfg_http2_css || $this->cfg_ggfonts_rm || $this->cfg_css_async || $this->cfg_ggfonts_async || $this->_conf_css_font_display ) {
|
260 |
add_filter( 'litespeed_optimize_css_excludes', array( $this->cls( 'Data' ), 'load_css_exc' ) );
|
261 |
list( $src_list, $html_list ) = $this->_parse_css();
|
@@ -312,6 +319,7 @@ class Optimize extends Base {
|
|
312 |
}
|
313 |
|
314 |
// Parse js from buffer as needed
|
|
|
315 |
if ( $this->cfg_js_min || $this->cfg_js_comb || $this->cfg_http2_js || $this->cfg_js_defer ) {
|
316 |
add_filter( 'litespeed_optimize_js_excludes', array( $this->cls( 'Data' ), 'load_js_exc' ) );
|
317 |
list( $src_list, $html_list ) = $this->_parse_js();
|
@@ -401,12 +409,6 @@ class Optimize extends Base {
|
|
401 |
// Inject JS Delay lib
|
402 |
$this->_maybe_js_delay();
|
403 |
|
404 |
-
/**
|
405 |
-
* Localize GG/FB JS/Fonts
|
406 |
-
* @since 3.3
|
407 |
-
*/
|
408 |
-
$this->content = $this->cls( 'Localization' )->finalize( $this->content );
|
409 |
-
|
410 |
/**
|
411 |
* HTML Lazyload
|
412 |
*/
|
@@ -459,7 +461,7 @@ class Optimize extends Base {
|
|
459 |
*/
|
460 |
private function _build_js_tag( $src ) {
|
461 |
if ( $this->cfg_js_defer === 2 ) {
|
462 |
-
return '<script data-optimized="1" type="litespeed/javascript" src="' . $src . '"></script>';
|
463 |
}
|
464 |
|
465 |
if ( $this->cfg_js_defer ) {
|
@@ -655,13 +657,15 @@ class Optimize extends Base {
|
|
655 |
private function _src_queue_handler( $src_list, $html_list, $file_type = 'css' ) {
|
656 |
$html_list_ori = $html_list;
|
657 |
|
|
|
|
|
658 |
$tag = $file_type == 'css' ? 'link' : 'script';
|
659 |
foreach ( $src_list as $key => $src_info ) {
|
660 |
// Minify inline CSS/JS
|
661 |
if ( ! empty( $src_info[ 'inl' ] ) ) {
|
662 |
if ( $file_type == 'css' ) {
|
663 |
$code = Optimizer::minify_css( $src_info[ 'src' ] );
|
664 |
-
$code = $this->cls( 'Media' )->replace_background_webp( $code );
|
665 |
$snippet = str_replace( $src_info[ 'src' ], $code, $html_list[ $key ] );
|
666 |
}
|
667 |
else {
|
@@ -903,8 +907,8 @@ class Optimize extends Base {
|
|
903 |
$attrs = preg_replace( '# type=([\'"])([^\1]+)\1#isU', '', $attrs );
|
904 |
}
|
905 |
$this->i2++;
|
906 |
-
return '<script' . $attrs . ' type="litespeed/javascript"
|
907 |
-
// return '<script' . $attrs . ' type="litespeed/javascript"
|
908 |
// return '<script' . $attrs . ' type="litespeed/javascript">' . $con . '</script>';
|
909 |
}
|
910 |
|
@@ -1140,7 +1144,7 @@ class Optimize extends Base {
|
|
1140 |
$ori = preg_replace( '# type=([\'"])([^\1]+)\1#isU', '', $ori );
|
1141 |
}
|
1142 |
$this->i2++;
|
1143 |
-
return str_replace( ' src=', ' type="litespeed/javascript"
|
1144 |
}
|
1145 |
|
1146 |
return str_replace( '></script>', ' defer data-deferred="1"></script>', $ori );
|
84 |
add_filter( 'script_loader_src', array( $this, 'remove_query_strings' ), 999 );
|
85 |
}
|
86 |
|
87 |
+
// GM JS exclude @since 4.1
|
88 |
+
if ( defined( 'LITESPEED_GUEST_OPTM' ) ) {
|
89 |
+
$this->cfg_js_defer_exc = apply_filters( 'litespeed_optm_gm_js_exc', $this->conf( self::O_OPTM_GM_JS_EXC ) );
|
90 |
+
}
|
91 |
+
else {
|
92 |
+
/**
|
93 |
+
* Exclude js from deferred setting
|
94 |
+
* @since 1.5
|
95 |
+
*/
|
96 |
+
if ( $this->cfg_js_defer ) {
|
97 |
+
add_filter( 'litespeed_optm_js_defer_exc', array( $this->cls( 'Data' ), 'load_js_defer_exc' ) );
|
98 |
+
$this->cfg_js_defer_exc = apply_filters( 'litespeed_optm_js_defer_exc', $this->conf( self::O_OPTM_JS_DEFER_EXC ) );
|
99 |
+
}
|
100 |
}
|
101 |
|
102 |
/**
|
262 |
do_action( 'litespeed_optm' );
|
263 |
|
264 |
// Parse css from content
|
265 |
+
$src_list = false;
|
266 |
if ( $this->cfg_css_min || $this->cfg_css_comb || $this->cfg_http2_css || $this->cfg_ggfonts_rm || $this->cfg_css_async || $this->cfg_ggfonts_async || $this->_conf_css_font_display ) {
|
267 |
add_filter( 'litespeed_optimize_css_excludes', array( $this->cls( 'Data' ), 'load_css_exc' ) );
|
268 |
list( $src_list, $html_list ) = $this->_parse_css();
|
319 |
}
|
320 |
|
321 |
// Parse js from buffer as needed
|
322 |
+
$src_list = false;
|
323 |
if ( $this->cfg_js_min || $this->cfg_js_comb || $this->cfg_http2_js || $this->cfg_js_defer ) {
|
324 |
add_filter( 'litespeed_optimize_js_excludes', array( $this->cls( 'Data' ), 'load_js_exc' ) );
|
325 |
list( $src_list, $html_list ) = $this->_parse_js();
|
409 |
// Inject JS Delay lib
|
410 |
$this->_maybe_js_delay();
|
411 |
|
|
|
|
|
|
|
|
|
|
|
|
|
412 |
/**
|
413 |
* HTML Lazyload
|
414 |
*/
|
461 |
*/
|
462 |
private function _build_js_tag( $src ) {
|
463 |
if ( $this->cfg_js_defer === 2 ) {
|
464 |
+
return '<script data-optimized="1" type="litespeed/javascript" data-src="' . $src . '"></script>';
|
465 |
}
|
466 |
|
467 |
if ( $this->cfg_js_defer ) {
|
657 |
private function _src_queue_handler( $src_list, $html_list, $file_type = 'css' ) {
|
658 |
$html_list_ori = $html_list;
|
659 |
|
660 |
+
$can_webp = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE );
|
661 |
+
|
662 |
$tag = $file_type == 'css' ? 'link' : 'script';
|
663 |
foreach ( $src_list as $key => $src_info ) {
|
664 |
// Minify inline CSS/JS
|
665 |
if ( ! empty( $src_info[ 'inl' ] ) ) {
|
666 |
if ( $file_type == 'css' ) {
|
667 |
$code = Optimizer::minify_css( $src_info[ 'src' ] );
|
668 |
+
$can_webp && $code = $this->cls( 'Media' )->replace_background_webp( $code );
|
669 |
$snippet = str_replace( $src_info[ 'src' ], $code, $html_list[ $key ] );
|
670 |
}
|
671 |
else {
|
907 |
$attrs = preg_replace( '# type=([\'"])([^\1]+)\1#isU', '', $attrs );
|
908 |
}
|
909 |
$this->i2++;
|
910 |
+
return '<script' . $attrs . ' type="litespeed/javascript" data-i="' . $this->i2 . '">' . $con . '</script>';
|
911 |
+
// return '<script' . $attrs . ' type="litespeed/javascript" data-i="' . $this->i2 . '" src="data:text/javascript;base64,' . base64_encode( $con ) . '"></script>';
|
912 |
// return '<script' . $attrs . ' type="litespeed/javascript">' . $con . '</script>';
|
913 |
}
|
914 |
|
1144 |
$ori = preg_replace( '# type=([\'"])([^\1]+)\1#isU', '', $ori );
|
1145 |
}
|
1146 |
$this->i2++;
|
1147 |
+
return str_replace( ' src=', ' type="litespeed/javascript" data-i="' . $this->i2 . '" data-src=', $ori );
|
1148 |
}
|
1149 |
|
1150 |
return str_replace( '></script>', ' defer data-deferred="1"></script>', $ori );
|
src/optimizer.cls.php
CHANGED
@@ -154,7 +154,10 @@ class Optimizer extends Root {
|
|
154 |
|
155 |
$content = $this->cls( 'CDN' )->finalize( $content );
|
156 |
|
157 |
-
|
|
|
|
|
|
|
158 |
}
|
159 |
else {
|
160 |
if ( $minify ) {
|
154 |
|
155 |
$content = $this->cls( 'CDN' )->finalize( $content );
|
156 |
|
157 |
+
if ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) {
|
158 |
+
$content = $this->cls( 'Media' )->replace_background_webp( $content );
|
159 |
+
}
|
160 |
+
|
161 |
}
|
162 |
else {
|
163 |
if ( $minify ) {
|
src/placeholder.cls.php
CHANGED
@@ -35,7 +35,7 @@ class Placeholder extends Base {
|
|
35 |
*/
|
36 |
public function __construct() {
|
37 |
$this->_conf_placeholder_resp = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_MEDIA_PLACEHOLDER_RESP );
|
38 |
-
$this->_conf_placeholder_resp_svg =
|
39 |
$this->_conf_lqip = ! defined( 'LITESPEED_GUEST_OPTM' ) && $this->conf( self::O_MEDIA_LQIP );
|
40 |
$this->_conf_lqip_qual = $this->conf( self::O_MEDIA_LQIP_QUAL );
|
41 |
$this->_conf_lqip_min_w = $this->conf( self::O_MEDIA_LQIP_MIN_W );
|
@@ -250,28 +250,53 @@ class Placeholder extends Base {
|
|
250 |
$tmp_placeholder = $this->_generate_placeholder_locally( $size );
|
251 |
|
252 |
// Store it to prepare for cron
|
253 |
-
|
254 |
-
|
255 |
-
}
|
256 |
-
if ( in_array( $arr_key, $this->_summary[ 'queue' ] ) ) {
|
257 |
Debug2::debug2( '[LQIP] already in queue' );
|
258 |
|
259 |
return $tmp_placeholder;
|
260 |
}
|
261 |
|
262 |
-
if ( count( $
|
263 |
Debug2::debug2( '[LQIP] queue is full' );
|
264 |
|
265 |
return $tmp_placeholder;
|
266 |
}
|
267 |
|
268 |
-
$
|
269 |
-
|
270 |
Debug2::debug( '[LQIP] Added placeholder queue' );
|
271 |
|
272 |
-
self::save_summary();
|
273 |
return $tmp_placeholder;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
274 |
|
|
|
275 |
}
|
276 |
|
277 |
/**
|
@@ -338,7 +363,10 @@ class Placeholder extends Base {
|
|
338 |
*/
|
339 |
public static function cron( $continue = false ) {
|
340 |
$_instance = self::cls();
|
341 |
-
|
|
|
|
|
|
|
342 |
return;
|
343 |
}
|
344 |
|
@@ -350,7 +378,7 @@ class Placeholder extends Base {
|
|
350 |
}
|
351 |
}
|
352 |
|
353 |
-
foreach ( $
|
354 |
Debug2::debug( '[LQIP] cron job [size] ' . $v );
|
355 |
|
356 |
$_instance->_generate_placeholder( $v );
|
@@ -422,7 +450,7 @@ class Placeholder extends Base {
|
|
422 |
|
423 |
// CHeck if the image is 404 first
|
424 |
if ( File::is_404( $req_data[ 'url' ] ) ) {
|
425 |
-
$this->_popup_and_save( $raw_size_and_src );
|
426 |
$this->_append_exc( $src );
|
427 |
Debug2::debug( '[LQIP] 404 before request [src] ' . $req_data[ 'url' ] );
|
428 |
return $this->_generate_placeholder_locally( $size );
|
@@ -439,7 +467,7 @@ class Placeholder extends Base {
|
|
439 |
|
440 |
if ( empty( $json[ 'lqip' ] ) || strpos( $json[ 'lqip' ], 'data:image/svg+xml' ) !== 0 ) {
|
441 |
// image error, pop up the current queue
|
442 |
-
$this->_popup_and_save( $raw_size_and_src );
|
443 |
$this->_append_exc( $src );
|
444 |
Debug2::debug( '[LQIP] wrong response format', $json );
|
445 |
|
@@ -458,6 +486,7 @@ class Placeholder extends Base {
|
|
458 |
$this->_summary[ 'last_spent' ] = time() - $this->_summary[ 'curr_request' ];
|
459 |
$this->_summary[ 'last_request' ] = $this->_summary[ 'curr_request' ];
|
460 |
$this->_summary[ 'curr_request' ] = 0;
|
|
|
461 |
$this->_popup_and_save( $raw_size_and_src );
|
462 |
|
463 |
Debug2::debug( '[LQIP] saved LQIP ' . $file );
|
@@ -476,6 +505,8 @@ class Placeholder extends Base {
|
|
476 |
return true;
|
477 |
}
|
478 |
|
|
|
|
|
479 |
return false;
|
480 |
}
|
481 |
|
@@ -489,25 +520,6 @@ class Placeholder extends Base {
|
|
489 |
$val[] = $src;
|
490 |
$this->cls( 'Conf' )->update( self::O_MEDIA_LQIP_EXC, $val );
|
491 |
Debug2::debug( '[LQIP] Appended to LQIP Excludes [URL] ' . $src );
|
492 |
-
|
493 |
-
if ( ! empty( $this->_summary[ 'queue' ] ) ) {
|
494 |
-
$changed = false;
|
495 |
-
foreach ( $this->_summary[ 'queue' ] as $k => $raw_size_and_src ) {
|
496 |
-
$size_and_src = explode( ' ', $raw_size_and_src, 2 );
|
497 |
-
if ( empty( $size_and_src[ 1 ] ) ) {
|
498 |
-
continue;
|
499 |
-
}
|
500 |
-
|
501 |
-
if ( $size_and_src[ 1 ] == $src ) {
|
502 |
-
unset( $this->_summary[ 'queue' ][ $k ] );
|
503 |
-
$changed = true;
|
504 |
-
}
|
505 |
-
}
|
506 |
-
|
507 |
-
if ( $changed ) {
|
508 |
-
self::save_summary();
|
509 |
-
}
|
510 |
-
}
|
511 |
}
|
512 |
|
513 |
/**
|
@@ -515,12 +527,35 @@ class Placeholder extends Base {
|
|
515 |
*
|
516 |
* @since 3.0
|
517 |
*/
|
518 |
-
private function _popup_and_save( $raw_size_and_src ) {
|
519 |
-
|
520 |
-
|
|
|
521 |
}
|
522 |
|
523 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
524 |
}
|
525 |
|
526 |
/**
|
@@ -529,12 +564,11 @@ class Placeholder extends Base {
|
|
529 |
* @since 3.4
|
530 |
*/
|
531 |
public function clear_q() {
|
532 |
-
|
533 |
-
return;
|
534 |
-
}
|
535 |
|
536 |
-
|
537 |
-
|
|
|
538 |
|
539 |
$msg = __( 'Queue cleared successfully.', 'litespeed-cache' );
|
540 |
Admin_Display::succeed( $msg );
|
35 |
*/
|
36 |
public function __construct() {
|
37 |
$this->_conf_placeholder_resp = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_MEDIA_PLACEHOLDER_RESP );
|
38 |
+
$this->_conf_placeholder_resp_svg = $this->conf( self::O_MEDIA_PLACEHOLDER_RESP_SVG );
|
39 |
$this->_conf_lqip = ! defined( 'LITESPEED_GUEST_OPTM' ) && $this->conf( self::O_MEDIA_LQIP );
|
40 |
$this->_conf_lqip_qual = $this->conf( self::O_MEDIA_LQIP_QUAL );
|
41 |
$this->_conf_lqip_min_w = $this->conf( self::O_MEDIA_LQIP_MIN_W );
|
250 |
$tmp_placeholder = $this->_generate_placeholder_locally( $size );
|
251 |
|
252 |
// Store it to prepare for cron
|
253 |
+
$queue = $this->load_queue();
|
254 |
+
if ( in_array( $arr_key, $queue ) ) {
|
|
|
|
|
255 |
Debug2::debug2( '[LQIP] already in queue' );
|
256 |
|
257 |
return $tmp_placeholder;
|
258 |
}
|
259 |
|
260 |
+
if ( count( $queue ) > 500 ) {
|
261 |
Debug2::debug2( '[LQIP] queue is full' );
|
262 |
|
263 |
return $tmp_placeholder;
|
264 |
}
|
265 |
|
266 |
+
$queue[] = $arr_key;
|
267 |
+
$this->save_queue( $queue );
|
268 |
Debug2::debug( '[LQIP] Added placeholder queue' );
|
269 |
|
|
|
270 |
return $tmp_placeholder;
|
271 |
+
}
|
272 |
+
|
273 |
+
/**
|
274 |
+
* Load current queues from data file
|
275 |
+
*
|
276 |
+
* @since 4.1
|
277 |
+
*/
|
278 |
+
public function load_queue() {
|
279 |
+
$static_path = LITESPEED_STATIC_DIR . '/lqip/.litespeed_conf.dat';
|
280 |
+
|
281 |
+
$queue = array();
|
282 |
+
if ( file_exists( $static_path ) ) {
|
283 |
+
$queue = json_decode( file_get_contents( $static_path ), true );
|
284 |
+
}
|
285 |
+
|
286 |
+
return $queue;
|
287 |
+
}
|
288 |
+
|
289 |
+
/**
|
290 |
+
* Save current queues to data file
|
291 |
+
*
|
292 |
+
* @since 4.1
|
293 |
+
*/
|
294 |
+
public function save_queue( $list ) {
|
295 |
+
$static_path = LITESPEED_STATIC_DIR . '/lqip/.litespeed_conf.dat';
|
296 |
+
|
297 |
+
$data = json_encode( $list );
|
298 |
|
299 |
+
File::save( $static_path, $data, true );
|
300 |
}
|
301 |
|
302 |
/**
|
363 |
*/
|
364 |
public static function cron( $continue = false ) {
|
365 |
$_instance = self::cls();
|
366 |
+
|
367 |
+
$queue = $_instance->load_queue();
|
368 |
+
|
369 |
+
if ( empty( $queue ) ) {
|
370 |
return;
|
371 |
}
|
372 |
|
378 |
}
|
379 |
}
|
380 |
|
381 |
+
foreach ( $queue as $v ) {
|
382 |
Debug2::debug( '[LQIP] cron job [size] ' . $v );
|
383 |
|
384 |
$_instance->_generate_placeholder( $v );
|
450 |
|
451 |
// CHeck if the image is 404 first
|
452 |
if ( File::is_404( $req_data[ 'url' ] ) ) {
|
453 |
+
$this->_popup_and_save( $raw_size_and_src, true );
|
454 |
$this->_append_exc( $src );
|
455 |
Debug2::debug( '[LQIP] 404 before request [src] ' . $req_data[ 'url' ] );
|
456 |
return $this->_generate_placeholder_locally( $size );
|
467 |
|
468 |
if ( empty( $json[ 'lqip' ] ) || strpos( $json[ 'lqip' ], 'data:image/svg+xml' ) !== 0 ) {
|
469 |
// image error, pop up the current queue
|
470 |
+
$this->_popup_and_save( $raw_size_and_src, true );
|
471 |
$this->_append_exc( $src );
|
472 |
Debug2::debug( '[LQIP] wrong response format', $json );
|
473 |
|
486 |
$this->_summary[ 'last_spent' ] = time() - $this->_summary[ 'curr_request' ];
|
487 |
$this->_summary[ 'last_request' ] = $this->_summary[ 'curr_request' ];
|
488 |
$this->_summary[ 'curr_request' ] = 0;
|
489 |
+
self::save_summary();
|
490 |
$this->_popup_and_save( $raw_size_and_src );
|
491 |
|
492 |
Debug2::debug( '[LQIP] saved LQIP ' . $file );
|
505 |
return true;
|
506 |
}
|
507 |
|
508 |
+
Debug2::debug2( '[LQIP] Size too small' );
|
509 |
+
|
510 |
return false;
|
511 |
}
|
512 |
|
520 |
$val[] = $src;
|
521 |
$this->cls( 'Conf' )->update( self::O_MEDIA_LQIP_EXC, $val );
|
522 |
Debug2::debug( '[LQIP] Appended to LQIP Excludes [URL] ' . $src );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
523 |
}
|
524 |
|
525 |
/**
|
527 |
*
|
528 |
* @since 3.0
|
529 |
*/
|
530 |
+
private function _popup_and_save( $raw_size_and_src, $append_to_exc = false ) {
|
531 |
+
$queue = $this->load_queue();
|
532 |
+
if ( ! empty( $queue ) && in_array( $raw_size_and_src, $queue ) ) {
|
533 |
+
unset( $queue[ array_search( $raw_size_and_src, $queue ) ] );
|
534 |
}
|
535 |
|
536 |
+
if ( $append_to_exc ) {
|
537 |
+
$size_and_src = explode( ' ', $raw_size_and_src, 2 );
|
538 |
+
$this_src = $size_and_src[ 1 ];
|
539 |
+
|
540 |
+
// Append to lqip exc setting first
|
541 |
+
$this->_append_exc( $this_src );
|
542 |
+
|
543 |
+
// Check if other queues contain this src or not
|
544 |
+
if ( $queue ) {
|
545 |
+
foreach ( $queue as $k => $raw_size_and_src ) {
|
546 |
+
$size_and_src = explode( ' ', $raw_size_and_src, 2 );
|
547 |
+
if ( empty( $size_and_src[ 1 ] ) ) {
|
548 |
+
continue;
|
549 |
+
}
|
550 |
+
|
551 |
+
if ( $size_and_src[ 1 ] == $this_src ) {
|
552 |
+
unset( $queue[ $k ] );
|
553 |
+
}
|
554 |
+
}
|
555 |
+
}
|
556 |
+
}
|
557 |
+
|
558 |
+
$this->save_queue( $queue );
|
559 |
}
|
560 |
|
561 |
/**
|
564 |
* @since 3.4
|
565 |
*/
|
566 |
public function clear_q() {
|
567 |
+
$static_path = LITESPEED_STATIC_DIR . '/lqip/.litespeed_conf.dat';
|
|
|
|
|
568 |
|
569 |
+
if ( file_exists( $static_path ) ) {
|
570 |
+
unlink( $static_path );
|
571 |
+
}
|
572 |
|
573 |
$msg = __( 'Queue cleared successfully.', 'litespeed-cache' );
|
574 |
Admin_Display::succeed( $msg );
|
src/purge.cls.php
CHANGED
@@ -21,7 +21,6 @@ class Purge extends Base {
|
|
21 |
const TYPE_PURGE_ALL = 'purge_all';
|
22 |
const TYPE_PURGE_ALL_LSCACHE = 'purge_all_lscache';
|
23 |
const TYPE_PURGE_ALL_CSSJS = 'purge_all_cssjs';
|
24 |
-
const TYPE_PURGE_ALL_LOCALRES = 'purge_all_localres';
|
25 |
const TYPE_PURGE_ALL_CCSS = 'purge_all_ccss';
|
26 |
const TYPE_PURGE_ALL_LQIP = 'purge_all_lqip';
|
27 |
const TYPE_PURGE_ALL_AVATAR = 'purge_all_avatar';
|
@@ -96,10 +95,6 @@ class Purge extends Base {
|
|
96 |
$this->_purge_all_cssjs();
|
97 |
break;
|
98 |
|
99 |
-
case self::TYPE_PURGE_ALL_LOCALRES:
|
100 |
-
$this->_purge_all_localres();
|
101 |
-
break;
|
102 |
-
|
103 |
case self::TYPE_PURGE_ALL_CCSS:
|
104 |
$this->_purge_all_ccss();
|
105 |
break;
|
@@ -162,7 +157,6 @@ class Purge extends Base {
|
|
162 |
private function _purge_all( $reason = false ) {
|
163 |
$this->_purge_all_lscache( true );
|
164 |
$this->_purge_all_cssjs( true );
|
165 |
-
$this->_purge_all_localres( true );
|
166 |
// $this->_purge_all_ccss( true );
|
167 |
// $this->_purge_all_lqip( true );
|
168 |
$this->_purge_all_object( true );
|
@@ -256,23 +250,6 @@ class Purge extends Base {
|
|
256 |
}
|
257 |
}
|
258 |
|
259 |
-
/**
|
260 |
-
* Delete all localized JS
|
261 |
-
*
|
262 |
-
* @since 3.3
|
263 |
-
* @access private
|
264 |
-
*/
|
265 |
-
private function _purge_all_localres( $silence = false ) {
|
266 |
-
do_action( 'litespeed_purged_all_localres' );
|
267 |
-
|
268 |
-
$this->_add( Tag::TYPE_LOCALRES );
|
269 |
-
|
270 |
-
if ( ! $silence ) {
|
271 |
-
$msg = __( 'Notified LiteSpeed Web Server to purge localized resource entries.', 'litespeed-cache' );
|
272 |
-
! defined( 'LITESPEED_PURGE_SILENT' ) && Admin_Display::succeed( $msg );
|
273 |
-
}
|
274 |
-
}
|
275 |
-
|
276 |
/**
|
277 |
* Alerts LiteSpeed Web Server to purge pages.
|
278 |
*
|
21 |
const TYPE_PURGE_ALL = 'purge_all';
|
22 |
const TYPE_PURGE_ALL_LSCACHE = 'purge_all_lscache';
|
23 |
const TYPE_PURGE_ALL_CSSJS = 'purge_all_cssjs';
|
|
|
24 |
const TYPE_PURGE_ALL_CCSS = 'purge_all_ccss';
|
25 |
const TYPE_PURGE_ALL_LQIP = 'purge_all_lqip';
|
26 |
const TYPE_PURGE_ALL_AVATAR = 'purge_all_avatar';
|
95 |
$this->_purge_all_cssjs();
|
96 |
break;
|
97 |
|
|
|
|
|
|
|
|
|
98 |
case self::TYPE_PURGE_ALL_CCSS:
|
99 |
$this->_purge_all_ccss();
|
100 |
break;
|
157 |
private function _purge_all( $reason = false ) {
|
158 |
$this->_purge_all_lscache( true );
|
159 |
$this->_purge_all_cssjs( true );
|
|
|
160 |
// $this->_purge_all_ccss( true );
|
161 |
// $this->_purge_all_lqip( true );
|
162 |
$this->_purge_all_object( true );
|
250 |
}
|
251 |
}
|
252 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
253 |
/**
|
254 |
* Alerts LiteSpeed Web Server to purge pages.
|
255 |
*
|
src/root.cls.php
CHANGED
@@ -9,6 +9,7 @@ namespace LiteSpeed;
|
|
9 |
defined( 'WPINC' ) || exit;
|
10 |
|
11 |
abstract class Root {
|
|
|
12 |
// Instance set
|
13 |
private static $_instances;
|
14 |
|
9 |
defined( 'WPINC' ) || exit;
|
10 |
|
11 |
abstract class Root {
|
12 |
+
const CONF_FILE = '.litespeed_conf.dat';
|
13 |
// Instance set
|
14 |
private static $_instances;
|
15 |
|
src/router.cls.php
CHANGED
@@ -708,10 +708,6 @@ class Router extends Base {
|
|
708 |
$this->cls( 'Avatar' )->serve_static( $path[ 1 ] );
|
709 |
break;
|
710 |
|
711 |
-
case 'localres':
|
712 |
-
$this->cls( 'Localization' )->serve_static( $path[ 1 ] );
|
713 |
-
break;
|
714 |
-
|
715 |
default :
|
716 |
break;
|
717 |
}
|
708 |
$this->cls( 'Avatar' )->serve_static( $path[ 1 ] );
|
709 |
break;
|
710 |
|
|
|
|
|
|
|
|
|
711 |
default :
|
712 |
break;
|
713 |
}
|
src/tag.cls.php
CHANGED
@@ -29,7 +29,6 @@ class Tag extends Root {
|
|
29 |
const TYPE_REST = 'REST';
|
30 |
const TYPE_LIST = 'LIST';
|
31 |
const TYPE_MIN = 'MIN';
|
32 |
-
const TYPE_LOCALRES = 'LOCALRES';
|
33 |
|
34 |
const X_HEADER = 'X-LiteSpeed-Tag';
|
35 |
|
@@ -337,6 +336,10 @@ class Tag extends Root {
|
|
337 |
* @return string empty string if empty, otherwise the cache tags header.
|
338 |
*/
|
339 |
public function output( $no_finalize = false ) {
|
|
|
|
|
|
|
|
|
340 |
if ( ! $no_finalize ) {
|
341 |
self::_finalize();
|
342 |
}
|
29 |
const TYPE_REST = 'REST';
|
30 |
const TYPE_LIST = 'LIST';
|
31 |
const TYPE_MIN = 'MIN';
|
|
|
32 |
|
33 |
const X_HEADER = 'X-LiteSpeed-Tag';
|
34 |
|
336 |
* @return string empty string if empty, otherwise the cache tags header.
|
337 |
*/
|
338 |
public function output( $no_finalize = false ) {
|
339 |
+
if ( defined( 'LSCACHE_NO_CACHE' ) && LSCACHE_NO_CACHE ) {
|
340 |
+
return;
|
341 |
+
}
|
342 |
+
|
343 |
if ( ! $no_finalize ) {
|
344 |
self::_finalize();
|
345 |
}
|
src/task.cls.php
CHANGED
@@ -20,6 +20,11 @@ class Task extends Root {
|
|
20 |
Base::O_CRAWLER => array( 'name' => 'litespeed_task_crawler', 'hook' => 'LiteSpeed\Crawler::start' ), // Set crawler to last one to use above results
|
21 |
);
|
22 |
|
|
|
|
|
|
|
|
|
|
|
23 |
const FITLER_CRAWLER = 'litespeed_crawl_filter';
|
24 |
const FITLER = 'litespeed_filter';
|
25 |
|
@@ -34,25 +39,31 @@ class Task extends Root {
|
|
34 |
|
35 |
add_filter( 'cron_schedules', array( $this, 'lscache_cron_filter' ) );
|
36 |
|
|
|
|
|
37 |
foreach ( self::$_triggers as $id => $trigger ) {
|
38 |
-
if ( $this->conf( $id ) ) {
|
39 |
-
|
40 |
-
|
41 |
-
if ( ! Router::can_crawl() ) {
|
42 |
-
continue;
|
43 |
-
}
|
44 |
-
|
45 |
-
add_filter( 'cron_schedules', array( $this, 'lscache_cron_filter_crawler' ) );
|
46 |
}
|
|
|
47 |
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
}
|
53 |
|
54 |
-
|
55 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
}
|
57 |
|
58 |
}
|
20 |
Base::O_CRAWLER => array( 'name' => 'litespeed_task_crawler', 'hook' => 'LiteSpeed\Crawler::start' ), // Set crawler to last one to use above results
|
21 |
);
|
22 |
|
23 |
+
private static $_guest_options = array(
|
24 |
+
Base::O_OPTM_CSS_ASYNC,
|
25 |
+
Base::O_OPTM_UCSS,
|
26 |
+
);
|
27 |
+
|
28 |
const FITLER_CRAWLER = 'litespeed_crawl_filter';
|
29 |
const FITLER = 'litespeed_filter';
|
30 |
|
39 |
|
40 |
add_filter( 'cron_schedules', array( $this, 'lscache_cron_filter' ) );
|
41 |
|
42 |
+
$guest_optm = $this->conf( Base::O_GUEST ) && $this->conf( Base::O_GUEST_OPTM );
|
43 |
+
|
44 |
foreach ( self::$_triggers as $id => $trigger ) {
|
45 |
+
if ( ! $this->conf( $id ) ) {
|
46 |
+
if ( ! $guest_optm || ! in_array( $id, self::$_guest_options ) ) {
|
47 |
+
continue;
|
|
|
|
|
|
|
|
|
|
|
48 |
}
|
49 |
+
}
|
50 |
|
51 |
+
// Special check for crawler
|
52 |
+
if ( $id == Base::O_CRAWLER ) {
|
53 |
+
if ( ! Router::can_crawl() ) {
|
54 |
+
continue;
|
55 |
}
|
56 |
|
57 |
+
add_filter( 'cron_schedules', array( $this, 'lscache_cron_filter_crawler' ) );
|
58 |
}
|
59 |
+
|
60 |
+
if( ! wp_next_scheduled( $trigger[ 'name' ] ) ) {
|
61 |
+
Debug2::debug( '⏰ Cron hook register [name] ' . $trigger[ 'name' ] );
|
62 |
+
|
63 |
+
wp_schedule_event( time(), $id == Base::O_CRAWLER ? self::FITLER_CRAWLER : self::FITLER, $trigger[ 'name' ] );
|
64 |
+
}
|
65 |
+
|
66 |
+
add_action( $trigger[ 'name' ], $trigger[ 'hook' ] );
|
67 |
}
|
68 |
|
69 |
}
|
src/vary.cls.php
CHANGED
@@ -136,6 +136,11 @@ class Vary extends Root {
|
|
136 |
* @since 4.0
|
137 |
*/
|
138 |
private function _maybe_guest_mode() {
|
|
|
|
|
|
|
|
|
|
|
139 |
if ( ! $this->conf( Base::O_GUEST ) ) {
|
140 |
return;
|
141 |
}
|
@@ -159,6 +164,8 @@ class Vary extends Root {
|
|
159 |
}
|
160 |
|
161 |
// If is the request to update vary, then no guest
|
|
|
|
|
162 |
if ( ! empty( $_GET[ 'litespeed_guest' ] ) ) {
|
163 |
return;
|
164 |
}
|
@@ -176,118 +183,27 @@ class Vary extends Root {
|
|
176 |
* Update Guest vary
|
177 |
*
|
178 |
* @since 4.0
|
|
|
179 |
*/
|
180 |
public function update_guest_vary() {
|
181 |
-
|
182 |
-
|
|
|
|
|
|
|
|
|
183 |
Debug2::debug( '[Vary] 🤠🤠 Guest' );
|
184 |
echo '[]';
|
185 |
exit;
|
186 |
}
|
187 |
|
188 |
-
|
189 |
-
|
190 |
-
// save it
|
191 |
-
$expire = time() + 2 * DAY_IN_SECONDS;
|
192 |
-
|
193 |
-
$this->_cookie( $vary, $expire );
|
194 |
-
Debug2::debug( "[Vary] update guest vary set_cookie ---> $vary" );
|
195 |
|
196 |
// return json
|
197 |
echo json_encode( array( 'reload' => 'yes' ) );
|
198 |
exit;
|
199 |
}
|
200 |
|
201 |
-
/**
|
202 |
-
* Detect if is a guest visitor
|
203 |
-
*
|
204 |
-
* @since 4.0
|
205 |
-
*/
|
206 |
-
private function _always_guest() {
|
207 |
-
if ( empty( $_SERVER[ 'HTTP_USER_AGENT' ] ) ) {
|
208 |
-
return false;
|
209 |
-
}
|
210 |
-
|
211 |
-
$match = preg_match( '#Page Speed|Lighthouse|GTmetrix|Google|Pingdom|bot#i', $_SERVER[ 'HTTP_USER_AGENT' ] );
|
212 |
-
if ( $match ) {
|
213 |
-
return true;
|
214 |
-
}
|
215 |
-
|
216 |
-
$ips = [
|
217 |
-
'208.70.247.157',
|
218 |
-
'172.255.48.130',
|
219 |
-
'172.255.48.131',
|
220 |
-
'172.255.48.132',
|
221 |
-
'172.255.48.133',
|
222 |
-
'172.255.48.134',
|
223 |
-
'172.255.48.135',
|
224 |
-
'172.255.48.136',
|
225 |
-
'172.255.48.137',
|
226 |
-
'172.255.48.138',
|
227 |
-
'172.255.48.139',
|
228 |
-
'172.255.48.140',
|
229 |
-
'172.255.48.141',
|
230 |
-
'172.255.48.142',
|
231 |
-
'172.255.48.143',
|
232 |
-
'172.255.48.144',
|
233 |
-
'172.255.48.145',
|
234 |
-
'172.255.48.146',
|
235 |
-
'172.255.48.147',
|
236 |
-
'52.229.122.240',
|
237 |
-
'104.214.72.101',
|
238 |
-
'13.66.7.11',
|
239 |
-
'13.85.24.83',
|
240 |
-
'13.85.24.90',
|
241 |
-
'13.85.82.26',
|
242 |
-
'40.74.242.253',
|
243 |
-
'40.74.243.13',
|
244 |
-
'40.74.243.176',
|
245 |
-
'104.214.48.247',
|
246 |
-
'157.55.189.189',
|
247 |
-
'104.214.110.135',
|
248 |
-
'70.37.83.240',
|
249 |
-
'65.52.36.250',
|
250 |
-
'13.78.216.56',
|
251 |
-
'52.162.212.163',
|
252 |
-
'23.96.34.105',
|
253 |
-
'65.52.113.236',
|
254 |
-
'172.255.61.34',
|
255 |
-
'172.255.61.35',
|
256 |
-
'172.255.61.36',
|
257 |
-
'172.255.61.37',
|
258 |
-
'172.255.61.38',
|
259 |
-
'172.255.61.39',
|
260 |
-
'172.255.61.40',
|
261 |
-
'104.41.2.19',
|
262 |
-
'191.235.98.164',
|
263 |
-
'191.235.99.221',
|
264 |
-
'191.232.194.51',
|
265 |
-
'52.237.235.185',
|
266 |
-
'52.237.250.73',
|
267 |
-
'52.237.236.145',
|
268 |
-
'104.211.143.8',
|
269 |
-
'104.211.165.53',
|
270 |
-
'52.172.14.87',
|
271 |
-
'40.83.89.214',
|
272 |
-
'52.175.57.81',
|
273 |
-
'20.188.63.151',
|
274 |
-
'20.52.36.49',
|
275 |
-
'52.246.165.153',
|
276 |
-
'51.144.102.233',
|
277 |
-
'13.76.97.224',
|
278 |
-
'102.133.169.66',
|
279 |
-
'52.231.199.170',
|
280 |
-
'13.53.162.7',
|
281 |
-
'40.123.218.94',
|
282 |
-
];
|
283 |
-
|
284 |
-
if ( $this->cls( 'Router' )->ip_access( $ips ) ) {
|
285 |
-
return true;
|
286 |
-
}
|
287 |
-
|
288 |
-
return false;
|
289 |
-
}
|
290 |
-
|
291 |
/**
|
292 |
* Hooked to the comments_array filter.
|
293 |
*
|
@@ -533,7 +449,9 @@ class Vary extends Root {
|
|
533 |
* @access public
|
534 |
*/
|
535 |
public function finalize_default_vary( $uid = false ) {
|
536 |
-
|
|
|
|
|
537 |
return false;
|
538 |
}
|
539 |
|
@@ -712,7 +630,9 @@ class Vary extends Root {
|
|
712 |
*/
|
713 |
public function finalize() {
|
714 |
// Finalize default vary
|
715 |
-
|
|
|
|
|
716 |
|
717 |
$tp_cookies = $this->_finalize_curr_vary_cookies();
|
718 |
|
136 |
* @since 4.0
|
137 |
*/
|
138 |
private function _maybe_guest_mode() {
|
139 |
+
if ( defined( 'LITESPEED_GUEST' ) ) {
|
140 |
+
Debug2::debug( '[Vary] 👒👒 Guest mode ' . ( LITESPEED_GUEST ? 'predefined' : 'turned off' ) );
|
141 |
+
return;
|
142 |
+
}
|
143 |
+
|
144 |
if ( ! $this->conf( Base::O_GUEST ) ) {
|
145 |
return;
|
146 |
}
|
164 |
}
|
165 |
|
166 |
// If is the request to update vary, then no guest
|
167 |
+
// Don't need anymore as it is always ajax call
|
168 |
+
// Still keep it in case some WP blocked the lightweigh guest vary update script, WP can still update the vary
|
169 |
if ( ! empty( $_GET[ 'litespeed_guest' ] ) ) {
|
170 |
return;
|
171 |
}
|
183 |
* Update Guest vary
|
184 |
*
|
185 |
* @since 4.0
|
186 |
+
* @deprecated 4.1 Use independent lightweight guest.vary.php as a replacement
|
187 |
*/
|
188 |
public function update_guest_vary() {
|
189 |
+
// This process must not be cached
|
190 |
+
! defined( 'LSCACHE_NO_CACHE' ) && define( 'LSCACHE_NO_CACHE', true );
|
191 |
+
|
192 |
+
$_guest = new Lib\Guest();
|
193 |
+
if ( $_guest->always_guest() || self::has_vary() ) { // If contains vary already, don't reload to avoid infinite loop when parent page having browser cache
|
194 |
+
! defined( 'LITESPEED_GUEST' ) && define( 'LITESPEED_GUEST', true ); // Reuse this const to bypass set vary in vary finalize
|
195 |
Debug2::debug( '[Vary] 🤠🤠 Guest' );
|
196 |
echo '[]';
|
197 |
exit;
|
198 |
}
|
199 |
|
200 |
+
Debug2::debug( "[Vary] Will update guest vary in finalize" );
|
|
|
|
|
|
|
|
|
|
|
|
|
201 |
|
202 |
// return json
|
203 |
echo json_encode( array( 'reload' => 'yes' ) );
|
204 |
exit;
|
205 |
}
|
206 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
/**
|
208 |
* Hooked to the comments_array filter.
|
209 |
*
|
449 |
* @access public
|
450 |
*/
|
451 |
public function finalize_default_vary( $uid = false ) {
|
452 |
+
// Must check this to bypass vary generation for guests
|
453 |
+
// Must check this to avoid Guest page's CSS/JS/CCSS/UCSS get non-guest vary filename
|
454 |
+
if ( defined( 'LITESPEED_GUEST' ) && LITESPEED_GUEST ) {
|
455 |
return false;
|
456 |
}
|
457 |
|
630 |
*/
|
631 |
public function finalize() {
|
632 |
// Finalize default vary
|
633 |
+
if ( ! defined( 'LITESPEED_GUEST' ) || ! LITESPEED_GUEST ) {
|
634 |
+
$this->_update_default_vary();
|
635 |
+
}
|
636 |
|
637 |
$tp_cookies = $this->_finalize_curr_vary_cookies();
|
638 |
|
thirdparty/amp.cls.php
CHANGED
@@ -28,6 +28,7 @@ class AMP
|
|
28 |
if ( ! function_exists( 'is_amp_endpoint' ) || is_admin() || ! isset( $_GET[ 'amp' ] ) ) return;
|
29 |
! defined( 'LITESPEED_NO_PAGEOPTM' ) && define( 'LITESPEED_NO_PAGEOPTM', true );
|
30 |
! defined( 'LITESPEED_NO_LAZY' ) && define( 'LITESPEED_NO_LAZY', true );
|
|
|
31 |
// add_filter( 'litespeed_can_optm', '__return_false' );
|
32 |
// do_action( 'litespeed_conf_force', API::O_OPTM_CSS_ASYNC, false );
|
33 |
// do_action( 'litespeed_conf_force', API::O_MEDIA_LAZY, false );
|
28 |
if ( ! function_exists( 'is_amp_endpoint' ) || is_admin() || ! isset( $_GET[ 'amp' ] ) ) return;
|
29 |
! defined( 'LITESPEED_NO_PAGEOPTM' ) && define( 'LITESPEED_NO_PAGEOPTM', true );
|
30 |
! defined( 'LITESPEED_NO_LAZY' ) && define( 'LITESPEED_NO_LAZY', true );
|
31 |
+
! defined( 'LITESPEED_GUEST' ) && define( 'LITESPEED_GUEST', false );
|
32 |
// add_filter( 'litespeed_can_optm', '__return_false' );
|
33 |
// do_action( 'litespeed_conf_force', API::O_OPTM_CSS_ASYNC, false );
|
34 |
// do_action( 'litespeed_conf_force', API::O_MEDIA_LAZY, false );
|
thirdparty/woocommerce.cls.php
CHANGED
@@ -20,6 +20,7 @@ class WooCommerce extends Base {
|
|
20 |
|
21 |
const CACHETAG_SHOP = 'WC_S' ;
|
22 |
const CACHETAG_TERM = 'WC_T.' ;
|
|
|
23 |
const O_UPDATE_INTERVAL = 'wc_update_interval' ;
|
24 |
const O_SHOP_FRONT_TTL = 'wc_shop_use_front_ttl' ;
|
25 |
const O_WOO_CACHE_CART = 'woo_cache_cart' ;
|
@@ -94,8 +95,10 @@ class WooCommerce extends Base {
|
|
94 |
* Call when template_include to make sure woo cart is initialized
|
95 |
* @since 1.7.2
|
96 |
*/
|
97 |
-
|
98 |
-
|
|
|
|
|
99 |
|
100 |
}
|
101 |
|
@@ -497,10 +500,10 @@ class WooCommerce extends Base {
|
|
497 |
if ( function_exists( 'is_product_taxonomy' ) && ! is_product_taxonomy() ) {
|
498 |
return ;
|
499 |
}
|
500 |
-
if ( isset($GLOBALS['product_cat']) ) {
|
501 |
$term = get_term_by('slug', $GLOBALS['product_cat'], 'product_cat') ;
|
502 |
}
|
503 |
-
elseif ( isset($GLOBALS['product_tag']) ) {
|
504 |
$term = get_term_by('slug', $GLOBALS['product_tag'], 'product_tag') ;
|
505 |
}
|
506 |
else {
|
@@ -767,6 +770,7 @@ class WooCommerce extends Base {
|
|
767 |
// Append option save value filter
|
768 |
do_action( 'litespeed_conf_multi_switch', self::O_UPDATE_INTERVAL, 3 ); // This need to be before conf_append
|
769 |
|
|
|
770 |
do_action( 'litespeed_conf_append', self::O_UPDATE_INTERVAL, false );
|
771 |
do_action( 'litespeed_conf_append', self::O_SHOP_FRONT_TTL, true );
|
772 |
do_action( 'litespeed_conf_append', self::O_WOO_CACHE_CART, true );
|
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' ;
|
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 |
|
500 |
if ( function_exists( 'is_product_taxonomy' ) && ! is_product_taxonomy() ) {
|
501 |
return ;
|
502 |
}
|
503 |
+
if ( isset($GLOBALS['product_cat']) && is_string( $GLOBALS['product_cat'] ) ) { // todo: need to check previous woo version to find if its from old woo versions or not!
|
504 |
$term = get_term_by('slug', $GLOBALS['product_cat'], 'product_cat') ;
|
505 |
}
|
506 |
+
elseif ( isset($GLOBALS['product_tag']) && is_string( $GLOBALS['product_tag'] ) ) {
|
507 |
$term = get_term_by('slug', $GLOBALS['product_tag'], 'product_tag') ;
|
508 |
}
|
509 |
else {
|
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 );
|
thirdparty/woocommerce.content.tpl.php
CHANGED
@@ -6,6 +6,8 @@ defined( 'WPINC' ) || exit;
|
|
6 |
use \LiteSpeed\API;
|
7 |
use \LiteSpeed\Doc;
|
8 |
use \LiteSpeed\Admin_Display;
|
|
|
|
|
9 |
?>
|
10 |
|
11 |
<div data-litespeed-layout='woocommerce'>
|
@@ -23,6 +25,18 @@ use \LiteSpeed\Admin_Display;
|
|
23 |
</div>
|
24 |
|
25 |
<table class="wp-list-table striped litespeed-table"><tbody>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
<tr>
|
27 |
<th>
|
28 |
<?php $id = self::O_UPDATE_INTERVAL; ?>
|
6 |
use \LiteSpeed\API;
|
7 |
use \LiteSpeed\Doc;
|
8 |
use \LiteSpeed\Admin_Display;
|
9 |
+
use \LiteSpeed\Lang;
|
10 |
+
use \LiteSpeed\Base;
|
11 |
?>
|
12 |
|
13 |
<div data-litespeed-layout='woocommerce'>
|
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; ?>
|
tpl/cache/settings_inc.object.tpl.php
CHANGED
@@ -38,7 +38,7 @@ else {
|
|
38 |
<td>
|
39 |
<?php $this->build_switch( $id ) ; ?>
|
40 |
<div class="litespeed-desc">
|
41 |
-
<?php echo __( 'Use object cache functionality.', 'litespeed-cache' ) ; ?>
|
42 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/admin/#memcached-lsmcd-and-redis-object-cache-support-in-lscwp' ); ?>
|
43 |
</div>
|
44 |
<div class="litespeed-block">
|
38 |
<td>
|
39 |
<?php $this->build_switch( $id ) ; ?>
|
40 |
<div class="litespeed-desc">
|
41 |
+
<?php echo __( 'Use external object cache functionality.', 'litespeed-cache' ) ; ?>
|
42 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/admin/#memcached-lsmcd-and-redis-object-cache-support-in-lscwp' ); ?>
|
43 |
</div>
|
44 |
<div class="litespeed-block">
|
tpl/cdn/settings.tpl.php
CHANGED
@@ -33,6 +33,7 @@ $this->form_action();
|
|
33 |
<?php $this->build_switch( $id ); ?>
|
34 |
<div class="litespeed-desc">
|
35 |
<?php echo sprintf( __( 'Enable %s CDN API functionality.', 'litespeed-cache' ), 'QUIC.cloud' ); ?>
|
|
|
36 |
</div>
|
37 |
</td>
|
38 |
</tr>
|
@@ -45,7 +46,12 @@ $this->form_action();
|
|
45 |
<td>
|
46 |
<?php $this->build_switch( $id ); ?>
|
47 |
<div class="litespeed-desc">
|
48 |
-
<?php echo sprintf( __( 'Turn this setting %1$s if you are using a Content Delivery Network (CDN)
|
|
|
|
|
|
|
|
|
|
|
49 |
</div>
|
50 |
</td>
|
51 |
</tr>
|
@@ -189,23 +195,23 @@ $this->form_action();
|
|
189 |
</div>
|
190 |
<div class="litespeed-block">
|
191 |
<div class='litespeed-col'>
|
192 |
-
|
193 |
|
194 |
-
<?php $this->build_input( Base::
|
195 |
<div class="litespeed-desc">
|
196 |
-
<?php echo sprintf( __( 'Your
|
197 |
-
<?php echo sprintf( __( '
|
|
|
198 |
</div>
|
199 |
</div>
|
200 |
|
201 |
<div class='litespeed-col'>
|
202 |
-
|
203 |
|
204 |
-
<?php $this->build_input( Base::
|
205 |
<div class="litespeed-desc">
|
206 |
-
<?php echo sprintf( __( 'Your
|
207 |
-
<?php echo sprintf( __( '
|
208 |
-
<?php echo sprintf( __( 'Recommend to generate the token from Cloudflare API token template "WordPress ".', 'litespeed-cache' ) ); ?>
|
209 |
</div>
|
210 |
</div>
|
211 |
|
33 |
<?php $this->build_switch( $id ); ?>
|
34 |
<div class="litespeed-desc">
|
35 |
<?php echo sprintf( __( 'Enable %s CDN API functionality.', 'litespeed-cache' ), 'QUIC.cloud' ); ?>
|
36 |
+
<?php Doc::learn_more( 'https://quic.cloud/docs/cdn/getting-started/verify-quic-cloud-cdn-is-working/#check-lscache-wordpress-plugin' ); ?>
|
37 |
</div>
|
38 |
</td>
|
39 |
</tr>
|
46 |
<td>
|
47 |
<?php $this->build_switch( $id ); ?>
|
48 |
<div class="litespeed-desc">
|
49 |
+
<?php echo sprintf( __( 'Turn this setting %1$s if you are using a traditional Content Delivery Network (CDN) or a subdomain for static content with QUIC.cloud CDN.', 'litespeed-cache' ), '<code>' . __( 'ON', 'litespeed-cache' ) . '</code>' ); ?>
|
50 |
+
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/cdn/#use-cdn-mapping' ); ?>
|
51 |
+
</div>
|
52 |
+
|
53 |
+
<div class="litespeed-desc">
|
54 |
+
<?php echo sprintf( __( 'NOTE: QUIC.cloud CDN and Cloudflare do not use CDN Mapping. If you are are only using QUIC.cloud or Cloudflare, leave this setting %2$s.', 'litespeed-cache' ), '<code>' . __( 'OFF', 'litespeed-cache' ) . '</code>' ); ?>
|
55 |
</div>
|
56 |
</td>
|
57 |
</tr>
|
195 |
</div>
|
196 |
<div class="litespeed-block">
|
197 |
<div class='litespeed-col'>
|
198 |
+
<label class="litespeed-form-label"><?php echo __( 'Global API Key / API Token', 'litespeed-cache' ); ?></label>
|
199 |
|
200 |
+
<?php $this->build_input( Base::O_CDN_CLOUDFLARE_KEY ); ?>
|
201 |
<div class="litespeed-desc">
|
202 |
+
<?php echo sprintf( __( 'Your API key / token is used to access %s APIs.', 'litespeed-cache' ), 'Cloudflare' ); ?>
|
203 |
+
<?php echo sprintf( __( 'Get it from <a %1$s>%2$s</a>.', 'litespeed-cache' ), 'href="https://dash.cloudflare.com/profile/api-tokens" target="_blank"', 'Cloudflare' ); ?>
|
204 |
+
<?php echo sprintf( __( 'Recommended to generate the token from Cloudflare API token template "WordPress".', 'litespeed-cache' ) ); ?>
|
205 |
</div>
|
206 |
</div>
|
207 |
|
208 |
<div class='litespeed-col'>
|
209 |
+
<label class="litespeed-form-label"><?php echo __( 'Email Address', 'litespeed-cache' ); ?></label>
|
210 |
|
211 |
+
<?php $this->build_input( Base::O_CDN_CLOUDFLARE_EMAIL ); ?>
|
212 |
<div class="litespeed-desc">
|
213 |
+
<?php echo sprintf( __( 'Your Email address on %s.', 'litespeed-cache' ), 'Cloudflare' ); ?>
|
214 |
+
<?php echo sprintf( __( 'Optional when API token used.', 'litespeed-cache' ) ); ?>
|
|
|
215 |
</div>
|
216 |
</div>
|
217 |
|
tpl/crawler/settings-simulation.tpl.php
CHANGED
@@ -46,7 +46,7 @@ $this->form_action();
|
|
46 |
</script>
|
47 |
|
48 |
<div class="litespeed-desc">
|
49 |
-
<?php echo __('To crawl for a particular cookie, enter the cookie name, and the values you wish to crawl for. Values should be one per line
|
50 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/crawler/#cookie-simulation' ); ?>
|
51 |
<p><?php echo sprintf( __( 'Use %1$s in %2$s to indicate this cookie has not been set.', 'litespeed-cache' ), '<code>_null</code>', __( 'Cookie Values', 'litespeed-cache' ) ); ?></p>
|
52 |
</div>
|
46 |
</script>
|
47 |
|
48 |
<div class="litespeed-desc">
|
49 |
+
<?php echo __('To crawl for a particular cookie, enter the cookie name, and the values you wish to crawl for. Values should be one per line. There will be one crawler created per cookie value, per simulated role.', 'litespeed-cache'); ?>
|
50 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/crawler/#cookie-simulation' ); ?>
|
51 |
<p><?php echo sprintf( __( 'Use %1$s in %2$s to indicate this cookie has not been set.', 'litespeed-cache' ), '<code>_null</code>', __( 'Cookie Values', 'litespeed-cache' ) ); ?></p>
|
52 |
</div>
|
tpl/crawler/summary.tpl.php
CHANGED
@@ -175,8 +175,8 @@ if($seconds > 0):
|
|
175 |
|
176 |
<p>
|
177 |
<i class="litespeed-badge litespeed-bg-default"></i> = <?php echo __( 'Waiting to be Crawled', 'litespeed-cache' ); ?><br>
|
178 |
-
<i class="litespeed-badge litespeed-bg-success"></i> = <?php echo __( '
|
179 |
-
<i class="litespeed-badge litespeed-bg-primary"></i> = <?php echo __( '
|
180 |
<i class="litespeed-badge litespeed-bg-danger"></i> = <?php echo __( 'Blacklisted', 'litespeed-cache' ); ?><br>
|
181 |
</p>
|
182 |
|
175 |
|
176 |
<p>
|
177 |
<i class="litespeed-badge litespeed-bg-default"></i> = <?php echo __( 'Waiting to be Crawled', 'litespeed-cache' ); ?><br>
|
178 |
+
<i class="litespeed-badge litespeed-bg-success"></i> = <?php echo __( 'Already Cached', 'litespeed-cache' ); ?><br>
|
179 |
+
<i class="litespeed-badge litespeed-bg-primary"></i> = <?php echo __( 'Successfully Crawled', 'litespeed-cache' ); ?><br>
|
180 |
<i class="litespeed-badge litespeed-bg-danger"></i> = <?php echo __( 'Blacklisted', 'litespeed-cache' ); ?><br>
|
181 |
</p>
|
182 |
|
tpl/dash/dashboard.tpl.php
CHANGED
@@ -29,6 +29,9 @@ $cloud_summary = Cloud::get_summary();
|
|
29 |
$css_summary = CSS::get_summary();
|
30 |
$placeholder_summary = Placeholder::get_summary();
|
31 |
|
|
|
|
|
|
|
32 |
?>
|
33 |
|
34 |
<div class="litespeed-dashboard">
|
@@ -412,8 +415,9 @@ $placeholder_summary = Placeholder::get_summary();
|
|
412 |
<?php endif; ?>
|
413 |
|
414 |
<p>
|
415 |
-
<?php echo __( 'Requests in queue', 'litespeed-cache' ); ?>: <code><?php echo
|
416 |
-
<a href="<?php echo
|
|
|
417 |
<?php echo __( 'Force cron', 'litespeed-cache' ); ?>
|
418 |
</a>
|
419 |
</p>
|
@@ -443,8 +447,9 @@ $placeholder_summary = Placeholder::get_summary();
|
|
443 |
<?php endif; ?>
|
444 |
|
445 |
<p>
|
446 |
-
<?php echo __( 'Requests in queue', 'litespeed-cache' ); ?>: <code><?php echo
|
447 |
-
<a href="<?php echo
|
|
|
448 |
<?php echo __( 'Force cron', 'litespeed-cache' ); ?>
|
449 |
</a>
|
450 |
</p>
|
@@ -474,8 +479,8 @@ $placeholder_summary = Placeholder::get_summary();
|
|
474 |
<?php endif; ?>
|
475 |
|
476 |
<p>
|
477 |
-
<?php echo __( 'Requests in queue', 'litespeed-cache' ); ?>: <code><?php echo
|
478 |
-
<a href="<?php echo
|
479 |
<?php echo __( 'Force cron', 'litespeed-cache' ); ?>
|
480 |
</a>
|
481 |
</p>
|
29 |
$css_summary = CSS::get_summary();
|
30 |
$placeholder_summary = Placeholder::get_summary();
|
31 |
|
32 |
+
$ccss_count = count( CSS::cls()->load_queue( 'ccss' ) );
|
33 |
+
$ucss_count = count( CSS::cls()->load_queue( 'ucss' ) );
|
34 |
+
$placeholder_queue_count = count( Placeholder::cls()->load_queue() );
|
35 |
?>
|
36 |
|
37 |
<div class="litespeed-dashboard">
|
415 |
<?php endif; ?>
|
416 |
|
417 |
<p>
|
418 |
+
<?php echo __( 'Requests in queue', 'litespeed-cache' ); ?>: <code><?php echo $ccss_count ?: '-'; ?></code>
|
419 |
+
<a href="<?php echo $ccss_count ? Utility::build_url( Router::ACTION_CSS, CSS::TYPE_GEN_CCSS ) : 'javascript:;'; ?>"
|
420 |
+
class="button button-secondary button-small <?php if ( ! $ccss_count ) echo 'disabled'; ?>">
|
421 |
<?php echo __( 'Force cron', 'litespeed-cache' ); ?>
|
422 |
</a>
|
423 |
</p>
|
447 |
<?php endif; ?>
|
448 |
|
449 |
<p>
|
450 |
+
<?php echo __( 'Requests in queue', 'litespeed-cache' ); ?>: <code><?php echo $ucss_count ?: '-' ?></code>
|
451 |
+
<a href="<?php echo $ucss_count ? Utility::build_url( Router::ACTION_CSS, CSS::TYPE_GEN_UCSS ) : 'javascript:;'; ?>"
|
452 |
+
class="button button-secondary button-small <?php if ( ! $ucss_count ) echo 'disabled'; ?>">
|
453 |
<?php echo __( 'Force cron', 'litespeed-cache' ); ?>
|
454 |
</a>
|
455 |
</p>
|
479 |
<?php endif; ?>
|
480 |
|
481 |
<p>
|
482 |
+
<?php echo __( 'Requests in queue', 'litespeed-cache' ); ?>: <code><?php echo $placeholder_queue_count ?: '-' ?></code>
|
483 |
+
<a href="<?php echo $placeholder_queue_count ? Utility::build_url( Router::ACTION_PLACEHOLDER, Placeholder::TYPE_GENERATE ) : 'javascript:;'; ?>" class="button button-secondary button-small <?php if ( ! $placeholder_queue_count ) echo 'disabled'; ?>">
|
484 |
<?php echo __( 'Force cron', 'litespeed-cache' ); ?>
|
485 |
</a>
|
486 |
</p>
|
tpl/general/entry.tpl.php
CHANGED
@@ -4,6 +4,7 @@ defined( 'WPINC' ) || exit;
|
|
4 |
|
5 |
$menu_list = array(
|
6 |
'settings' => __( 'General Settings', 'litespeed-cache' ),
|
|
|
7 |
);
|
8 |
|
9 |
if ( $this->_is_network_admin ) {
|
@@ -38,12 +39,16 @@ if ( $this->_is_network_admin ) {
|
|
38 |
|
39 |
<div class="litespeed-body">
|
40 |
<?php
|
|
|
|
|
41 |
// include all tpl for faster UE
|
42 |
foreach ($menu_list as $tab => $val) {
|
43 |
echo "<div data-litespeed-layout='$tab'>";
|
44 |
require LSCWP_DIR . "tpl/general/$tab.tpl.php";
|
45 |
echo "</div>";
|
46 |
}
|
|
|
|
|
47 |
?>
|
48 |
</div>
|
49 |
|
4 |
|
5 |
$menu_list = array(
|
6 |
'settings' => __( 'General Settings', 'litespeed-cache' ),
|
7 |
+
'settings_tuning' => __( 'Tuning', 'litespeed-cache' ),
|
8 |
);
|
9 |
|
10 |
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) {
|
46 |
echo "<div data-litespeed-layout='$tab'>";
|
47 |
require LSCWP_DIR . "tpl/general/$tab.tpl.php";
|
48 |
echo "</div>";
|
49 |
}
|
50 |
+
|
51 |
+
$this->form_end();
|
52 |
?>
|
53 |
</div>
|
54 |
|
tpl/general/settings.tpl.php
CHANGED
@@ -36,7 +36,6 @@ 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 |
-
$this->form_action();
|
40 |
?>
|
41 |
|
42 |
<h3 class="litespeed-title-short">
|
@@ -148,7 +147,7 @@ $this->form_action();
|
|
148 |
<td>
|
149 |
<?php $this->build_switch( $id ); ?>
|
150 |
<div class="litespeed-desc">
|
151 |
-
<?php echo __( 'This option enables maximum optimization for Guest Mode
|
152 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/general/#guest-optimization' ); ?>
|
153 |
<?php if ( ! $this->conf( Base::O_GUEST ) ) : ?>
|
154 |
<br /><font class="litespeed-warning litespeed-left10">
|
@@ -167,6 +166,12 @@ $this->form_action();
|
|
167 |
⚠️ <?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>' ); ?>
|
168 |
</font>
|
169 |
<?php endif; ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
170 |
</div>
|
171 |
</td>
|
172 |
</tr>
|
@@ -203,7 +208,3 @@ $this->form_action();
|
|
203 |
</tr>
|
204 |
|
205 |
</tbody></table>
|
206 |
-
|
207 |
-
<?php
|
208 |
-
$this->form_end();
|
209 |
-
|
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">
|
147 |
<td>
|
148 |
<?php $this->build_switch( $id ); ?>
|
149 |
<div class="litespeed-desc">
|
150 |
+
<?php echo __( 'This option enables maximum optimization for Guest Mode visitors.', 'litespeed-cache' ); ?>
|
151 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/general/#guest-optimization' ); ?>
|
152 |
<?php if ( ! $this->conf( Base::O_GUEST ) ) : ?>
|
153 |
<br /><font class="litespeed-warning litespeed-left10">
|
166 |
⚠️ <?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>' ); ?>
|
167 |
</font>
|
168 |
<?php endif; ?>
|
169 |
+
|
170 |
+
<?php if ( ! $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) : ?>
|
171 |
+
<br /><font class="litespeed-danger litespeed-left10">
|
172 |
+
⚠️ <?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>' ); ?>
|
173 |
+
</font>
|
174 |
+
<?php endif; ?>
|
175 |
</div>
|
176 |
</td>
|
177 |
</tr>
|
208 |
</tr>
|
209 |
|
210 |
</tbody></table>
|
|
|
|
|
|
|
|
tpl/general/settings_inc.guest.tpl.php
CHANGED
@@ -10,9 +10,26 @@ defined( 'WPINC' ) || exit;
|
|
10 |
<td>
|
11 |
<?php $this->build_switch( $id ); ?>
|
12 |
<div class="litespeed-desc">
|
13 |
-
<?php echo __( 'Guest Mode provides an always cacheable landing page
|
14 |
-
<?php echo __( 'This option can help to correct the cache vary for certain advanced mobile or tablet
|
|
|
15 |
<br /><?php Doc::notice_htaccess(); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
</div>
|
17 |
</td>
|
18 |
</tr>
|
10 |
<td>
|
11 |
<?php $this->build_switch( $id ); ?>
|
12 |
<div class="litespeed-desc">
|
13 |
+
<?php echo __( 'Guest Mode provides an always cacheable landing page for an automated guest\'s first time visit, and then attempts to update cache varies via AJAX.', 'litespeed-cache' ); ?>
|
14 |
+
<?php echo __( 'This option can help to correct the cache vary for certain advanced mobile or tablet visitors.', 'litespeed-cache' ); ?>
|
15 |
+
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/general/#guest-mode' ); ?>
|
16 |
<br /><?php Doc::notice_htaccess(); ?>
|
17 |
+
<?php
|
18 |
+
$typeList = array();
|
19 |
+
if ( $this->conf( Base::O_GUEST ) && ! $this->conf( Base::O_OPTM_UCSS ) ) {
|
20 |
+
$typeList[] = 'UCSS';
|
21 |
+
}
|
22 |
+
if ( $this->conf( Base::O_GUEST ) && ! $this->conf( Base::O_OPTM_CSS_ASYNC ) ) {
|
23 |
+
$typeList[] = 'CCSS';
|
24 |
+
}
|
25 |
+
if ( ! empty( $typeList ) ) {
|
26 |
+
$theType = implode( '/', $typeList );
|
27 |
+
echo '<br />';
|
28 |
+
echo '<font class="litespeed-info">';
|
29 |
+
echo '⚠️ ' . sprintf( __( 'Your %1s quota on %2s will still be in use.', 'litespeed-cache' ), $theType, 'QUIC.cloud' );
|
30 |
+
echo '</font>';
|
31 |
+
}
|
32 |
+
?>
|
33 |
</div>
|
34 |
</td>
|
35 |
</tr>
|
tpl/general/settings_tuning.tpl.php
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace LiteSpeed;
|
3 |
+
defined( 'WPINC' ) || exit;
|
4 |
+
|
5 |
+
?>
|
6 |
+
<h3 class="litespeed-title-short">
|
7 |
+
<?php echo __( 'Tuning Settings', 'litespeed-cache' ); ?>
|
8 |
+
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/general/#tuning-tab' ); ?>
|
9 |
+
</h3>
|
10 |
+
|
11 |
+
<table class="wp-list-table striped litespeed-table"><tbody>
|
12 |
+
<tr>
|
13 |
+
<th>
|
14 |
+
<?php $id = Base::O_GUEST_UAS; ?>
|
15 |
+
<?php $this->title( $id ); ?>
|
16 |
+
</th>
|
17 |
+
<td>
|
18 |
+
<?php $this->build_textarea( $id, 30 ); ?>
|
19 |
+
<div class="litespeed-desc">
|
20 |
+
<?php echo __( 'Listed User Agents will be considered as Guest Mode visitors.', 'litespeed-cache' ); ?>
|
21 |
+
<?php Doc::one_per_line(); ?>
|
22 |
+
</div>
|
23 |
+
</td>
|
24 |
+
</tr>
|
25 |
+
|
26 |
+
<tr>
|
27 |
+
<th>
|
28 |
+
<?php $id = Base::O_GUEST_IPS; ?>
|
29 |
+
<?php $this->title( $id ); ?>
|
30 |
+
</th>
|
31 |
+
<td>
|
32 |
+
<?php $this->build_textarea( $id, 50 ); ?>
|
33 |
+
<div class="litespeed-desc">
|
34 |
+
<?php echo __( 'Listed IPs will be considered as Guest Mode visitors.', 'litespeed-cache' ); ?>
|
35 |
+
<?php Doc::one_per_line(); ?>
|
36 |
+
</div>
|
37 |
+
</td>
|
38 |
+
</tr>
|
39 |
+
</tbody></table>
|
tpl/page_optm/settings_css.tpl.php
CHANGED
@@ -7,6 +7,9 @@ defined( 'WPINC' ) || exit;
|
|
7 |
|
8 |
$css_summary = CSS::get_summary();
|
9 |
$closest_server = Cloud::get_summary( 'server.' . Cloud::SVC_CCSS );
|
|
|
|
|
|
|
10 |
?>
|
11 |
|
12 |
<h3 class="litespeed-title-short">
|
@@ -60,31 +63,34 @@ $closest_server = Cloud::get_summary( 'server.' . Cloud::SVC_CCSS );
|
|
60 |
|
61 |
<?php echo __( 'Use QUIC.cloud online service to generate unique CSS.', 'litespeed-cache' ); ?>
|
62 |
<?php echo __( 'This will drop the unused CSS on each page from the combined file.', 'litespeed-cache' ); ?>
|
|
|
|
|
63 |
</div>
|
64 |
|
65 |
-
<?php if ( $css_summary ) : ?>
|
66 |
<div class="litespeed-desc litespeed-left20">
|
67 |
-
<?php if (
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
|
|
|
|
74 |
<?php endif; ?>
|
75 |
|
76 |
<?php if ( $closest_server ) : ?>
|
77 |
<a href="<?php echo Utility::build_url( Router::ACTION_CLOUD, Cloud::TYPE_REDETECT_CLOUD, false, null, array( 'svc' => Cloud::SVC_CCSS ) ); ?>" data-balloon-pos="up" data-balloon-break aria-label='<?php echo sprintf( __( 'Current closest Cloud server is %s. Click to redetect.', 'litespeed-cache' ), $closest_server ); ?>' data-litespeed-cfm="<?php echo __( 'Are you sure you want to redetect the closest cloud server for this service?', 'litespeed-cache' ) ; ?>"><i class='litespeed-quic-icon'></i></a>
|
78 |
<?php endif; ?>
|
79 |
|
80 |
-
<?php if ( ! empty( $
|
81 |
<div class="litespeed-callout notice notice-warning inline">
|
82 |
<h4>
|
83 |
-
<?php echo __( 'URL list in queue waiting for cron','litespeed-cache' ); ?> ( <?php echo count( $
|
84 |
<a href="<?php echo Utility::build_url( Router::ACTION_CSS, CSS::TYPE_CLEAR_Q_UCSS ); ?>" class="button litespeed-btn-warning litespeed-right">Clear</a>
|
85 |
</h4>
|
86 |
<p>
|
87 |
-
<?php $i=0; foreach ( $
|
88 |
<?php if ( $i++ > 20 ) : ?>
|
89 |
<?php echo '...'; ?>
|
90 |
<?php break; ?>
|
@@ -93,16 +99,16 @@ $closest_server = Cloud::get_summary( 'server.' . Cloud::SVC_CCSS );
|
|
93 |
<?php echo $v[ 'url' ]; ?>
|
94 |
<?php if ( $pos = strpos( $k, ' ' ) ) echo ' (' . __( 'Vary Group', 'litespeed-cache' ) . ':' . substr( $k, 0, $pos ) . ')'; ?>
|
95 |
<?php if ( $v[ 'is_mobile' ] ) echo ' <span data-balloon-pos="up" aria-label="mobile">📱</span>'; ?>
|
|
|
96 |
<br />
|
97 |
<?php endforeach; ?>
|
98 |
</p>
|
99 |
</div>
|
100 |
<a href="<?php echo Utility::build_url( Router::ACTION_CSS, CSS::TYPE_GEN_UCSS ); ?>" class="button litespeed-btn-success">
|
101 |
-
<?php echo __( 'Run Queue Manually', 'litespeed-cache' ); ?>
|
102 |
</a>
|
103 |
<?php endif; ?>
|
104 |
</div>
|
105 |
-
<?php endif; ?>
|
106 |
|
107 |
</td>
|
108 |
</tr>
|
@@ -149,40 +155,41 @@ $closest_server = Cloud::get_summary( 'server.' . Cloud::SVC_CCSS );
|
|
149 |
<?php endif; ?>
|
150 |
<?php echo __( 'Optimize CSS delivery.', 'litespeed-cache' ); ?>
|
151 |
<?php echo __( 'This can improve your speed score in services like Pingdom, GTmetrix and PageSpeed.', 'litespeed-cache' ); ?><br />
|
|
|
|
|
|
|
152 |
<?php echo sprintf( __( 'When this option is turned %s, it will also load Google Fonts asynchronously.', 'litespeed-cache' ), '<code>' . __( 'ON', 'litespeed-cache' ) . '</code>' ); ?>
|
153 |
-
<br /><?php echo sprintf( __( 'Enabling this option will automatically enable Critical CSS generation (%s service).', 'litespeed-cache' ), '<code>QUIC.cloud</code>' ); ?><br />
|
154 |
-
<?php echo __( 'Automatic generation of critical CSS is in the background via a cron-based queue.', 'litespeed-cache' ); ?>
|
155 |
-
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#generate-critical-css-in-the-background' ); ?>
|
156 |
<br /><font class="litespeed-success">
|
157 |
<?php echo __( 'API', 'litespeed-cache' ); ?>:
|
158 |
-
<?php echo sprintf( __( 'Elements with attribute %s in
|
159 |
</font>
|
160 |
|
161 |
</div>
|
162 |
|
163 |
-
<?php if ( $css_summary ) : ?>
|
164 |
<div class="litespeed-desc litespeed-left20">
|
165 |
-
<?php if (
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
|
|
|
|
172 |
<?php endif; ?>
|
173 |
|
174 |
<?php if ( $closest_server ) : ?>
|
175 |
<a href="<?php echo Utility::build_url( Router::ACTION_CLOUD, Cloud::TYPE_REDETECT_CLOUD, false, null, array( 'svc' => Cloud::SVC_CCSS ) ); ?>" data-balloon-pos="up" data-balloon-break aria-label='<?php echo sprintf( __( 'Current closest Cloud server is %s. Click to redetect.', 'litespeed-cache' ), $closest_server ); ?>' data-litespeed-cfm="<?php echo __( 'Are you sure you want to redetect the closest cloud server for this service?', 'litespeed-cache' ) ; ?>"><i class='litespeed-quic-icon'></i></a>
|
176 |
<?php endif; ?>
|
177 |
|
178 |
-
<?php if ( ! empty( $
|
179 |
<div class="litespeed-callout notice notice-warning inline">
|
180 |
<h4>
|
181 |
-
<?php echo __( 'URL list in queue waiting for cron','litespeed-cache' ); ?> ( <?php echo count( $
|
182 |
<a href="<?php echo Utility::build_url( Router::ACTION_CSS, CSS::TYPE_CLEAR_Q_CCSS ); ?>" class="button litespeed-btn-warning litespeed-right">Clear</a>
|
183 |
</h4>
|
184 |
<p>
|
185 |
-
<?php $i=0; foreach ( $
|
186 |
<?php if ( $i++ > 20 ) : ?>
|
187 |
<?php echo '...'; ?>
|
188 |
<?php break; ?>
|
@@ -191,16 +198,16 @@ $closest_server = Cloud::get_summary( 'server.' . Cloud::SVC_CCSS );
|
|
191 |
<?php echo $v[ 'url' ]; ?>
|
192 |
<?php if ( $pos = strpos( $k, ' ' ) ) echo ' (' . __( 'Vary Group', 'litespeed-cache' ) . ':' . substr( $k, 0, $pos ) . ')'; ?>
|
193 |
<?php if ( $v[ 'is_mobile' ] ) echo ' <span data-balloon-pos="up" aria-label="mobile">📱</span>'; ?>
|
|
|
194 |
<br />
|
195 |
<?php endforeach; ?>
|
196 |
</p>
|
197 |
</div>
|
198 |
<a href="<?php echo Utility::build_url( Router::ACTION_CSS, CSS::TYPE_GEN_CCSS ); ?>" class="button litespeed-btn-success">
|
199 |
-
<?php echo __( 'Run Queue Manually', 'litespeed-cache' ); ?>
|
200 |
</a>
|
201 |
<?php endif; ?>
|
202 |
</div>
|
203 |
-
<?php endif; ?>
|
204 |
</td>
|
205 |
</tr>
|
206 |
|
7 |
|
8 |
$css_summary = CSS::get_summary();
|
9 |
$closest_server = Cloud::get_summary( 'server.' . Cloud::SVC_CCSS );
|
10 |
+
|
11 |
+
$ccss_queue = CSS::cls()->load_queue( 'ccss' );
|
12 |
+
$ucss_queue = CSS::cls()->load_queue( 'ucss' );
|
13 |
?>
|
14 |
|
15 |
<h3 class="litespeed-title-short">
|
63 |
|
64 |
<?php echo __( 'Use QUIC.cloud online service to generate unique CSS.', 'litespeed-cache' ); ?>
|
65 |
<?php echo __( 'This will drop the unused CSS on each page from the combined file.', 'litespeed-cache' ); ?>
|
66 |
+
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#generate-ucss' ); ?><br />
|
67 |
+
<?php echo __( 'Automatic generation of unused CSS is in the background via a cron-based queue.', 'litespeed-cache' ); ?>
|
68 |
</div>
|
69 |
|
|
|
70 |
<div class="litespeed-desc litespeed-left20">
|
71 |
+
<?php if ( $css_summary ) : ?>
|
72 |
+
<?php if ( ! empty( $css_summary[ 'last_request_ucss' ] ) ) : ?>
|
73 |
+
<p>
|
74 |
+
<?php echo __( 'Last generated', 'litespeed-cache' ) . ': <code>' . Utility::readable_time( $css_summary[ 'last_request_ucss' ] ) . '</code>'; ?>
|
75 |
+
</p>
|
76 |
+
<p>
|
77 |
+
<?php echo __( 'Last requested cost', 'litespeed-cache' ) . ': <code>' . $css_summary[ 'last_spent_ucss' ] . 's</code>'; ?>
|
78 |
+
</p>
|
79 |
+
<?php endif; ?>
|
80 |
<?php endif; ?>
|
81 |
|
82 |
<?php if ( $closest_server ) : ?>
|
83 |
<a href="<?php echo Utility::build_url( Router::ACTION_CLOUD, Cloud::TYPE_REDETECT_CLOUD, false, null, array( 'svc' => Cloud::SVC_CCSS ) ); ?>" data-balloon-pos="up" data-balloon-break aria-label='<?php echo sprintf( __( 'Current closest Cloud server is %s. Click to redetect.', 'litespeed-cache' ), $closest_server ); ?>' data-litespeed-cfm="<?php echo __( 'Are you sure you want to redetect the closest cloud server for this service?', 'litespeed-cache' ) ; ?>"><i class='litespeed-quic-icon'></i></a>
|
84 |
<?php endif; ?>
|
85 |
|
86 |
+
<?php if ( ! empty( $ucss_queue ) ) : ?>
|
87 |
<div class="litespeed-callout notice notice-warning inline">
|
88 |
<h4>
|
89 |
+
<?php echo sprintf( __( 'URL list in %s queue waiting for cron', 'litespeed-cache' ), 'UCSS' ); ?> ( <?php echo count( $ucss_queue ); ?> )
|
90 |
<a href="<?php echo Utility::build_url( Router::ACTION_CSS, CSS::TYPE_CLEAR_Q_UCSS ); ?>" class="button litespeed-btn-warning litespeed-right">Clear</a>
|
91 |
</h4>
|
92 |
<p>
|
93 |
+
<?php $i=0; foreach ( $ucss_queue as $k => $v ) : ?>
|
94 |
<?php if ( $i++ > 20 ) : ?>
|
95 |
<?php echo '...'; ?>
|
96 |
<?php break; ?>
|
99 |
<?php echo $v[ 'url' ]; ?>
|
100 |
<?php if ( $pos = strpos( $k, ' ' ) ) echo ' (' . __( 'Vary Group', 'litespeed-cache' ) . ':' . substr( $k, 0, $pos ) . ')'; ?>
|
101 |
<?php if ( $v[ 'is_mobile' ] ) echo ' <span data-balloon-pos="up" aria-label="mobile">📱</span>'; ?>
|
102 |
+
<?php if ( ! empty( $v[ 'is_webp' ] ) ) echo ' WebP'; ?>
|
103 |
<br />
|
104 |
<?php endforeach; ?>
|
105 |
</p>
|
106 |
</div>
|
107 |
<a href="<?php echo Utility::build_url( Router::ACTION_CSS, CSS::TYPE_GEN_UCSS ); ?>" class="button litespeed-btn-success">
|
108 |
+
<?php echo sprintf( __( 'Run %s Queue Manually', 'litespeed-cache' ), 'UCSS' ); ?>
|
109 |
</a>
|
110 |
<?php endif; ?>
|
111 |
</div>
|
|
|
112 |
|
113 |
</td>
|
114 |
</tr>
|
155 |
<?php endif; ?>
|
156 |
<?php echo __( 'Optimize CSS delivery.', 'litespeed-cache' ); ?>
|
157 |
<?php echo __( 'This can improve your speed score in services like Pingdom, GTmetrix and PageSpeed.', 'litespeed-cache' ); ?><br />
|
158 |
+
<?php echo __( 'Use QUIC.cloud online service to generate critical CSS and load remaining CSS asynchronously.', 'litespeed-cache' ); ?>
|
159 |
+
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#load-css-asynchronously' ); ?><br />
|
160 |
+
<?php echo __( 'Automatic generation of critical CSS is in the background via a cron-based queue.', 'litespeed-cache' ); ?><br />
|
161 |
<?php echo sprintf( __( 'When this option is turned %s, it will also load Google Fonts asynchronously.', 'litespeed-cache' ), '<code>' . __( 'ON', 'litespeed-cache' ) . '</code>' ); ?>
|
|
|
|
|
|
|
162 |
<br /><font class="litespeed-success">
|
163 |
<?php echo __( 'API', 'litespeed-cache' ); ?>:
|
164 |
+
<?php echo sprintf( __( 'Elements with attribute %s in HTML code will be excluded.', 'litespeed-cache' ), '<code>data-no-async="1"</code>' ); ?>
|
165 |
</font>
|
166 |
|
167 |
</div>
|
168 |
|
|
|
169 |
<div class="litespeed-desc litespeed-left20">
|
170 |
+
<?php if ( $css_summary ) : ?>
|
171 |
+
<?php if ( ! empty( $css_summary[ 'last_request_ccss' ] ) ) : ?>
|
172 |
+
<p>
|
173 |
+
<?php echo __( 'Last generated', 'litespeed-cache' ) . ': <code>' . Utility::readable_time( $css_summary[ 'last_request_ccss' ] ) . '</code>'; ?>
|
174 |
+
</p>
|
175 |
+
<p>
|
176 |
+
<?php echo __( 'Last requested cost', 'litespeed-cache' ) . ': <code>' . $css_summary[ 'last_spent_ccss' ] . 's</code>'; ?>
|
177 |
+
</p>
|
178 |
+
<?php endif; ?>
|
179 |
<?php endif; ?>
|
180 |
|
181 |
<?php if ( $closest_server ) : ?>
|
182 |
<a href="<?php echo Utility::build_url( Router::ACTION_CLOUD, Cloud::TYPE_REDETECT_CLOUD, false, null, array( 'svc' => Cloud::SVC_CCSS ) ); ?>" data-balloon-pos="up" data-balloon-break aria-label='<?php echo sprintf( __( 'Current closest Cloud server is %s. Click to redetect.', 'litespeed-cache' ), $closest_server ); ?>' data-litespeed-cfm="<?php echo __( 'Are you sure you want to redetect the closest cloud server for this service?', 'litespeed-cache' ) ; ?>"><i class='litespeed-quic-icon'></i></a>
|
183 |
<?php endif; ?>
|
184 |
|
185 |
+
<?php if ( ! empty( $ccss_queue ) ) : ?>
|
186 |
<div class="litespeed-callout notice notice-warning inline">
|
187 |
<h4>
|
188 |
+
<?php echo sprintf( __( 'URL list in %s queue waiting for cron', 'litespeed-cache' ), 'CCSS' ); ?> ( <?php echo count( $ccss_queue ); ?> )
|
189 |
<a href="<?php echo Utility::build_url( Router::ACTION_CSS, CSS::TYPE_CLEAR_Q_CCSS ); ?>" class="button litespeed-btn-warning litespeed-right">Clear</a>
|
190 |
</h4>
|
191 |
<p>
|
192 |
+
<?php $i=0; foreach ( $ccss_queue as $k => $v ) : ?>
|
193 |
<?php if ( $i++ > 20 ) : ?>
|
194 |
<?php echo '...'; ?>
|
195 |
<?php break; ?>
|
198 |
<?php echo $v[ 'url' ]; ?>
|
199 |
<?php if ( $pos = strpos( $k, ' ' ) ) echo ' (' . __( 'Vary Group', 'litespeed-cache' ) . ':' . substr( $k, 0, $pos ) . ')'; ?>
|
200 |
<?php if ( $v[ 'is_mobile' ] ) echo ' <span data-balloon-pos="up" aria-label="mobile">📱</span>'; ?>
|
201 |
+
<?php if ( ! empty( $v[ 'is_webp' ] ) ) echo ' WebP'; ?>
|
202 |
<br />
|
203 |
<?php endforeach; ?>
|
204 |
</p>
|
205 |
</div>
|
206 |
<a href="<?php echo Utility::build_url( Router::ACTION_CSS, CSS::TYPE_GEN_CCSS ); ?>" class="button litespeed-btn-success">
|
207 |
+
<?php echo sprintf( __( 'Run %s Queue Manually', 'litespeed-cache' ), 'CCSS' ); ?>
|
208 |
</a>
|
209 |
<?php endif; ?>
|
210 |
</div>
|
|
|
211 |
</td>
|
212 |
</tr>
|
213 |
|
tpl/page_optm/settings_html.tpl.php
CHANGED
@@ -4,8 +4,8 @@ defined( 'WPINC' ) || exit;
|
|
4 |
?>
|
5 |
|
6 |
<h3 class="litespeed-title-short">
|
7 |
-
<?php echo __( '
|
8 |
-
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#
|
9 |
</h3>
|
10 |
|
11 |
<table class="wp-list-table striped litespeed-table"><tbody>
|
@@ -63,7 +63,7 @@ defined( 'WPINC' ) || exit;
|
|
63 |
<div class="litespeed-desc">
|
64 |
<?php echo __( 'Delay rendering off-screen HTML elements by its selector.', 'litespeed-cache' ); ?>
|
65 |
<?php Doc::one_per_line(); ?>
|
66 |
-
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#html-
|
67 |
</div>
|
68 |
</td>
|
69 |
</tr>
|
@@ -98,7 +98,7 @@ defined( 'WPINC' ) || exit;
|
|
98 |
<?php $this->build_switch( $id ); ?>
|
99 |
<div class="litespeed-desc">
|
100 |
<?php echo __( 'Use Web Font Loader library to load Google Fonts asynchronously while leaving other CSS intact.', 'litespeed-cache' ); ?>
|
101 |
-
<?php echo __( 'This will also add a preconnect to Google
|
102 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#load-google-fonts-asynchronously' ); ?>
|
103 |
</div>
|
104 |
</td>
|
4 |
?>
|
5 |
|
6 |
<h3 class="litespeed-title-short">
|
7 |
+
<?php echo __( 'HTML Settings', 'litespeed-cache' ); ?>
|
8 |
+
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#html-settings-tab' ); ?>
|
9 |
</h3>
|
10 |
|
11 |
<table class="wp-list-table striped litespeed-table"><tbody>
|
63 |
<div class="litespeed-desc">
|
64 |
<?php echo __( 'Delay rendering off-screen HTML elements by its selector.', 'litespeed-cache' ); ?>
|
65 |
<?php Doc::one_per_line(); ?>
|
66 |
+
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#html-lazyload-selectors' ); ?>
|
67 |
</div>
|
68 |
</td>
|
69 |
</tr>
|
98 |
<?php $this->build_switch( $id ); ?>
|
99 |
<div class="litespeed-desc">
|
100 |
<?php echo __( 'Use Web Font Loader library to load Google Fonts asynchronously while leaving other CSS intact.', 'litespeed-cache' ); ?>
|
101 |
+
<?php echo __( 'This will also add a preconnect to Google Fonts to establish a connection earlier.', 'litespeed-cache' ); ?>
|
102 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#load-google-fonts-asynchronously' ); ?>
|
103 |
</div>
|
104 |
</td>
|
tpl/page_optm/settings_js.tpl.php
CHANGED
@@ -75,8 +75,10 @@ defined( 'WPINC' ) || exit;
|
|
75 |
<td>
|
76 |
<?php $this->build_switch( $id, array( __( 'OFF', 'litespeed-cache' ), __( 'Deferred', 'litespeed-cache' ), __( 'Delayed', 'litespeed-cache' ) ) ); ?>
|
77 |
<div class="litespeed-desc">
|
78 |
-
<?php echo __( 'Doing so can help reduce resource contention and improve performance.', 'litespeed-cache' ); ?>
|
|
|
79 |
<?php echo __( 'This can improve your speed score in services like Pingdom, GTmetrix and PageSpeed.', 'litespeed-cache' ); ?>
|
|
|
80 |
<br /><font class="litespeed-danger">
|
81 |
🚨 <?php echo __( 'This option may result in JS error or layout issue on frontend pages on certain themes/plugins.', 'litespeed-cache' ); ?>
|
82 |
</font>
|
75 |
<td>
|
76 |
<?php $this->build_switch( $id, array( __( 'OFF', 'litespeed-cache' ), __( 'Deferred', 'litespeed-cache' ), __( 'Delayed', 'litespeed-cache' ) ) ); ?>
|
77 |
<div class="litespeed-desc">
|
78 |
+
<?php echo __( 'Doing so can help reduce resource contention and improve performance causing a lower FID (Core Web Vitals metric).', 'litespeed-cache' ); ?>
|
79 |
+
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#load-js-deferred' ); ?><br />
|
80 |
<?php echo __( 'This can improve your speed score in services like Pingdom, GTmetrix and PageSpeed.', 'litespeed-cache' ); ?>
|
81 |
+
<?php Doc::learn_more( 'https://web.dev/fid/#what-is-fid' ); ?>
|
82 |
<br /><font class="litespeed-danger">
|
83 |
🚨 <?php echo __( 'This option may result in JS error or layout issue on frontend pages on certain themes/plugins.', 'litespeed-cache' ); ?>
|
84 |
</font>
|
tpl/page_optm/settings_localization.tpl.php
CHANGED
@@ -83,49 +83,4 @@ $avatar_queue = Avatar::cls()->queue_count();
|
|
83 |
</td>
|
84 |
</tr>
|
85 |
|
86 |
-
<tr>
|
87 |
-
<th>
|
88 |
-
<?php $id = Base::O_OPTM_LOCALIZE; ?>
|
89 |
-
<?php $this->title( $id ); ?>
|
90 |
-
</th>
|
91 |
-
<td>
|
92 |
-
<?php $this->build_switch( $id ); ?>
|
93 |
-
<div class="litespeed-desc">
|
94 |
-
<?php echo __( 'Localize external resources.', 'litespeed-cache' ); ?>
|
95 |
-
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#localize' ); ?>
|
96 |
-
</div>
|
97 |
-
</td>
|
98 |
-
</tr>
|
99 |
-
|
100 |
-
<tr>
|
101 |
-
<th class="litespeed-padding-left">
|
102 |
-
<?php $id = Base::O_OPTM_LOCALIZE_DOMAINS; ?>
|
103 |
-
<?php $this->title( $id ); ?>
|
104 |
-
</th>
|
105 |
-
<td>
|
106 |
-
<div class="litespeed-textarea-recommended">
|
107 |
-
<div>
|
108 |
-
<?php $this->build_textarea( $id ); ?>
|
109 |
-
</div>
|
110 |
-
<div>
|
111 |
-
<?php $this->recommended( $id, true ); ?>
|
112 |
-
</div>
|
113 |
-
</div>
|
114 |
-
|
115 |
-
<div class="litespeed-desc">
|
116 |
-
<?php echo __( 'Resources listed here will be copied and replaced with local URLs.', 'litespeed-cache' ); ?>
|
117 |
-
<?php echo __( 'HTTPS sources only.', 'litespeed-cache' ); ?>
|
118 |
-
|
119 |
-
<?php Doc::one_per_line(); ?>
|
120 |
-
|
121 |
-
<br /><?php echo sprintf( __( 'Comments are supported. Start a line with a %s to turn it into a comment line.', 'litespeed-cache' ), '<code>#</code>' ); ?>
|
122 |
-
|
123 |
-
<br /><?php echo __( 'Non-`.js` file extensions will be ignored.', 'litespeed-cache' ); ?>
|
124 |
-
<?php echo __( 'Example', 'litespeed-cache' ); ?>: <code>https://www.example.com/one.js</code>
|
125 |
-
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#localization-files' ); ?>
|
126 |
-
|
127 |
-
</div>
|
128 |
-
</td>
|
129 |
-
</tr>
|
130 |
-
|
131 |
</tbody></table>
|
83 |
</td>
|
84 |
</tr>
|
85 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
</tbody></table>
|
tpl/page_optm/settings_media.tpl.php
CHANGED
@@ -6,6 +6,8 @@ $placeholder_summary = Placeholder::get_summary();
|
|
6 |
|
7 |
$closest_server = Cloud::get_summary( 'server.' . Cloud::SVC_LQIP );
|
8 |
|
|
|
|
|
9 |
?>
|
10 |
|
11 |
<h3 class="litespeed-title-short">
|
@@ -161,26 +163,35 @@ $closest_server = Cloud::get_summary( 'server.' . Cloud::SVC_LQIP );
|
|
161 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#generate-lqip-in-background' ); ?>
|
162 |
</div>
|
163 |
|
164 |
-
<?php if ( $placeholder_summary ) : ?>
|
165 |
<div class="litespeed-desc">
|
166 |
-
<?php if (
|
167 |
-
|
168 |
-
|
169 |
-
|
|
|
|
|
170 |
<?php endif; ?>
|
171 |
|
172 |
<?php if ( $closest_server ) : ?>
|
173 |
<a href="<?php echo Utility::build_url( Router::ACTION_CLOUD, Cloud::TYPE_REDETECT_CLOUD, false, null, array( 'svc' => Cloud::SVC_LQIP ) ); ?>" data-balloon-pos="up" data-balloon-break aria-label='<?php echo sprintf( __( 'Current closest Cloud server is %s. Click to redetect.', 'litespeed-cache' ), $closest_server ); ?>' data-litespeed-cfm="<?php echo __( 'Are you sure you want to redetect the closest cloud server for this service?', 'litespeed-cache' ) ; ?>"><i class='litespeed-quic-icon'></i></a>
|
174 |
<?php endif; ?>
|
175 |
|
176 |
-
<?php if ( ! empty( $
|
177 |
<div class="litespeed-callout notice notice-warning inline">
|
178 |
<h4>
|
179 |
<?php echo __( 'Size list in queue waiting for cron','litespeed-cache' ); ?>
|
180 |
<a href="<?php echo Utility::build_url( Router::ACTION_PLACEHOLDER, Placeholder::TYPE_CLEAR_Q ); ?>" class="button litespeed-btn-warning litespeed-right">Clear</a>
|
181 |
</h4>
|
182 |
<p>
|
183 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
</p>
|
185 |
</div>
|
186 |
<a href="<?php echo Utility::build_url( Router::ACTION_PLACEHOLDER, Placeholder::TYPE_GENERATE ); ?>" class="button litespeed-btn-success">
|
@@ -188,7 +199,6 @@ $closest_server = Cloud::get_summary( 'server.' . Cloud::SVC_LQIP );
|
|
188 |
</a>
|
189 |
<?php endif; ?>
|
190 |
</div>
|
191 |
-
<?php endif; ?>
|
192 |
</td>
|
193 |
</tr>
|
194 |
|
@@ -214,8 +224,8 @@ $closest_server = Cloud::get_summary( 'server.' . Cloud::SVC_LQIP );
|
|
214 |
<td>
|
215 |
<?php $this->build_switch( $id ); ?>
|
216 |
<div class="litespeed-desc">
|
217 |
-
<?php echo __( 'Set an explicit width and height on image elements to reduce layout shifts and improve CLS.', 'litespeed-cache' ); ?>
|
218 |
-
<?php Doc::learn_more( 'https://web.dev/optimize-cls
|
219 |
<br /><?php echo sprintf( __( 'Note: this option only works when %1$s is %2$s.', 'litespeed-cache' ), '<code>' . Lang::title( Base::O_MEDIA_LAZY ) . '</code>', '<code>' . __( 'ON', 'litespeed-cache' ) . '</code>' ); ?>
|
220 |
</div>
|
221 |
</td>
|
6 |
|
7 |
$closest_server = Cloud::get_summary( 'server.' . Cloud::SVC_LQIP );
|
8 |
|
9 |
+
$placeholder_queue = Placeholder::cls()->load_queue();
|
10 |
+
|
11 |
?>
|
12 |
|
13 |
<h3 class="litespeed-title-short">
|
163 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#generate-lqip-in-background' ); ?>
|
164 |
</div>
|
165 |
|
|
|
166 |
<div class="litespeed-desc">
|
167 |
+
<?php if ( $placeholder_summary ) : ?>
|
168 |
+
<?php if ( ! empty( $placeholder_summary[ 'last_request' ] ) ) : ?>
|
169 |
+
<p>
|
170 |
+
<?php echo __( 'Last generated', 'litespeed-cache' ) . ': <code>' . Utility::readable_time( $placeholder_summary[ 'last_request' ] ) . '</code>'; ?>
|
171 |
+
</p>
|
172 |
+
<?php endif; ?>
|
173 |
<?php endif; ?>
|
174 |
|
175 |
<?php if ( $closest_server ) : ?>
|
176 |
<a href="<?php echo Utility::build_url( Router::ACTION_CLOUD, Cloud::TYPE_REDETECT_CLOUD, false, null, array( 'svc' => Cloud::SVC_LQIP ) ); ?>" data-balloon-pos="up" data-balloon-break aria-label='<?php echo sprintf( __( 'Current closest Cloud server is %s. Click to redetect.', 'litespeed-cache' ), $closest_server ); ?>' data-litespeed-cfm="<?php echo __( 'Are you sure you want to redetect the closest cloud server for this service?', 'litespeed-cache' ) ; ?>"><i class='litespeed-quic-icon'></i></a>
|
177 |
<?php endif; ?>
|
178 |
|
179 |
+
<?php if ( ! empty( $placeholder_queue ) ) : ?>
|
180 |
<div class="litespeed-callout notice notice-warning inline">
|
181 |
<h4>
|
182 |
<?php echo __( 'Size list in queue waiting for cron','litespeed-cache' ); ?>
|
183 |
<a href="<?php echo Utility::build_url( Router::ACTION_PLACEHOLDER, Placeholder::TYPE_CLEAR_Q ); ?>" class="button litespeed-btn-warning litespeed-right">Clear</a>
|
184 |
</h4>
|
185 |
<p>
|
186 |
+
<?php foreach ( $placeholder_queue as $k => $v ) : ?>
|
187 |
+
<?php if ( $k > 20 ) : ?>
|
188 |
+
<?php echo '...'; ?>
|
189 |
+
<?php break; ?>
|
190 |
+
<?php endif; ?>
|
191 |
+
|
192 |
+
<?php echo $v; ?>
|
193 |
+
<br />
|
194 |
+
<?php endforeach; ?>
|
195 |
</p>
|
196 |
</div>
|
197 |
<a href="<?php echo Utility::build_url( Router::ACTION_PLACEHOLDER, Placeholder::TYPE_GENERATE ); ?>" class="button litespeed-btn-success">
|
199 |
</a>
|
200 |
<?php endif; ?>
|
201 |
</div>
|
|
|
202 |
</td>
|
203 |
</tr>
|
204 |
|
224 |
<td>
|
225 |
<?php $this->build_switch( $id ); ?>
|
226 |
<div class="litespeed-desc">
|
227 |
+
<?php echo __( 'Set an explicit width and height on image elements to reduce layout shifts and improve CLS (a Core Web Vitals metric).', 'litespeed-cache' ); ?>
|
228 |
+
<?php Doc::learn_more( 'https://web.dev/optimize-cls/#images-without-dimensions' ); ?>
|
229 |
<br /><?php echo sprintf( __( 'Note: this option only works when %1$s is %2$s.', 'litespeed-cache' ), '<code>' . Lang::title( Base::O_MEDIA_LAZY ) . '</code>', '<code>' . __( 'ON', 'litespeed-cache' ) . '</code>' ); ?>
|
230 |
</div>
|
231 |
</td>
|
tpl/page_optm/settings_tuning.tpl.php
CHANGED
@@ -62,7 +62,7 @@ ksort( $roles );
|
|
62 |
</td>
|
63 |
</tr>
|
64 |
|
65 |
-
<tr
|
66 |
<th>
|
67 |
<?php $id = Base::O_OPTM_UCSS_WHITELIST; ?>
|
68 |
<?php $this->title( $id ); ?>
|
@@ -71,6 +71,7 @@ ksort( $roles );
|
|
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 |
<br /><font class="litespeed-success">
|
75 |
<?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>
|
76 |
</font>
|
@@ -78,6 +79,35 @@ ksort( $roles );
|
|
78 |
</td>
|
79 |
</tr>
|
80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
<tr>
|
82 |
<th>
|
83 |
<?php $id = Base::O_OPTM_CCSS_CON; ?>
|
@@ -112,6 +142,26 @@ ksort( $roles );
|
|
112 |
</td>
|
113 |
</tr>
|
114 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
<tr>
|
116 |
<th>
|
117 |
<?php $id = Base::O_OPTM_EXC; ?>
|
@@ -134,7 +184,7 @@ ksort( $roles );
|
|
134 |
<td>
|
135 |
<?php $this->build_switch( $id ); ?>
|
136 |
<div class="litespeed-desc">
|
137 |
-
<?php echo __( 'Only optimize pages for guest visitors. If turned this OFF, CSS/JS/CCSS files will be doubled by each user group.', 'litespeed-cache' ); ?>
|
138 |
</div>
|
139 |
</td>
|
140 |
</tr>
|
62 |
</td>
|
63 |
</tr>
|
64 |
|
65 |
+
<tr>
|
66 |
<th>
|
67 |
<?php $id = Base::O_OPTM_UCSS_WHITELIST; ?>
|
68 |
<?php $this->title( $id ); ?>
|
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 |
+
<br /><?php echo sprintf( __( 'Wildcard %s supported.', 'litespeed-cache' ), '<code>*</code>' ); ?>
|
75 |
<br /><font class="litespeed-success">
|
76 |
<?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>
|
77 |
</font>
|
79 |
</td>
|
80 |
</tr>
|
81 |
|
82 |
+
<tr>
|
83 |
+
<th>
|
84 |
+
<?php $id = Base::O_OPTM_CCSS_SEP_POSTTYPE; ?>
|
85 |
+
<?php $this->title( $id ); ?>
|
86 |
+
</th>
|
87 |
+
<td>
|
88 |
+
<?php $this->build_textarea( $id ); ?>
|
89 |
+
<div class="litespeed-desc">
|
90 |
+
<?php echo __('List post types where each item of that type should have its own CCSS generated.', 'litespeed-cache'); ?>
|
91 |
+
<?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>' ); ?>
|
92 |
+
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#separate-ccss-cache-post-types_1' ); ?>
|
93 |
+
</div>
|
94 |
+
</td>
|
95 |
+
</tr>
|
96 |
+
|
97 |
+
<tr>
|
98 |
+
<th>
|
99 |
+
<?php $id = Base::O_OPTM_CCSS_SEP_URI; ?>
|
100 |
+
<?php $this->title( $id ); ?>
|
101 |
+
</th>
|
102 |
+
<td>
|
103 |
+
<?php $this->build_textarea( $id ); ?>
|
104 |
+
<div class="litespeed-desc">
|
105 |
+
<?php echo __( 'Separate critical CSS files will be generated for paths containing these strings.', 'litespeed-cache' ); ?>
|
106 |
+
<?php $this->_uri_usage_example(); ?>
|
107 |
+
</div>
|
108 |
+
</td>
|
109 |
+
</tr>
|
110 |
+
|
111 |
<tr>
|
112 |
<th>
|
113 |
<?php $id = Base::O_OPTM_CCSS_CON; ?>
|
142 |
</td>
|
143 |
</tr>
|
144 |
|
145 |
+
<tr>
|
146 |
+
<th>
|
147 |
+
<?php $id = Base::O_OPTM_GM_JS_EXC; ?>
|
148 |
+
<?php $this->title( $id ); ?>
|
149 |
+
</th>
|
150 |
+
<td>
|
151 |
+
<?php $this->build_textarea( $id ); ?>
|
152 |
+
<div class="litespeed-desc">
|
153 |
+
<?php echo sprintf( __( 'Listed JS files or inline JS code will not be optimized by %s.', 'litespeed-cache' ), '<code>' . Lang::title( Base::O_GUEST ) . '</code>' ); ?>
|
154 |
+
<?php Doc::full_or_partial_url(); ?>
|
155 |
+
<?php Doc::one_per_line(); ?>
|
156 |
+
<br /><span class="litespeed-success">
|
157 |
+
<?php echo __( 'API', 'litespeed-cache' ); ?>:
|
158 |
+
<?php echo sprintf( __( 'Filter %s is supported.', 'litespeed-cache' ), '<code>litespeed_optm_gm_js_exc</code>' ); ?>
|
159 |
+
<?php echo sprintf( __( 'Elements with attribute %s in html code will be excluded.', 'litespeed-cache' ), '<code>data-no-defer="1"</code>' ); ?>
|
160 |
+
</span>
|
161 |
+
</div>
|
162 |
+
</td>
|
163 |
+
</tr>
|
164 |
+
|
165 |
<tr>
|
166 |
<th>
|
167 |
<?php $id = Base::O_OPTM_EXC; ?>
|
184 |
<td>
|
185 |
<?php $this->build_switch( $id ); ?>
|
186 |
<div class="litespeed-desc">
|
187 |
+
<?php echo __( 'Only optimize pages for guest (not logged in) visitors. If turned this OFF, CSS/JS/CCSS files will be doubled by each user group.', 'litespeed-cache' ); ?>
|
188 |
</div>
|
189 |
</td>
|
190 |
</tr>
|
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 |
'4.0',
|
8 |
'3.6.4',
|
9 |
'3.5.2',
|
4 |
|
5 |
// Existing public version list
|
6 |
$v_list = array(
|
7 |
+
'4.1',
|
8 |
'4.0',
|
9 |
'3.6.4',
|
10 |
'3.5.2',
|
tpl/toolbox/purge.tpl.php
CHANGED
@@ -74,15 +74,6 @@ if ( file_exists( LITESPEED_STATIC_DIR . '/ccss' ) ) {
|
|
74 |
) ;
|
75 |
}
|
76 |
|
77 |
-
if ( $this->conf( Base::O_OPTM_LOCALIZE ) ) {
|
78 |
-
$_panels[] = array(
|
79 |
-
'title' => __( 'Purge All', 'litespeed-cache' ) . ' - ' . __( 'Localized Resources', 'litespeed-cache' ),
|
80 |
-
'desc' => __( 'This will delete all localized resources', 'litespeed-cache' ),
|
81 |
-
'icon' => 'purge-cssjs',
|
82 |
-
'append_url' => Purge::TYPE_PURGE_ALL_LOCALRES,
|
83 |
-
);
|
84 |
-
}
|
85 |
-
|
86 |
if ( Placeholder::has_lqip_cache() ) {
|
87 |
$_panels[] = array(
|
88 |
'title' => __( 'Purge All', 'litespeed-cache' ) . ' - ' . __( 'LQIP Cache', 'litespeed-cache' ),
|
74 |
) ;
|
75 |
}
|
76 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
if ( Placeholder::has_lqip_cache() ) {
|
78 |
$_panels[] = array(
|
79 |
'title' => __( 'Purge All', 'litespeed-cache' ) . ' - ' . __( 'LQIP Cache', 'litespeed-cache' ),
|
tpl/toolbox/settings-debug.tpl.php
CHANGED
@@ -47,7 +47,7 @@ $this->form_action( $this->_is_network_admin ? Router::ACTION_SAVE_SETTINGS_NETW
|
|
47 |
<?php $this->title( $id ); ?>
|
48 |
</th>
|
49 |
<td>
|
50 |
-
<?php $this->build_textarea( $id,
|
51 |
<div class="litespeed-desc">
|
52 |
<?php echo __( 'Allows listed IPs (one per line) to perform certain actions from their browsers.', 'litespeed-cache' ); ?>
|
53 |
<?php echo __( 'Your IP', 'litespeed-cache' ); ?>: <code><?php echo Router::get_ip(); ?></code>
|
47 |
<?php $this->title( $id ); ?>
|
48 |
</th>
|
49 |
<td>
|
50 |
+
<?php $this->build_textarea( $id, 50 ); ?>
|
51 |
<div class="litespeed-desc">
|
52 |
<?php echo __( 'Allows listed IPs (one per line) to perform certain actions from their browsers.', 'litespeed-cache' ); ?>
|
53 |
<?php echo __( 'Your IP', 'litespeed-cache' ); ?>: <code><?php echo Router::get_ip(); ?></code>
|
wp_assets/banner-1544x500.png
DELETED
Binary file
|
wp_assets/banner-772x250.png
DELETED
Binary file
|
wp_assets/icon-128x128.png
DELETED
Binary file
|
wp_assets/icon-256x256.png
DELETED
Binary file
|
wp_assets/screenshot-1.png
DELETED
Binary file
|
wp_assets/screenshot-10.png
DELETED
Binary file
|
wp_assets/screenshot-11.png
DELETED
Binary file
|
wp_assets/screenshot-2.png
DELETED
Binary file
|
wp_assets/screenshot-3.png
DELETED
Binary file
|
wp_assets/screenshot-4.png
DELETED
Binary file
|
wp_assets/screenshot-5.png
DELETED
Binary file
|
wp_assets/screenshot-6.png
DELETED
Binary file
|
wp_assets/screenshot-7.png
DELETED
Binary file
|
wp_assets/screenshot-8.png
DELETED
Binary file
|
wp_assets/screenshot-9.png
DELETED
Binary file
|