Version Description
- Sep 8 2021 =
- Crawler Added the ability to enable or disable specific crawlers. ( Contributed by Astrid Wang #PR390)
-
UCSS Added
UCSS Inline
option. (Ankit). -
UCSS Added
UCSS URI Excludes
option. (RC Verma). - Page Optimize Fixed an issue where combined CSS/JS files would potentially return 404 errors after a Purge All. (Special thanks to Abe & Ruikai)
- Page Optimize Minimized the potential for 404 errors by query string when Purging All.
- Page Optimize Dropped redundant query strings for minified CSS/JS files.
- Conf Ugrade configuration safely to avoid the issue of new functions not being found in old codebase.
- Conf Configuration upgrade process now adds a notification to admin pages and disables configuration save until upgrade is complete. (Lisa)
-
JS Fixed an issue where JS Defer caused a
litespeed_var_1_ is not defined
error when enabled w/ ESI options. (Tobolo) -
JS Fixed an issue where
JS Delay
doesn't work for combined JS whenJS Combine
is enabled. (Special thanks to Joshua & Ankit) -
JS
JS Delay
now will continue loading JS, even if there is an error in the current JS loading process. - CCSS If CCSS fails to generate, Load CSS Asynchronously will now be disabled. (Stars #54074166)
- UCSS If UCSS generation fails the generated error will no longer be served inside the file. (Ryan D)
- Log Updated the Debug log to use less code for prefix.
-
3rd Always respect
DONOTCACHEPAGE
constant defination to fix DIVI dynamic css calculation process.
Download this release
Release Info
Developer | LiteSpeedTech |
Plugin | LiteSpeed Cache |
Version | 4.4 |
Comparing to | |
See all releases |
Code changes from version 4.3 to 4.4
- assets/css/litespeed.css +1 -1
- assets/js/js_delay.js +9 -4
- assets/js/js_delay.min.js +1 -1
- assets/js/litespeed-cache-admin.js +31 -0
- data/const.default.ini +6 -0
- lang/litespeed-cache.pot +333 -290
- litespeed-cache.php +2 -2
- readme.txt +73 -56
- src/admin-display.cls.php +38 -11
- src/base.cls.php +4 -0
- src/cloud.cls.php +46 -45
- src/conf.cls.php +14 -6
- src/control.cls.php +5 -0
- src/crawler.cls.php +55 -0
- src/css.cls.php +25 -2
- src/data.cls.php +3 -2
- src/doc.cls.php +12 -0
- src/gui.cls.php +5 -5
- src/img-optm.cls.php +3 -1
- src/lang.cls.php +2 -0
- src/optimize.cls.php +58 -26
- src/rest.cls.php +18 -0
- src/root.cls.php +35 -0
- src/utility.cls.php +2 -2
- thirdparty/woocommerce.cls.php +5 -5
- tpl/cache/settings_inc.cache_mobile.tpl.php +1 -0
- tpl/cdn/settings.tpl.php +2 -2
- tpl/crawler/summary.tpl.php +4 -0
- tpl/dash/dashboard.tpl.php +4 -4
- tpl/general/settings_inc.guest.tpl.php +1 -0
- tpl/img_optm/settings.media_webp.tpl.php +1 -0
- tpl/img_optm/summary.tpl.php +1 -1
- tpl/inc/in_upgrading.php +8 -0
- tpl/page_optm/settings_css.tpl.php +30 -1
- tpl/page_optm/settings_tuning.tpl.php +19 -0
- tpl/toolbox/beta_test.tpl.php +1 -0
assets/css/litespeed.css
CHANGED
@@ -1152,7 +1152,7 @@ h3 .litespeed-learn-more {
|
|
1152 |
overflow: hidden;
|
1153 |
min-width: 58px;
|
1154 |
height: 21px;
|
1155 |
-
margin-left: 1.2rem
|
1156 |
}
|
1157 |
|
1158 |
.litespeed-toggle-group {
|
1152 |
overflow: hidden;
|
1153 |
min-width: 58px;
|
1154 |
height: 21px;
|
1155 |
+
/*margin-left: 1.2rem;*/
|
1156 |
}
|
1157 |
|
1158 |
.litespeed-toggle-group {
|
assets/js/js_delay.js
CHANGED
@@ -30,7 +30,7 @@ function litespeed_load_delayed_js_forced() {
|
|
30 |
|
31 |
function litespeed_load_delayed_js( is_forced ) {
|
32 |
if ( is_forced ) {
|
33 |
-
console.log( 'Force running delayed JS' );
|
34 |
}
|
35 |
|
36 |
litespeed_load_one();
|
@@ -52,16 +52,21 @@ 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 |
|
30 |
|
31 |
function litespeed_load_delayed_js( is_forced ) {
|
32 |
if ( is_forced ) {
|
33 |
+
console.log( '[LiteSpeed] Force running delayed JS' );
|
34 |
}
|
35 |
|
36 |
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( '[LiteSpeed] All loaded!' );
|
56 |
return;
|
57 |
}
|
58 |
|
59 |
+
console.log( '[LiteSpeed] Load i=' + e.getAttribute( 'data-i' ), '-----',e );
|
60 |
|
61 |
var e2 = document.createElement( 'script' );
|
62 |
|
63 |
e2.addEventListener( 'load', function(){
|
64 |
+
console.log('[LiteSpeed] loaded --- ' + e2.getAttribute('data-i'));
|
65 |
+
litespeed_load_one();
|
66 |
+
}, { passive: true } );
|
67 |
+
|
68 |
+
e2.addEventListener( 'error', function(){
|
69 |
+
console.log('[LiteSpeed] loaded error! --- ' + e2.getAttribute('data-i'));
|
70 |
litespeed_load_one();
|
71 |
}, { passive: true } );
|
72 |
|
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("
|
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("[LiteSpeed] Start Load JS Delayed"),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("[LiteSpeed] Force running delayed JS"),litespeed_load_one()}function litespeed_inline2src(t){try{var d=urlCreator.createObjectURL(new Blob([t.replace(/^(?:<!--)?(.*?)(?:-->)?$/gm,"$1")],{type:"text/javascript"}))}catch(e){d="data:text/javascript;base64,"+btoa(t.replace(/^(?:<!--)?(.*?)(?:-->)?$/gm,"$1"))}return d}function litespeed_load_one(){litespeed_delay_i++;var t,d=document.querySelector('script[type="litespeed/javascript"][data-i="'+litespeed_delay_i+'"]');d?(console.log("[LiteSpeed] Load i="+d.getAttribute("data-i"),"-----",d),(t=document.createElement("script")).addEventListener("load",function(){console.log("[LiteSpeed] loaded --- "+t.getAttribute("data-i")),litespeed_load_one()},{passive:!0}),t.addEventListener("error",function(){console.log("[LiteSpeed] loaded error! --- "+t.getAttribute("data-i")),litespeed_load_one()},{passive:!0}),d.getAttributeNames().forEach(function(e){"type"!=e&&t.setAttribute("data-src"==e?"src":e,d.getAttribute(e))}),t.type="text/javascript",!t.src&&d.textContent&&(t.src=litespeed_inline2src(d.textContent)),d.after(t),d.remove()):console.log("[LiteSpeed] All loaded!")}litespeed_ui_events.forEach(function(e){window.addEventListener(e,litespeed_load_delayed_js_forced,{passive:!0})});
|
assets/js/litespeed-cache-admin.js
CHANGED
@@ -172,6 +172,37 @@ var _litespeed_dots ;
|
|
172 |
} ) ;
|
173 |
} ) ;
|
174 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
/**
|
176 |
* Click only once
|
177 |
*/
|
172 |
} ) ;
|
173 |
} ) ;
|
174 |
|
175 |
+
/**
|
176 |
+
* Freeze or melt a specific crawler
|
177 |
+
* @since 4.3
|
178 |
+
*/
|
179 |
+
if ( $( '.litespeed-toggle' ).length > 0 ) {
|
180 |
+
$( '.litespeed-toggle' ).on( 'click', function( e ) {
|
181 |
+
var crawler_id = $( this ).attr( "data-litespeed_crawler_id" );
|
182 |
+
var crawler_id = Number( crawler_id.split('-').pop() );
|
183 |
+
var that = this;
|
184 |
+
$.ajax( {
|
185 |
+
url: litespeed_data.ajax_url_crawler_switch,
|
186 |
+
dataType: 'json',
|
187 |
+
method: 'POST',
|
188 |
+
cache: false,
|
189 |
+
data:{ crawler_id: crawler_id },
|
190 |
+
beforeSend: function ( xhr ) {
|
191 |
+
xhr.setRequestHeader( 'X-WP-Nonce', litespeed_data.nonce ) ;
|
192 |
+
},
|
193 |
+
success: function( data ) {
|
194 |
+
$( that ).toggleClass( 'litespeed-toggle-btn-default litespeed-toggleoff' , data == 0 ).toggleClass( 'litespeed-toggle-btn-primary' , data == 1 );
|
195 |
+
console.log( 'litespeed-crawler-ajax: change Activate option' );
|
196 |
+
},
|
197 |
+
error: function( xhr, error ) {
|
198 |
+
console.log( xhr );
|
199 |
+
console.log( error );
|
200 |
+
console.log( 'litespeed-crawler-ajax: option failed to save due to some error' );
|
201 |
+
}
|
202 |
+
} ) ;
|
203 |
+
} ) ;
|
204 |
+
}
|
205 |
+
|
206 |
/**
|
207 |
* Click only once
|
208 |
*/
|
data/const.default.ini
CHANGED
@@ -305,9 +305,15 @@ optm-css_comb_ext_inl = true
|
|
305 |
; O_OPTM_UCSS
|
306 |
optm-ucss = false
|
307 |
|
|
|
|
|
|
|
308 |
; O_OPTM_UCSS_WHITELIST
|
309 |
optm-ucss_whitelist = ''
|
310 |
|
|
|
|
|
|
|
311 |
; O_OPTM_CSS_HTTP2
|
312 |
optm-css_http2 = false
|
313 |
|
305 |
; O_OPTM_UCSS
|
306 |
optm-ucss = false
|
307 |
|
308 |
+
; O_OPTM_UCSS_INLINE
|
309 |
+
optm-ucss_inline = false
|
310 |
+
|
311 |
; O_OPTM_UCSS_WHITELIST
|
312 |
optm-ucss_whitelist = ''
|
313 |
|
314 |
+
; O_OPTM_UCSS_EXC
|
315 |
+
optm-ucss_exc = ''
|
316 |
+
|
317 |
; O_OPTM_CSS_HTTP2
|
318 |
optm-css_http2 = false
|
319 |
|
lang/litespeed-cache.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the LiteSpeed Cache package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: LiteSpeed Cache 4.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
|
7 |
-
"POT-Creation-Date: 2021-08-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -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 |
|
@@ -102,151 +102,152 @@ msgstr ""
|
|
102 |
msgid "Add new CDN URL"
|
103 |
msgstr ""
|
104 |
|
105 |
-
#: src/admin-display.cls.php:232 src/admin-display.cls.php:
|
106 |
-
#: src/admin-display.cls.php:
|
107 |
#: tpl/cache/settings-cache.tpl.php:19
|
108 |
-
#: tpl/cache/settings_inc.cache_mobile.tpl.php:
|
109 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
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 ""
|
115 |
|
116 |
-
#: src/admin-display.cls.php:233 src/admin-display.cls.php:
|
117 |
-
#: src/admin-display.cls.php:
|
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:
|
127 |
msgid "Settings"
|
128 |
msgstr ""
|
129 |
|
130 |
-
#: src/admin-display.cls.php:
|
131 |
msgid "Dismiss"
|
132 |
msgstr ""
|
133 |
|
134 |
-
#: src/admin-display.cls.php:
|
135 |
msgid "Save Changes"
|
136 |
msgstr ""
|
137 |
|
138 |
-
#: src/admin-display.cls.php:
|
139 |
msgid "This setting is overwritten by the PHP constant %s"
|
140 |
msgstr ""
|
141 |
|
142 |
-
#: src/admin-display.cls.php:
|
143 |
msgid "This setting is overwritten by the primary site setting"
|
144 |
msgstr ""
|
145 |
|
146 |
-
#: src/admin-display.cls.php:
|
147 |
msgid "This setting is overwritten by the Network setting"
|
148 |
msgstr ""
|
149 |
|
150 |
-
#: src/admin-display.cls.php:
|
151 |
msgid "currently set to %s"
|
152 |
msgstr ""
|
153 |
|
154 |
-
#: src/admin-display.cls.php:
|
155 |
#: tpl/crawler/settings-general.tpl.php:60
|
156 |
#: tpl/crawler/settings-general.tpl.php:74
|
157 |
#: tpl/crawler/settings-general.tpl.php:89 tpl/esi_widget_edit.php:70
|
158 |
msgid "seconds"
|
159 |
msgstr ""
|
160 |
|
161 |
-
#: src/admin-display.cls.php:
|
162 |
#: tpl/cdn/settings.tpl.php:99
|
163 |
msgid "Default value"
|
164 |
msgstr ""
|
165 |
|
166 |
-
#: src/admin-display.cls.php:
|
167 |
msgid "Invalid rewrite rule"
|
168 |
msgstr ""
|
169 |
|
170 |
-
#: src/admin-display.cls.php:
|
171 |
msgid "Path must end with %s"
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: src/admin-display.cls.php:
|
175 |
msgid "Minimum value"
|
176 |
msgstr ""
|
177 |
|
178 |
-
#: src/admin-display.cls.php:
|
179 |
msgid "Maximum value"
|
180 |
msgstr ""
|
181 |
|
182 |
-
#: src/admin-display.cls.php:
|
183 |
msgid "Zero, or"
|
184 |
msgstr ""
|
185 |
|
186 |
-
#: src/admin-display.cls.php:
|
187 |
msgid "Larger than"
|
188 |
msgstr ""
|
189 |
|
190 |
-
#: src/admin-display.cls.php:
|
191 |
msgid "Smaller than"
|
192 |
msgstr ""
|
193 |
|
194 |
-
#: src/admin-display.cls.php:
|
195 |
msgid "Value range"
|
196 |
msgstr ""
|
197 |
|
198 |
-
#: src/admin-display.cls.php:
|
199 |
msgid "Invalid IP"
|
200 |
msgstr ""
|
201 |
|
202 |
-
#: src/admin-display.cls.php:
|
203 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
204 |
#: tpl/page_optm/settings_html.tpl.php:85
|
205 |
#: tpl/page_optm/settings_media_exc.tpl.php:26
|
206 |
#: tpl/page_optm/settings_tuning.tpl.php:35
|
207 |
#: tpl/page_optm/settings_tuning.tpl.php:56
|
208 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
209 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
|
|
210 |
msgid "API"
|
211 |
msgstr ""
|
212 |
|
213 |
-
#: src/admin-display.cls.php:
|
214 |
msgid "Server variable(s) %s available to override this setting."
|
215 |
msgstr ""
|
216 |
|
217 |
-
#: src/admin-display.cls.php:
|
218 |
msgid "The URLs will be compared to the REQUEST_URI server variable."
|
219 |
msgstr ""
|
220 |
|
221 |
-
#: src/admin-display.cls.php:
|
222 |
msgid "For example, for %s, %s can be used here."
|
223 |
msgstr ""
|
224 |
|
225 |
-
#: src/admin-display.cls.php:
|
226 |
msgid "To match the beginning, add %s to the beginning of the item."
|
227 |
msgstr ""
|
228 |
|
229 |
-
#: src/admin-display.cls.php:
|
230 |
msgid "To do an exact match, add %s to the end of the URL."
|
231 |
msgstr ""
|
232 |
|
233 |
-
#: src/admin-display.cls.php:
|
234 |
msgid "One per line."
|
235 |
msgstr ""
|
236 |
|
237 |
-
#: src/admin-display.cls.php:
|
238 |
msgid "%s groups"
|
239 |
msgstr ""
|
240 |
|
241 |
-
#: src/admin-display.cls.php:
|
242 |
msgid "%s images"
|
243 |
msgstr ""
|
244 |
|
245 |
-
#: src/admin-display.cls.php:
|
246 |
msgid "%s group"
|
247 |
msgstr ""
|
248 |
|
249 |
-
#: src/admin-display.cls.php:
|
250 |
msgid "%s image"
|
251 |
msgstr ""
|
252 |
|
@@ -278,84 +279,84 @@ msgstr ""
|
|
278 |
msgid "Failed to communicate with Cloudflare"
|
279 |
msgstr ""
|
280 |
|
281 |
-
#: src/cloud.cls.php:
|
282 |
-
#: src/cloud.cls.php:
|
283 |
msgid "Cloud Error"
|
284 |
msgstr ""
|
285 |
|
286 |
-
#: src/cloud.cls.php:
|
287 |
msgid "No available Cloud Node."
|
288 |
msgstr ""
|
289 |
|
290 |
-
#: src/cloud.cls.php:
|
291 |
msgid "No available Cloud Node after checked server load."
|
292 |
msgstr ""
|
293 |
|
294 |
-
#: src/cloud.cls.php:
|
295 |
msgid "Please try after %1$s for service %2$s."
|
296 |
msgstr ""
|
297 |
|
298 |
-
#: src/cloud.cls.php:
|
299 |
msgid "Failed to request via WordPress"
|
300 |
msgstr ""
|
301 |
|
302 |
-
#: src/cloud.cls.php:
|
303 |
msgid "Redetected node"
|
304 |
msgstr ""
|
305 |
|
306 |
-
#: src/cloud.cls.php:
|
307 |
msgid ""
|
308 |
"We are working hard to improve your online service experience. The service "
|
309 |
"will be unavailable while we work. We apologize for any inconvenience."
|
310 |
msgstr ""
|
311 |
|
312 |
-
#: src/cloud.cls.php:
|
313 |
msgid "Message from QUIC.cloud server"
|
314 |
msgstr ""
|
315 |
|
316 |
-
#: src/cloud.cls.php:
|
317 |
msgid "Good news from QUIC.cloud server"
|
318 |
msgstr ""
|
319 |
|
320 |
-
#: src/cloud.cls.php:
|
321 |
msgid "%1$s plugin version %2$s required for this action."
|
322 |
msgstr ""
|
323 |
|
324 |
-
#: src/cloud.cls.php:
|
325 |
msgid "Failed to communicate with QUIC.cloud server"
|
326 |
msgstr ""
|
327 |
|
328 |
-
#: src/cloud.cls.php:
|
329 |
msgid ""
|
330 |
"Site not recognized. Domain Key has been automatically removed. Please "
|
331 |
"request a new one."
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: src/cloud.cls.php:
|
335 |
msgid "Click here to set."
|
336 |
msgstr ""
|
337 |
|
338 |
-
#: src/cloud.cls.php:
|
339 |
msgid ""
|
340 |
"Applied for Domain Key successfully. Please wait for result. Domain Key will "
|
341 |
"be automatically sent to your WordPress."
|
342 |
msgstr ""
|
343 |
|
344 |
-
#: src/cloud.cls.php:
|
345 |
msgid ""
|
346 |
"Congratulations, your Domain Key has been approved! The setting has been "
|
347 |
"updated accordingly."
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: src/cloud.cls.php:
|
351 |
msgid "Domain Key hash mismatch"
|
352 |
msgstr ""
|
353 |
|
354 |
-
#: src/cloud.cls.php:
|
355 |
msgid "Sync credit allowance with Cloud Server successfully."
|
356 |
msgstr ""
|
357 |
|
358 |
-
#: src/conf.cls.php:
|
359 |
msgid "Changed setting successfully."
|
360 |
msgstr ""
|
361 |
|
@@ -379,27 +380,31 @@ msgstr ""
|
|
379 |
msgid "Sitemap created successfully: %d items"
|
380 |
msgstr ""
|
381 |
|
382 |
-
#: src/crawler.cls.php:
|
|
|
|
|
|
|
|
|
383 |
msgid "Guest"
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: src/crawler.cls.php:
|
387 |
msgid "Manually added to blacklist"
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: src/crawler.cls.php:
|
391 |
msgid "Previously existed in blacklist"
|
392 |
msgstr ""
|
393 |
|
394 |
-
#: src/css.cls.php:60 src/root.cls.php:
|
395 |
msgid "Queue cleared successfully."
|
396 |
msgstr ""
|
397 |
|
398 |
-
#: src/css.cls.php:
|
399 |
msgid "%1$s %2$s files left in queue"
|
400 |
msgstr ""
|
401 |
|
402 |
-
#: src/css.cls.php:
|
403 |
msgid "Cancel"
|
404 |
msgstr ""
|
405 |
|
@@ -417,7 +422,7 @@ msgid ""
|
|
417 |
"errors."
|
418 |
msgstr ""
|
419 |
|
420 |
-
#: src/data.upgrade.func.php:83 src/lang.cls.php:
|
421 |
msgid "JS Combine"
|
422 |
msgstr ""
|
423 |
|
@@ -473,7 +478,11 @@ msgstr ""
|
|
473 |
msgid "Converted to InnoDB successfully."
|
474 |
msgstr ""
|
475 |
|
476 |
-
#: src/doc.cls.php:
|
|
|
|
|
|
|
|
|
477 |
msgid ""
|
478 |
"This site utilizes caching in order to facilitate a faster response time and "
|
479 |
"better user experience. Caching potentially stores a duplicate copy of every "
|
@@ -485,39 +494,39 @@ msgid ""
|
|
485 |
"services to process & cache your data temporarily."
|
486 |
msgstr ""
|
487 |
|
488 |
-
#: src/doc.cls.php:
|
489 |
msgid "Please see %s for more details."
|
490 |
msgstr ""
|
491 |
|
492 |
-
#: src/doc.cls.php:
|
493 |
#: tpl/dash/dashboard.tpl.php:49 tpl/img_optm/summary.tpl.php:62
|
494 |
#: tpl/img_optm/summary.tpl.php:102 tpl/inc/check_cache_disabled.php:42
|
495 |
msgid "Learn More"
|
496 |
msgstr ""
|
497 |
|
498 |
-
#: src/doc.cls.php:
|
499 |
msgid "Both full and partial strings can be used."
|
500 |
msgstr ""
|
501 |
|
502 |
-
#: src/doc.cls.php:
|
503 |
msgid "Both full URLs and partial strings can be used."
|
504 |
msgstr ""
|
505 |
|
506 |
-
#: src/doc.cls.php:
|
507 |
msgid "This setting will edit the .htaccess file."
|
508 |
msgstr ""
|
509 |
|
510 |
-
#: src/doc.cls.php:
|
511 |
msgid ""
|
512 |
"For online services to work correctly, you must whitelist all %s server IPs."
|
513 |
msgstr ""
|
514 |
|
515 |
-
#: src/doc.cls.php:
|
516 |
msgid ""
|
517 |
"Before generating key, please verify all IPs on this list are whitelisted"
|
518 |
msgstr ""
|
519 |
|
520 |
-
#: src/doc.cls.php:
|
521 |
msgid "Current Online Server IPs"
|
522 |
msgstr ""
|
523 |
|
@@ -758,7 +767,7 @@ msgstr ""
|
|
758 |
msgid "LQIP Cache"
|
759 |
msgstr ""
|
760 |
|
761 |
-
#: src/gui.cls.php:536 src/gui.cls.php:687 src/lang.cls.php:
|
762 |
#: tpl/toolbox/purge.tpl.php:97
|
763 |
msgid "Gravatar Cache"
|
764 |
msgstr ""
|
@@ -852,71 +861,71 @@ msgstr ""
|
|
852 |
msgid "Pull Cron is running"
|
853 |
msgstr ""
|
854 |
|
855 |
-
#: src/img-optm.cls.php:
|
856 |
msgid "Some optimized image file(s) has expired and was cleared."
|
857 |
msgstr ""
|
858 |
|
859 |
-
#: src/img-optm.cls.php:
|
860 |
msgid "One or more pulled images does not match with the notified image md5"
|
861 |
msgstr ""
|
862 |
|
863 |
-
#: src/img-optm.cls.php:
|
864 |
msgid "Optimized WebP file expired and was cleared."
|
865 |
msgstr ""
|
866 |
|
867 |
-
#: src/img-optm.cls.php:
|
868 |
msgid "Pulled WebP image md5 does not match the notified WebP image md5."
|
869 |
msgstr ""
|
870 |
|
871 |
-
#: src/img-optm.cls.php:
|
872 |
msgid "Pulled %d image(s)"
|
873 |
msgstr ""
|
874 |
|
875 |
-
#: src/img-optm.cls.php:
|
876 |
msgid "Cleaned up unfinished data successfully."
|
877 |
msgstr ""
|
878 |
|
879 |
-
#: src/img-optm.cls.php:
|
880 |
msgid "Destroy all optimization data successfully."
|
881 |
msgstr ""
|
882 |
|
883 |
-
#: src/img-optm.cls.php:
|
884 |
msgid "Rescaned successfully."
|
885 |
msgstr ""
|
886 |
|
887 |
-
#: src/img-optm.cls.php:
|
888 |
msgid "Rescaned %d images successfully."
|
889 |
msgstr ""
|
890 |
|
891 |
-
#: src/img-optm.cls.php:
|
892 |
msgid "Calculated backups successfully."
|
893 |
msgstr ""
|
894 |
|
895 |
-
#: src/img-optm.cls.php:
|
896 |
msgid "Removed backups successfully."
|
897 |
msgstr ""
|
898 |
|
899 |
-
#: src/img-optm.cls.php:
|
900 |
msgid "Switched images successfully."
|
901 |
msgstr ""
|
902 |
|
903 |
-
#: src/img-optm.cls.php:
|
904 |
msgid "Disabled WebP file successfully."
|
905 |
msgstr ""
|
906 |
|
907 |
-
#: src/img-optm.cls.php:
|
908 |
msgid "Enabled WebP file successfully."
|
909 |
msgstr ""
|
910 |
|
911 |
-
#: src/img-optm.cls.php:
|
912 |
msgid "Restored original file successfully."
|
913 |
msgstr ""
|
914 |
|
915 |
-
#: src/img-optm.cls.php:
|
916 |
msgid "Switched to optimized file successfully."
|
917 |
msgstr ""
|
918 |
|
919 |
-
#: src/img-optm.cls.php:
|
920 |
msgid "Reset the optimized data successfully."
|
921 |
msgstr ""
|
922 |
|
@@ -1068,11 +1077,11 @@ msgstr ""
|
|
1068 |
msgid "Cache PHP Resources"
|
1069 |
msgstr ""
|
1070 |
|
1071 |
-
#: src/lang.cls.php:77 tpl/cache/settings_inc.cache_mobile.tpl.php:
|
1072 |
msgid "Cache Mobile"
|
1073 |
msgstr ""
|
1074 |
|
1075 |
-
#: src/lang.cls.php:78 tpl/cache/settings_inc.cache_mobile.tpl.php:
|
1076 |
msgid "List of Mobile User Agents"
|
1077 |
msgstr ""
|
1078 |
|
@@ -1193,463 +1202,471 @@ msgid "Generate UCSS"
|
|
1193 |
msgstr ""
|
1194 |
|
1195 |
#: src/lang.cls.php:111
|
1196 |
-
msgid "UCSS
|
1197 |
msgstr ""
|
1198 |
|
1199 |
#: src/lang.cls.php:112
|
1200 |
-
msgid "
|
1201 |
msgstr ""
|
1202 |
|
1203 |
#: src/lang.cls.php:113
|
1204 |
-
msgid "
|
|
|
|
|
|
|
|
|
1205 |
msgstr ""
|
1206 |
|
1207 |
#: src/lang.cls.php:115
|
|
|
|
|
|
|
|
|
1208 |
msgid "JS Combine External and Inline"
|
1209 |
msgstr ""
|
1210 |
|
1211 |
-
#: src/lang.cls.php:
|
1212 |
msgid "JS HTTP/2 Push"
|
1213 |
msgstr ""
|
1214 |
|
1215 |
-
#: src/lang.cls.php:
|
1216 |
msgid "HTML Minify"
|
1217 |
msgstr ""
|
1218 |
|
1219 |
-
#: src/lang.cls.php:
|
1220 |
msgid "HTML Lazy Load Selectors"
|
1221 |
msgstr ""
|
1222 |
|
1223 |
-
#: src/lang.cls.php:
|
1224 |
msgid "Load CSS Asynchronously"
|
1225 |
msgstr ""
|
1226 |
|
1227 |
-
#: src/lang.cls.php:
|
1228 |
msgid "CCSS Per URL"
|
1229 |
msgstr ""
|
1230 |
|
1231 |
-
#: src/lang.cls.php:
|
1232 |
msgid "Inline CSS Async Lib"
|
1233 |
msgstr ""
|
1234 |
|
1235 |
-
#: src/lang.cls.php:
|
1236 |
msgid "Font Display Optimization"
|
1237 |
msgstr ""
|
1238 |
|
1239 |
-
#: src/lang.cls.php:
|
1240 |
msgid "Load JS Deferred"
|
1241 |
msgstr ""
|
1242 |
|
1243 |
-
#: src/lang.cls.php:
|
1244 |
msgid "DNS Prefetch"
|
1245 |
msgstr ""
|
1246 |
|
1247 |
-
#: src/lang.cls.php:
|
1248 |
msgid "DNS Prefetch Control"
|
1249 |
msgstr ""
|
1250 |
|
1251 |
-
#: src/lang.cls.php:
|
1252 |
msgid "CSS Excludes"
|
1253 |
msgstr ""
|
1254 |
|
1255 |
-
#: src/lang.cls.php:
|
1256 |
msgid "JS Excludes"
|
1257 |
msgstr ""
|
1258 |
|
1259 |
-
#: src/lang.cls.php:
|
1260 |
msgid "Remove Query Strings"
|
1261 |
msgstr ""
|
1262 |
|
1263 |
-
#: src/lang.cls.php:
|
1264 |
msgid "Load Google Fonts Asynchronously"
|
1265 |
msgstr ""
|
1266 |
|
1267 |
-
#: src/lang.cls.php:
|
1268 |
msgid "Remove Google Fonts"
|
1269 |
msgstr ""
|
1270 |
|
1271 |
-
#: src/lang.cls.php:
|
1272 |
msgid "Critical CSS Rules"
|
1273 |
msgstr ""
|
1274 |
|
1275 |
-
#: src/lang.cls.php:
|
1276 |
msgid "Separate CCSS Cache Post Types"
|
1277 |
msgstr ""
|
1278 |
|
1279 |
-
#: src/lang.cls.php:
|
1280 |
msgid "Separate CCSS Cache URIs"
|
1281 |
msgstr ""
|
1282 |
|
1283 |
-
#: src/lang.cls.php:
|
1284 |
msgid "JS Deferred Excludes"
|
1285 |
msgstr ""
|
1286 |
|
1287 |
-
#: src/lang.cls.php:
|
1288 |
msgid "Guest Mode JS Excludes"
|
1289 |
msgstr ""
|
1290 |
|
1291 |
-
#: src/lang.cls.php:
|
1292 |
msgid "Remove WordPress Emoji"
|
1293 |
msgstr ""
|
1294 |
|
1295 |
-
#: src/lang.cls.php:
|
1296 |
msgid "Remove Noscript Tags"
|
1297 |
msgstr ""
|
1298 |
|
1299 |
-
#: src/lang.cls.php:
|
1300 |
msgid "URI Excludes"
|
1301 |
msgstr ""
|
1302 |
|
1303 |
-
#: src/lang.cls.php:
|
1304 |
msgid "Optimize for Guests Only"
|
1305 |
msgstr ""
|
1306 |
|
1307 |
-
#: src/lang.cls.php:
|
1308 |
msgid "Role Excludes"
|
1309 |
msgstr ""
|
1310 |
|
1311 |
-
#: src/lang.cls.php:
|
1312 |
msgid "Gravatar Cache Cron"
|
1313 |
msgstr ""
|
1314 |
|
1315 |
-
#: src/lang.cls.php:
|
1316 |
msgid "Gravatar Cache TTL"
|
1317 |
msgstr ""
|
1318 |
|
1319 |
-
#: src/lang.cls.php:
|
1320 |
msgid "Lazy Load Images"
|
1321 |
msgstr ""
|
1322 |
|
1323 |
-
#: src/lang.cls.php:
|
1324 |
msgid "Lazy Load Image Excludes"
|
1325 |
msgstr ""
|
1326 |
|
1327 |
-
#: src/lang.cls.php:
|
1328 |
msgid "Lazy Load Image Class Name Excludes"
|
1329 |
msgstr ""
|
1330 |
|
1331 |
-
#: src/lang.cls.php:
|
1332 |
msgid "Lazy Load Image Parent Class Name Excludes"
|
1333 |
msgstr ""
|
1334 |
|
1335 |
-
#: src/lang.cls.php:
|
1336 |
msgid "Lazy Load Iframe Class Name Excludes"
|
1337 |
msgstr ""
|
1338 |
|
1339 |
-
#: src/lang.cls.php:
|
1340 |
msgid "Lazy Load Iframe Parent Class Name Excludes"
|
1341 |
msgstr ""
|
1342 |
|
1343 |
-
#: src/lang.cls.php:
|
1344 |
msgid "Lazy Load URI Excludes"
|
1345 |
msgstr ""
|
1346 |
|
1347 |
-
#: src/lang.cls.php:
|
1348 |
msgid "LQIP Excludes"
|
1349 |
msgstr ""
|
1350 |
|
1351 |
-
#: src/lang.cls.php:
|
1352 |
msgid "Basic Image Placeholder"
|
1353 |
msgstr ""
|
1354 |
|
1355 |
-
#: src/lang.cls.php:
|
1356 |
msgid "Responsive Placeholder"
|
1357 |
msgstr ""
|
1358 |
|
1359 |
-
#: src/lang.cls.php:
|
1360 |
msgid "Responsive Placeholder Color"
|
1361 |
msgstr ""
|
1362 |
|
1363 |
-
#: src/lang.cls.php:
|
1364 |
msgid "Responsive Placeholder SVG"
|
1365 |
msgstr ""
|
1366 |
|
1367 |
-
#: src/lang.cls.php:
|
1368 |
msgid "LQIP Cloud Generator"
|
1369 |
msgstr ""
|
1370 |
|
1371 |
-
#: src/lang.cls.php:
|
1372 |
msgid "LQIP Quality"
|
1373 |
msgstr ""
|
1374 |
|
1375 |
-
#: src/lang.cls.php:
|
1376 |
msgid "LQIP Minimum Dimensions"
|
1377 |
msgstr ""
|
1378 |
|
1379 |
-
#: src/lang.cls.php:
|
1380 |
msgid "Generate LQIP In Background"
|
1381 |
msgstr ""
|
1382 |
|
1383 |
-
#: src/lang.cls.php:
|
1384 |
msgid "Lazy Load Iframes"
|
1385 |
msgstr ""
|
1386 |
|
1387 |
-
#: src/lang.cls.php:
|
1388 |
msgid "Add Missing Sizes"
|
1389 |
msgstr ""
|
1390 |
|
1391 |
-
#: src/lang.cls.php:
|
1392 |
msgid "Inline Lazy Load Images Library"
|
1393 |
msgstr ""
|
1394 |
|
1395 |
-
#: src/lang.cls.php:
|
1396 |
msgid "Auto Request Cron"
|
1397 |
msgstr ""
|
1398 |
|
1399 |
-
#: src/lang.cls.php:
|
1400 |
msgid "Auto Pull Cron"
|
1401 |
msgstr ""
|
1402 |
|
1403 |
-
#: src/lang.cls.php:
|
1404 |
msgid "Optimize Original Images"
|
1405 |
msgstr ""
|
1406 |
|
1407 |
-
#: src/lang.cls.php:
|
1408 |
msgid "Remove Original Backups"
|
1409 |
msgstr ""
|
1410 |
|
1411 |
-
#: src/lang.cls.php:
|
1412 |
msgid "Create WebP Versions"
|
1413 |
msgstr ""
|
1414 |
|
1415 |
-
#: src/lang.cls.php:
|
1416 |
msgid "Optimize Losslessly"
|
1417 |
msgstr ""
|
1418 |
|
1419 |
-
#: src/lang.cls.php:
|
1420 |
msgid "Preserve EXIF/XMP data"
|
1421 |
msgstr ""
|
1422 |
|
1423 |
-
#: src/lang.cls.php:
|
1424 |
msgid "WebP Attribute To Replace"
|
1425 |
msgstr ""
|
1426 |
|
1427 |
-
#: src/lang.cls.php:
|
1428 |
msgid "WebP For Extra srcset"
|
1429 |
msgstr ""
|
1430 |
|
1431 |
-
#: src/lang.cls.php:
|
1432 |
msgid "WordPress Image Quality Control"
|
1433 |
msgstr ""
|
1434 |
|
1435 |
-
#: src/lang.cls.php:
|
1436 |
msgid "Enable ESI"
|
1437 |
msgstr ""
|
1438 |
|
1439 |
-
#: src/lang.cls.php:
|
1440 |
msgid "Cache Admin Bar"
|
1441 |
msgstr ""
|
1442 |
|
1443 |
-
#: src/lang.cls.php:
|
1444 |
msgid "Cache Comment Form"
|
1445 |
msgstr ""
|
1446 |
|
1447 |
-
#: src/lang.cls.php:
|
1448 |
msgid "ESI Nonces"
|
1449 |
msgstr ""
|
1450 |
|
1451 |
-
#: src/lang.cls.php:
|
1452 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
1453 |
msgid "Vary Group"
|
1454 |
msgstr ""
|
1455 |
|
1456 |
-
#: src/lang.cls.php:
|
1457 |
msgid "Purge All Hooks"
|
1458 |
msgstr ""
|
1459 |
|
1460 |
-
#: src/lang.cls.php:
|
1461 |
msgid "Improve HTTP/HTTPS Compatibility"
|
1462 |
msgstr ""
|
1463 |
|
1464 |
-
#: src/lang.cls.php:
|
1465 |
msgid "Instant Click"
|
1466 |
msgstr ""
|
1467 |
|
1468 |
-
#: src/lang.cls.php:
|
1469 |
msgid "Do Not Cache Cookies"
|
1470 |
msgstr ""
|
1471 |
|
1472 |
-
#: src/lang.cls.php:
|
1473 |
msgid "Do Not Cache User Agents"
|
1474 |
msgstr ""
|
1475 |
|
1476 |
-
#: src/lang.cls.php:
|
1477 |
msgid "Login Cookie"
|
1478 |
msgstr ""
|
1479 |
|
1480 |
-
#: src/lang.cls.php:
|
1481 |
msgid "Image WebP Replacement"
|
1482 |
msgstr ""
|
1483 |
|
1484 |
-
#: src/lang.cls.php:
|
1485 |
msgid "Frontend .htaccess Path"
|
1486 |
msgstr ""
|
1487 |
|
1488 |
-
#: src/lang.cls.php:
|
1489 |
msgid "Backend .htaccess Path"
|
1490 |
msgstr ""
|
1491 |
|
1492 |
-
#: src/lang.cls.php:
|
1493 |
msgid "Frontend Heartbeat Control"
|
1494 |
msgstr ""
|
1495 |
|
1496 |
-
#: src/lang.cls.php:
|
1497 |
msgid "Frontend Heartbeat TTL"
|
1498 |
msgstr ""
|
1499 |
|
1500 |
-
#: src/lang.cls.php:
|
1501 |
msgid "Backend Heartbeat Control"
|
1502 |
msgstr ""
|
1503 |
|
1504 |
-
#: src/lang.cls.php:
|
1505 |
msgid "Backend Heartbeat TTL"
|
1506 |
msgstr ""
|
1507 |
|
1508 |
-
#: src/lang.cls.php:
|
1509 |
msgid "Editor Heartbeat"
|
1510 |
msgstr ""
|
1511 |
|
1512 |
-
#: src/lang.cls.php:
|
1513 |
msgid "Editor Heartbeat TTL"
|
1514 |
msgstr ""
|
1515 |
|
1516 |
-
#: src/lang.cls.php:
|
1517 |
msgid "QUIC.cloud CDN"
|
1518 |
msgstr ""
|
1519 |
|
1520 |
-
#: src/lang.cls.php:
|
1521 |
msgid "Use CDN Mapping"
|
1522 |
msgstr ""
|
1523 |
|
1524 |
-
#: src/lang.cls.php:
|
1525 |
msgid "CDN URL"
|
1526 |
msgstr ""
|
1527 |
|
1528 |
-
#: src/lang.cls.php:
|
1529 |
msgid "Include Images"
|
1530 |
msgstr ""
|
1531 |
|
1532 |
-
#: src/lang.cls.php:
|
1533 |
msgid "Include CSS"
|
1534 |
msgstr ""
|
1535 |
|
1536 |
-
#: src/lang.cls.php:
|
1537 |
msgid "Include JS"
|
1538 |
msgstr ""
|
1539 |
|
1540 |
-
#: src/lang.cls.php:
|
1541 |
msgid "Include File Types"
|
1542 |
msgstr ""
|
1543 |
|
1544 |
-
#: src/lang.cls.php:
|
1545 |
msgid "HTML Attribute To Replace"
|
1546 |
msgstr ""
|
1547 |
|
1548 |
-
#: src/lang.cls.php:
|
1549 |
msgid "Original URLs"
|
1550 |
msgstr ""
|
1551 |
|
1552 |
-
#: src/lang.cls.php:
|
1553 |
msgid "Included Directories"
|
1554 |
msgstr ""
|
1555 |
|
1556 |
-
#: src/lang.cls.php:
|
1557 |
msgid "Exclude Path"
|
1558 |
msgstr ""
|
1559 |
|
1560 |
-
#: src/lang.cls.php:
|
1561 |
msgid "Cloudflare API"
|
1562 |
msgstr ""
|
1563 |
|
1564 |
-
#: src/lang.cls.php:
|
1565 |
msgid "Delay"
|
1566 |
msgstr ""
|
1567 |
|
1568 |
-
#: src/lang.cls.php:
|
1569 |
msgid "Run Duration"
|
1570 |
msgstr ""
|
1571 |
|
1572 |
-
#: src/lang.cls.php:
|
1573 |
msgid "Interval Between Runs"
|
1574 |
msgstr ""
|
1575 |
|
1576 |
-
#: src/lang.cls.php:
|
1577 |
msgid "Crawl Interval"
|
1578 |
msgstr ""
|
1579 |
|
1580 |
-
#: src/lang.cls.php:
|
1581 |
msgid "Threads"
|
1582 |
msgstr ""
|
1583 |
|
1584 |
-
#: src/lang.cls.php:
|
1585 |
msgid "Timeout"
|
1586 |
msgstr ""
|
1587 |
|
1588 |
-
#: src/lang.cls.php:
|
1589 |
msgid "Server Load Limit"
|
1590 |
msgstr ""
|
1591 |
|
1592 |
-
#: src/lang.cls.php:
|
1593 |
msgid "Role Simulation"
|
1594 |
msgstr ""
|
1595 |
|
1596 |
-
#: src/lang.cls.php:
|
1597 |
msgid "Cookie Simulation"
|
1598 |
msgstr ""
|
1599 |
|
1600 |
-
#: src/lang.cls.php:
|
1601 |
msgid "Custom Sitemap"
|
1602 |
msgstr ""
|
1603 |
|
1604 |
-
#: src/lang.cls.php:
|
1605 |
msgid "Drop Domain from Sitemap"
|
1606 |
msgstr ""
|
1607 |
|
1608 |
-
#: src/lang.cls.php:
|
1609 |
msgid "Sitemap Timeout"
|
1610 |
msgstr ""
|
1611 |
|
1612 |
-
#: src/lang.cls.php:
|
1613 |
msgid "Disable All Features"
|
1614 |
msgstr ""
|
1615 |
|
1616 |
-
#: src/lang.cls.php:
|
1617 |
msgid "Debug Log"
|
1618 |
msgstr ""
|
1619 |
|
1620 |
-
#: src/lang.cls.php:
|
1621 |
msgid "Admin IPs"
|
1622 |
msgstr ""
|
1623 |
|
1624 |
-
#: src/lang.cls.php:
|
1625 |
msgid "Debug Level"
|
1626 |
msgstr ""
|
1627 |
|
1628 |
-
#: src/lang.cls.php:
|
1629 |
msgid "Log File Size Limit"
|
1630 |
msgstr ""
|
1631 |
|
1632 |
-
#: src/lang.cls.php:
|
1633 |
msgid "Log Cookies"
|
1634 |
msgstr ""
|
1635 |
|
1636 |
-
#: src/lang.cls.php:
|
1637 |
msgid "Collapse Query Strings"
|
1638 |
msgstr ""
|
1639 |
|
1640 |
-
#: src/lang.cls.php:
|
1641 |
msgid "Debug URI Includes"
|
1642 |
msgstr ""
|
1643 |
|
1644 |
-
#: src/lang.cls.php:
|
1645 |
msgid "Debug URI Excludes"
|
1646 |
msgstr ""
|
1647 |
|
1648 |
-
#: src/lang.cls.php:
|
1649 |
msgid "Revisions Max Number"
|
1650 |
msgstr ""
|
1651 |
|
1652 |
-
#: src/lang.cls.php:
|
1653 |
msgid "Revisions Max Age"
|
1654 |
msgstr ""
|
1655 |
|
@@ -1838,14 +1855,6 @@ msgstr ""
|
|
1838 |
msgid " %s ago"
|
1839 |
msgstr ""
|
1840 |
|
1841 |
-
#: src/utility.cls.php:876
|
1842 |
-
msgid "«"
|
1843 |
-
msgstr ""
|
1844 |
-
|
1845 |
-
#: src/utility.cls.php:877
|
1846 |
-
msgid "»"
|
1847 |
-
msgstr ""
|
1848 |
-
|
1849 |
#: thirdparty/woocommerce.content.tpl.php:16
|
1850 |
msgid "WooCommerce Settings"
|
1851 |
msgstr ""
|
@@ -1970,7 +1979,7 @@ msgstr ""
|
|
1970 |
msgid "Dismiss this notice"
|
1971 |
msgstr ""
|
1972 |
|
1973 |
-
#. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 4.
|
1974 |
#. Plugin Name of the plugin/theme
|
1975 |
#: tpl/banner/new_version.php:59 tpl/banner/new_version_dev.tpl.php:12
|
1976 |
#: tpl/cache/more_settings_tip.tpl.php:15 tpl/inc/admin_footer.php:8
|
@@ -1986,7 +1995,7 @@ msgid "New release %s is available now."
|
|
1986 |
msgstr ""
|
1987 |
|
1988 |
#: tpl/banner/new_version.php:71 tpl/banner/new_version_dev.tpl.php:24
|
1989 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
1990 |
msgid "Upgrade"
|
1991 |
msgstr ""
|
1992 |
|
@@ -2292,7 +2301,7 @@ msgstr ""
|
|
2292 |
#: tpl/cache/settings-esi.tpl.php:35 tpl/cdn/manage.tpl.php:21
|
2293 |
#: tpl/crawler/summary.tpl.php:48 tpl/inc/check_cache_disabled.php:31
|
2294 |
#: tpl/inc/check_if_network_disable_all.php:18
|
2295 |
-
#: tpl/page_optm/settings_css.tpl.php:59 tpl/page_optm/settings_css.tpl.php:
|
2296 |
#: tpl/page_optm/settings_localization.tpl.php:11
|
2297 |
msgid "WARNING"
|
2298 |
msgstr ""
|
@@ -2331,8 +2340,9 @@ msgstr ""
|
|
2331 |
#: tpl/page_optm/settings_media_exc.tpl.php:27
|
2332 |
#: tpl/page_optm/settings_tuning.tpl.php:36
|
2333 |
#: tpl/page_optm/settings_tuning.tpl.php:57
|
2334 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
2335 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
|
|
2336 |
msgid "Filter %s is supported."
|
2337 |
msgstr ""
|
2338 |
|
@@ -2614,15 +2624,15 @@ msgstr ""
|
|
2614 |
msgid "Serve a separate cache copy for mobile visitors."
|
2615 |
msgstr ""
|
2616 |
|
2617 |
-
#: tpl/cache/settings_inc.cache_mobile.tpl.php:
|
2618 |
msgid "Htaccess did not match configuration option."
|
2619 |
msgstr ""
|
2620 |
|
2621 |
-
#: tpl/cache/settings_inc.cache_mobile.tpl.php:
|
2622 |
msgid "Htaccess rule is: %s"
|
2623 |
msgstr ""
|
2624 |
|
2625 |
-
#: tpl/cache/settings_inc.cache_mobile.tpl.php:
|
2626 |
msgid "If %1$s is %2$s, then %3$s must be populated!"
|
2627 |
msgstr ""
|
2628 |
|
@@ -3044,7 +3054,7 @@ msgid "Blacklisted due to not cacheable"
|
|
3044 |
msgstr ""
|
3045 |
|
3046 |
#: tpl/crawler/blacklist.tpl.php:57 tpl/crawler/map.tpl.php:70
|
3047 |
-
#: tpl/crawler/summary.tpl.php:
|
3048 |
msgid "Blacklisted"
|
3049 |
msgstr ""
|
3050 |
|
@@ -3300,66 +3310,70 @@ msgid "Run Frequency"
|
|
3300 |
msgstr ""
|
3301 |
|
3302 |
#: tpl/crawler/summary.tpl.php:125
|
|
|
|
|
|
|
|
|
3303 |
msgid "Running"
|
3304 |
msgstr ""
|
3305 |
|
3306 |
-
#: tpl/crawler/summary.tpl.php:
|
3307 |
msgid "Waiting"
|
3308 |
msgstr ""
|
3309 |
|
3310 |
-
#: tpl/crawler/summary.tpl.php:
|
3311 |
msgid "Hit"
|
3312 |
msgstr ""
|
3313 |
|
3314 |
-
#: tpl/crawler/summary.tpl.php:
|
3315 |
msgid "Miss"
|
3316 |
msgstr ""
|
3317 |
|
3318 |
-
#: tpl/crawler/summary.tpl.php:
|
3319 |
msgid "running"
|
3320 |
msgstr ""
|
3321 |
|
3322 |
-
#: tpl/crawler/summary.tpl.php:
|
3323 |
msgid "Waiting to be Crawled"
|
3324 |
msgstr ""
|
3325 |
|
3326 |
-
#: tpl/crawler/summary.tpl.php:
|
3327 |
msgid "Already Cached"
|
3328 |
msgstr ""
|
3329 |
|
3330 |
-
#: tpl/crawler/summary.tpl.php:
|
3331 |
msgid "Successfully Crawled"
|
3332 |
msgstr ""
|
3333 |
|
3334 |
-
#: tpl/crawler/summary.tpl.php:
|
3335 |
msgid "Run frequency is set by the Interval Between Runs setting."
|
3336 |
msgstr ""
|
3337 |
|
3338 |
-
#: tpl/crawler/summary.tpl.php:
|
3339 |
msgid "Crawlers cannot run concurrently."
|
3340 |
msgstr ""
|
3341 |
|
3342 |
-
#: tpl/crawler/summary.tpl.php:
|
3343 |
msgid ""
|
3344 |
" If both the cron and a manual run start at similar times, the first to "
|
3345 |
"be started will take precedence."
|
3346 |
msgstr ""
|
3347 |
|
3348 |
-
#: tpl/crawler/summary.tpl.php:
|
3349 |
msgid ""
|
3350 |
"Please see <a %s>Hooking WP-Cron Into the System Task Scheduler</a> to learn "
|
3351 |
"how to create the system cron task."
|
3352 |
msgstr ""
|
3353 |
|
3354 |
-
#: tpl/crawler/summary.tpl.php:
|
3355 |
msgid "Watch Crawler Status"
|
3356 |
msgstr ""
|
3357 |
|
3358 |
-
#: tpl/crawler/summary.tpl.php:
|
3359 |
msgid "Show crawler status"
|
3360 |
msgstr ""
|
3361 |
|
3362 |
-
#: tpl/crawler/summary.tpl.php:
|
3363 |
msgid "No crawler meta file generated yet"
|
3364 |
msgstr ""
|
3365 |
|
@@ -3430,7 +3444,7 @@ msgid "Current closest Cloud server is %s. Click to redetect."
|
|
3430 |
msgstr ""
|
3431 |
|
3432 |
#: tpl/dash/dashboard.tpl.php:227 tpl/img_optm/summary.tpl.php:57
|
3433 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
3434 |
#: tpl/page_optm/settings_media.tpl.php:176
|
3435 |
msgid ""
|
3436 |
"Are you sure you want to redetect the closest cloud server for this service?"
|
@@ -3487,8 +3501,8 @@ msgid "Critical CSS"
|
|
3487 |
msgstr ""
|
3488 |
|
3489 |
#: tpl/dash/dashboard.tpl.php:437 tpl/dash/dashboard.tpl.php:470
|
3490 |
-
#: tpl/dash/dashboard.tpl.php:503 tpl/page_optm/settings_css.tpl.php:
|
3491 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
3492 |
#: tpl/page_optm/settings_media.tpl.php:170
|
3493 |
msgid "Last generated"
|
3494 |
msgstr ""
|
@@ -3906,7 +3920,7 @@ msgid ""
|
|
3906 |
"or tablet visitors."
|
3907 |
msgstr ""
|
3908 |
|
3909 |
-
#: tpl/general/settings_inc.guest.tpl.php:
|
3910 |
msgid "Your %1s quota on %2s will still be in use."
|
3911 |
msgstr ""
|
3912 |
|
@@ -4003,8 +4017,8 @@ msgstr ""
|
|
4003 |
msgid "The image compression quality setting of WordPress out of 100."
|
4004 |
msgstr ""
|
4005 |
|
4006 |
-
#: tpl/img_optm/summary.tpl.php:57 tpl/page_optm/settings_css.tpl.php:
|
4007 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4008 |
#: tpl/page_optm/settings_media.tpl.php:176
|
4009 |
msgid "Current closest Cloud server is %s. Click to redetect."
|
4010 |
msgstr ""
|
@@ -4264,6 +4278,12 @@ msgid ""
|
|
4264 |
"page."
|
4265 |
msgstr ""
|
4266 |
|
|
|
|
|
|
|
|
|
|
|
|
|
4267 |
#: tpl/inc/show_display_installed.php:5
|
4268 |
msgid "LiteSpeed Cache plugin is installed!"
|
4269 |
msgstr ""
|
@@ -4403,37 +4423,52 @@ msgid ""
|
|
4403 |
"queue."
|
4404 |
msgstr ""
|
4405 |
|
4406 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
|
|
|
|
|
|
|
|
4407 |
msgid "Last requested cost"
|
4408 |
msgstr ""
|
4409 |
|
4410 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4411 |
msgid "URL list in %s queue waiting for cron"
|
4412 |
msgstr ""
|
4413 |
|
4414 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4415 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4416 |
msgid "Run %s Queue Manually"
|
4417 |
msgstr ""
|
4418 |
|
4419 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4420 |
msgid ""
|
4421 |
"Include external CSS and inline CSS in combined file when %1$s is also "
|
4422 |
"enabled. This option helps maintain the priorities of CSS, which should "
|
4423 |
"minimize potential errors caused by CSS Combine."
|
4424 |
msgstr ""
|
4425 |
|
4426 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4427 |
msgid ""
|
4428 |
"Pre-send internal CSS files to the browser before they are requested. "
|
4429 |
"(Requires the HTTP/2 protocol)"
|
4430 |
msgstr ""
|
4431 |
|
4432 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4433 |
msgid "Optimize CSS delivery."
|
4434 |
msgstr ""
|
4435 |
|
4436 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4437 |
#: tpl/page_optm/settings_html.tpl.php:129 tpl/page_optm/settings_js.tpl.php:80
|
4438 |
#: tpl/page_optm/settings_media.tpl.php:243
|
4439 |
msgid ""
|
@@ -4441,53 +4476,57 @@ msgid ""
|
|
4441 |
"PageSpeed."
|
4442 |
msgstr ""
|
4443 |
|
4444 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4445 |
msgid ""
|
4446 |
"Use QUIC.cloud online service to generate critical CSS and load remaining "
|
4447 |
"CSS asynchronously."
|
4448 |
msgstr ""
|
4449 |
|
4450 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4451 |
msgid ""
|
4452 |
"Automatic generation of critical CSS is in the background via a cron-based "
|
4453 |
"queue."
|
4454 |
msgstr ""
|
4455 |
|
4456 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4457 |
msgid ""
|
4458 |
"When this option is turned %s, it will also load Google Fonts asynchronously."
|
4459 |
msgstr ""
|
4460 |
|
4461 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4462 |
msgid "Elements with attribute %s in HTML code will be excluded."
|
4463 |
msgstr ""
|
4464 |
|
4465 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
|
|
|
|
|
|
|
|
4466 |
msgid ""
|
4467 |
"Disable this option to generate CCSS per Post Type instead of per page. This "
|
4468 |
"can save significant CCSS quota, however it may result in incorrect CSS "
|
4469 |
"styling if your site uses a page builder."
|
4470 |
msgstr ""
|
4471 |
|
4472 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4473 |
msgid "This will inline the asynchronous CSS library to avoid render blocking."
|
4474 |
msgstr ""
|
4475 |
|
4476 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4477 |
msgid "Default"
|
4478 |
msgstr ""
|
4479 |
|
4480 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4481 |
msgid ""
|
4482 |
"Set this to append %1$s to all %2$s rules before caching CSS to specify how "
|
4483 |
"fonts should be displayed while being downloaded."
|
4484 |
msgstr ""
|
4485 |
|
4486 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4487 |
msgid "%s is recommended."
|
4488 |
msgstr ""
|
4489 |
|
4490 |
-
#: tpl/page_optm/settings_css.tpl.php:
|
4491 |
msgid "Swap"
|
4492 |
msgstr ""
|
4493 |
|
@@ -4789,8 +4828,8 @@ msgstr ""
|
|
4789 |
#: tpl/page_optm/settings_media_exc.tpl.php:28
|
4790 |
#: tpl/page_optm/settings_tuning.tpl.php:37
|
4791 |
#: tpl/page_optm/settings_tuning.tpl.php:58
|
4792 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4793 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4794 |
msgid "Elements with attribute %s in html code will be excluded."
|
4795 |
msgstr ""
|
4796 |
|
@@ -4825,7 +4864,7 @@ msgstr ""
|
|
4825 |
#: tpl/page_optm/settings_tuning.tpl.php:38
|
4826 |
#: tpl/page_optm/settings_tuning.tpl.php:59
|
4827 |
#: tpl/page_optm/settings_tuning.tpl.php:83
|
4828 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4829 |
msgid "Predefined list will also be combined w/ the above settings"
|
4830 |
msgstr ""
|
4831 |
|
@@ -4852,102 +4891,106 @@ msgid ""
|
|
4852 |
msgstr ""
|
4853 |
|
4854 |
#: tpl/page_optm/settings_tuning.tpl.php:97
|
|
|
|
|
|
|
|
|
4855 |
msgid ""
|
4856 |
"List post types where each item of that type should have its own CCSS "
|
4857 |
"generated."
|
4858 |
msgstr ""
|
4859 |
|
4860 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4861 |
msgid ""
|
4862 |
"For example, if every Page on the site has different formatting, enter %s in "
|
4863 |
"the box. Separate critical CSS files will be stored for every Page on the "
|
4864 |
"site."
|
4865 |
msgstr ""
|
4866 |
|
4867 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4868 |
msgid ""
|
4869 |
"Separate critical CSS files will be generated for paths containing these "
|
4870 |
"strings."
|
4871 |
msgstr ""
|
4872 |
|
4873 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4874 |
msgid "Specify critical CSS rules for above-the-fold content when enabling %s."
|
4875 |
msgstr ""
|
4876 |
|
4877 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4878 |
msgid "Listed JS files or inline JS code will not be deferred."
|
4879 |
msgstr ""
|
4880 |
|
4881 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4882 |
msgid "Listed JS files or inline JS code will not be optimized by %s."
|
4883 |
msgstr ""
|
4884 |
|
4885 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4886 |
msgid "Prevent any optimization of listed pages."
|
4887 |
msgstr ""
|
4888 |
|
4889 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4890 |
msgid ""
|
4891 |
"Only optimize pages for guest (not logged in) visitors. If turned this OFF, "
|
4892 |
"CSS/JS/CCSS files will be doubled by each user group."
|
4893 |
msgstr ""
|
4894 |
|
4895 |
-
#: tpl/page_optm/settings_tuning.tpl.php:
|
4896 |
msgid "Selected roles will be excluded from all optimizations."
|
4897 |
msgstr ""
|
4898 |
|
4899 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4900 |
msgid "Try GitHub Version"
|
4901 |
msgstr ""
|
4902 |
|
4903 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4904 |
msgid ""
|
4905 |
"Use this section to switch plugin versions. To beta test a GitHub commit, "
|
4906 |
"enter the commit URL in the field below."
|
4907 |
msgstr ""
|
4908 |
|
4909 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4910 |
msgid "Example"
|
4911 |
msgstr ""
|
4912 |
|
4913 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4914 |
msgid "Use latest GitHub Dev commit"
|
4915 |
msgstr ""
|
4916 |
|
4917 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4918 |
msgid "Use latest GitHub Master commit"
|
4919 |
msgstr ""
|
4920 |
|
4921 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4922 |
msgid "Use latest WordPress release version"
|
4923 |
msgstr ""
|
4924 |
|
4925 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4926 |
msgid "OR"
|
4927 |
msgstr ""
|
4928 |
|
4929 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4930 |
msgid ""
|
4931 |
"Downgrade not recommended. May cause fatal error due to refactored code."
|
4932 |
msgstr ""
|
4933 |
|
4934 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4935 |
msgid ""
|
4936 |
"Press the %s button to use the most recent GitHub commit. Master is for "
|
4937 |
"release candidate & Dev is for experimental testing."
|
4938 |
msgstr ""
|
4939 |
|
4940 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4941 |
msgid "Use latest GitHub Dev/Master commit"
|
4942 |
msgstr ""
|
4943 |
|
4944 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4945 |
msgid ""
|
4946 |
"Press the %s button to stop beta testing and go back to the current release "
|
4947 |
"from the WordPress Plugin Directory."
|
4948 |
msgstr ""
|
4949 |
|
4950 |
-
#: tpl/toolbox/beta_test.tpl.php:
|
4951 |
msgid ""
|
4952 |
"In order to avoid an upgrade error, you must be using %1$s or later before "
|
4953 |
"you can upgrade to %2$s versions."
|
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.4\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
|
7 |
+
"POT-Creation-Date: 2021-08-31 18:21:39+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
66 |
msgid "Database"
|
67 |
msgstr ""
|
68 |
|
69 |
+
#: src/admin-display.cls.php:129 src/lang.cls.php:213
|
70 |
msgid "Crawler"
|
71 |
msgstr ""
|
72 |
|
102 |
msgid "Add new CDN URL"
|
103 |
msgstr ""
|
104 |
|
105 |
+
#: src/admin-display.cls.php:232 src/admin-display.cls.php:826
|
106 |
+
#: src/admin-display.cls.php:855 src/admin-display.cls.php:906
|
107 |
#: tpl/cache/settings-cache.tpl.php:19
|
108 |
+
#: tpl/cache/settings_inc.cache_mobile.tpl.php:71 tpl/cdn/settings.tpl.php:49
|
109 |
+
#: tpl/page_optm/settings_css.tpl.php:186
|
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 ""
|
115 |
|
116 |
+
#: src/admin-display.cls.php:233 src/admin-display.cls.php:827
|
117 |
+
#: src/admin-display.cls.php:854 src/admin-display.cls.php:906
|
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_css.tpl.php:71 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:281 src/gui.cls.php:584
|
127 |
msgid "Settings"
|
128 |
msgstr ""
|
129 |
|
130 |
+
#: src/admin-display.cls.php:450
|
131 |
msgid "Dismiss"
|
132 |
msgstr ""
|
133 |
|
134 |
+
#: src/admin-display.cls.php:695 src/admin-display.cls.php:700
|
135 |
msgid "Save Changes"
|
136 |
msgstr ""
|
137 |
|
138 |
+
#: src/admin-display.cls.php:918
|
139 |
msgid "This setting is overwritten by the PHP constant %s"
|
140 |
msgstr ""
|
141 |
|
142 |
+
#: src/admin-display.cls.php:921
|
143 |
msgid "This setting is overwritten by the primary site setting"
|
144 |
msgstr ""
|
145 |
|
146 |
+
#: src/admin-display.cls.php:924
|
147 |
msgid "This setting is overwritten by the Network setting"
|
148 |
msgstr ""
|
149 |
|
150 |
+
#: src/admin-display.cls.php:928
|
151 |
msgid "currently set to %s"
|
152 |
msgstr ""
|
153 |
|
154 |
+
#: src/admin-display.cls.php:938 tpl/cache/settings_inc.object.tpl.php:103
|
155 |
#: tpl/crawler/settings-general.tpl.php:60
|
156 |
#: tpl/crawler/settings-general.tpl.php:74
|
157 |
#: tpl/crawler/settings-general.tpl.php:89 tpl/esi_widget_edit.php:70
|
158 |
msgid "seconds"
|
159 |
msgstr ""
|
160 |
|
161 |
+
#: src/admin-display.cls.php:969 src/admin-display.cls.php:974
|
162 |
#: tpl/cdn/settings.tpl.php:99
|
163 |
msgid "Default value"
|
164 |
msgstr ""
|
165 |
|
166 |
+
#: src/admin-display.cls.php:998
|
167 |
msgid "Invalid rewrite rule"
|
168 |
msgstr ""
|
169 |
|
170 |
+
#: src/admin-display.cls.php:1015
|
171 |
msgid "Path must end with %s"
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: src/admin-display.cls.php:1033
|
175 |
msgid "Minimum value"
|
176 |
msgstr ""
|
177 |
|
178 |
+
#: src/admin-display.cls.php:1036
|
179 |
msgid "Maximum value"
|
180 |
msgstr ""
|
181 |
|
182 |
+
#: src/admin-display.cls.php:1048
|
183 |
msgid "Zero, or"
|
184 |
msgstr ""
|
185 |
|
186 |
+
#: src/admin-display.cls.php:1055
|
187 |
msgid "Larger than"
|
188 |
msgstr ""
|
189 |
|
190 |
+
#: src/admin-display.cls.php:1058
|
191 |
msgid "Smaller than"
|
192 |
msgstr ""
|
193 |
|
194 |
+
#: src/admin-display.cls.php:1061
|
195 |
msgid "Value range"
|
196 |
msgstr ""
|
197 |
|
198 |
+
#: src/admin-display.cls.php:1086
|
199 |
msgid "Invalid IP"
|
200 |
msgstr ""
|
201 |
|
202 |
+
#: src/admin-display.cls.php:1106 tpl/cache/settings-esi.tpl.php:95
|
203 |
+
#: tpl/page_optm/settings_css.tpl.php:188
|
204 |
#: tpl/page_optm/settings_html.tpl.php:85
|
205 |
#: tpl/page_optm/settings_media_exc.tpl.php:26
|
206 |
#: tpl/page_optm/settings_tuning.tpl.php:35
|
207 |
#: tpl/page_optm/settings_tuning.tpl.php:56
|
208 |
+
#: tpl/page_optm/settings_tuning.tpl.php:101
|
209 |
+
#: tpl/page_optm/settings_tuning.tpl.php:162
|
210 |
+
#: tpl/page_optm/settings_tuning.tpl.php:183
|
211 |
msgid "API"
|
212 |
msgstr ""
|
213 |
|
214 |
+
#: src/admin-display.cls.php:1107
|
215 |
msgid "Server variable(s) %s available to override this setting."
|
216 |
msgstr ""
|
217 |
|
218 |
+
#: src/admin-display.cls.php:1119
|
219 |
msgid "The URLs will be compared to the REQUEST_URI server variable."
|
220 |
msgstr ""
|
221 |
|
222 |
+
#: src/admin-display.cls.php:1120
|
223 |
msgid "For example, for %s, %s can be used here."
|
224 |
msgstr ""
|
225 |
|
226 |
+
#: src/admin-display.cls.php:1122
|
227 |
msgid "To match the beginning, add %s to the beginning of the item."
|
228 |
msgstr ""
|
229 |
|
230 |
+
#: src/admin-display.cls.php:1123
|
231 |
msgid "To do an exact match, add %s to the end of the URL."
|
232 |
msgstr ""
|
233 |
|
234 |
+
#: src/admin-display.cls.php:1124 src/doc.cls.php:74
|
235 |
msgid "One per line."
|
236 |
msgstr ""
|
237 |
|
238 |
+
#: src/admin-display.cls.php:1138
|
239 |
msgid "%s groups"
|
240 |
msgstr ""
|
241 |
|
242 |
+
#: src/admin-display.cls.php:1141
|
243 |
msgid "%s images"
|
244 |
msgstr ""
|
245 |
|
246 |
+
#: src/admin-display.cls.php:1151
|
247 |
msgid "%s group"
|
248 |
msgstr ""
|
249 |
|
250 |
+
#: src/admin-display.cls.php:1154
|
251 |
msgid "%s image"
|
252 |
msgstr ""
|
253 |
|
279 |
msgid "Failed to communicate with Cloudflare"
|
280 |
msgstr ""
|
281 |
|
282 |
+
#: src/cloud.cls.php:359 src/cloud.cls.php:372 src/cloud.cls.php:407
|
283 |
+
#: src/cloud.cls.php:432 src/cloud.cls.php:551 src/cloud.cls.php:907
|
284 |
msgid "Cloud Error"
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: src/cloud.cls.php:407
|
288 |
msgid "No available Cloud Node."
|
289 |
msgstr ""
|
290 |
|
291 |
+
#: src/cloud.cls.php:432
|
292 |
msgid "No available Cloud Node after checked server load."
|
293 |
msgstr ""
|
294 |
|
295 |
+
#: src/cloud.cls.php:551
|
296 |
msgid "Please try after %1$s for service %2$s."
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: src/cloud.cls.php:634 src/cloud.cls.php:650
|
300 |
msgid "Failed to request via WordPress"
|
301 |
msgstr ""
|
302 |
|
303 |
+
#: src/cloud.cls.php:665
|
304 |
msgid "Redetected node"
|
305 |
msgstr ""
|
306 |
|
307 |
+
#: src/cloud.cls.php:673
|
308 |
msgid ""
|
309 |
"We are working hard to improve your online service experience. The service "
|
310 |
"will be unavailable while we work. We apologize for any inconvenience."
|
311 |
msgstr ""
|
312 |
|
313 |
+
#: src/cloud.cls.php:686 src/cloud.cls.php:694 src/cloud.cls.php:943
|
314 |
msgid "Message from QUIC.cloud server"
|
315 |
msgstr ""
|
316 |
|
317 |
+
#: src/cloud.cls.php:702
|
318 |
msgid "Good news from QUIC.cloud server"
|
319 |
msgstr ""
|
320 |
|
321 |
+
#: src/cloud.cls.php:711
|
322 |
msgid "%1$s plugin version %2$s required for this action."
|
323 |
msgstr ""
|
324 |
|
325 |
+
#: src/cloud.cls.php:754 src/cloud.cls.php:932
|
326 |
msgid "Failed to communicate with QUIC.cloud server"
|
327 |
msgstr ""
|
328 |
|
329 |
+
#: src/cloud.cls.php:762
|
330 |
msgid ""
|
331 |
"Site not recognized. Domain Key has been automatically removed. Please "
|
332 |
"request a new one."
|
333 |
msgstr ""
|
334 |
|
335 |
+
#: src/cloud.cls.php:763 src/error.cls.php:48
|
336 |
msgid "Click here to set."
|
337 |
msgstr ""
|
338 |
|
339 |
+
#: src/cloud.cls.php:951
|
340 |
msgid ""
|
341 |
"Applied for Domain Key successfully. Please wait for result. Domain Key will "
|
342 |
"be automatically sent to your WordPress."
|
343 |
msgstr ""
|
344 |
|
345 |
+
#: src/cloud.cls.php:1002
|
346 |
msgid ""
|
347 |
"Congratulations, your Domain Key has been approved! The setting has been "
|
348 |
"updated accordingly."
|
349 |
msgstr ""
|
350 |
|
351 |
+
#: src/cloud.cls.php:1073
|
352 |
msgid "Domain Key hash mismatch"
|
353 |
msgstr ""
|
354 |
|
355 |
+
#: src/cloud.cls.php:1184
|
356 |
msgid "Sync credit allowance with Cloud Server successfully."
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: src/conf.cls.php:701
|
360 |
msgid "Changed setting successfully."
|
361 |
msgstr ""
|
362 |
|
380 |
msgid "Sitemap created successfully: %d items"
|
381 |
msgstr ""
|
382 |
|
383 |
+
#: src/crawler.cls.php:99
|
384 |
+
msgid "Crawler disabled list is cleared! All crawlers are set to active! "
|
385 |
+
msgstr ""
|
386 |
+
|
387 |
+
#: src/crawler.cls.php:826
|
388 |
msgid "Guest"
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: src/crawler.cls.php:978
|
392 |
msgid "Manually added to blacklist"
|
393 |
msgstr ""
|
394 |
|
395 |
+
#: src/crawler.cls.php:981
|
396 |
msgid "Previously existed in blacklist"
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: src/css.cls.php:60 src/root.cls.php:163
|
400 |
msgid "Queue cleared successfully."
|
401 |
msgstr ""
|
402 |
|
403 |
+
#: src/css.cls.php:577
|
404 |
msgid "%1$s %2$s files left in queue"
|
405 |
msgstr ""
|
406 |
|
407 |
+
#: src/css.cls.php:578
|
408 |
msgid "Cancel"
|
409 |
msgstr ""
|
410 |
|
422 |
"errors."
|
423 |
msgstr ""
|
424 |
|
425 |
+
#: src/data.upgrade.func.php:83 src/lang.cls.php:116
|
426 |
msgid "JS Combine"
|
427 |
msgstr ""
|
428 |
|
478 |
msgid "Converted to InnoDB successfully."
|
479 |
msgstr ""
|
480 |
|
481 |
+
#: src/doc.cls.php:25
|
482 |
+
msgid "This setting will regenerate crawler list and clear the disabled list!"
|
483 |
+
msgstr ""
|
484 |
+
|
485 |
+
#: src/doc.cls.php:36
|
486 |
msgid ""
|
487 |
"This site utilizes caching in order to facilitate a faster response time and "
|
488 |
"better user experience. Caching potentially stores a duplicate copy of every "
|
494 |
"services to process & cache your data temporarily."
|
495 |
msgstr ""
|
496 |
|
497 |
+
#: src/doc.cls.php:37
|
498 |
msgid "Please see %s for more details."
|
499 |
msgstr ""
|
500 |
|
501 |
+
#: src/doc.cls.php:53 src/doc.cls.php:105 tpl/cdn/manage.tpl.php:66
|
502 |
#: tpl/dash/dashboard.tpl.php:49 tpl/img_optm/summary.tpl.php:62
|
503 |
#: tpl/img_optm/summary.tpl.php:102 tpl/inc/check_cache_disabled.php:42
|
504 |
msgid "Learn More"
|
505 |
msgstr ""
|
506 |
|
507 |
+
#: src/doc.cls.php:89
|
508 |
msgid "Both full and partial strings can be used."
|
509 |
msgstr ""
|
510 |
|
511 |
+
#: src/doc.cls.php:92
|
512 |
msgid "Both full URLs and partial strings can be used."
|
513 |
msgstr ""
|
514 |
|
515 |
+
#: src/doc.cls.php:104
|
516 |
msgid "This setting will edit the .htaccess file."
|
517 |
msgstr ""
|
518 |
|
519 |
+
#: src/doc.cls.php:117
|
520 |
msgid ""
|
521 |
"For online services to work correctly, you must whitelist all %s server IPs."
|
522 |
msgstr ""
|
523 |
|
524 |
+
#: src/doc.cls.php:118
|
525 |
msgid ""
|
526 |
"Before generating key, please verify all IPs on this list are whitelisted"
|
527 |
msgstr ""
|
528 |
|
529 |
+
#: src/doc.cls.php:119 tpl/general/settings.tpl.php:86
|
530 |
msgid "Current Online Server IPs"
|
531 |
msgstr ""
|
532 |
|
767 |
msgid "LQIP Cache"
|
768 |
msgstr ""
|
769 |
|
770 |
+
#: src/gui.cls.php:536 src/gui.cls.php:687 src/lang.cls.php:144
|
771 |
#: tpl/toolbox/purge.tpl.php:97
|
772 |
msgid "Gravatar Cache"
|
773 |
msgstr ""
|
861 |
msgid "Pull Cron is running"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: src/img-optm.cls.php:948
|
865 |
msgid "Some optimized image file(s) has expired and was cleared."
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: src/img-optm.cls.php:965
|
869 |
msgid "One or more pulled images does not match with the notified image md5"
|
870 |
msgstr ""
|
871 |
|
872 |
+
#: src/img-optm.cls.php:1009
|
873 |
msgid "Optimized WebP file expired and was cleared."
|
874 |
msgstr ""
|
875 |
|
876 |
+
#: src/img-optm.cls.php:1026
|
877 |
msgid "Pulled WebP image md5 does not match the notified WebP image md5."
|
878 |
msgstr ""
|
879 |
|
880 |
+
#: src/img-optm.cls.php:1086
|
881 |
msgid "Pulled %d image(s)"
|
882 |
msgstr ""
|
883 |
|
884 |
+
#: src/img-optm.cls.php:1173
|
885 |
msgid "Cleaned up unfinished data successfully."
|
886 |
msgstr ""
|
887 |
|
888 |
+
#: src/img-optm.cls.php:1244
|
889 |
msgid "Destroy all optimization data successfully."
|
890 |
msgstr ""
|
891 |
|
892 |
+
#: src/img-optm.cls.php:1276 src/img-optm.cls.php:1341
|
893 |
msgid "Rescaned successfully."
|
894 |
msgstr ""
|
895 |
|
896 |
+
#: src/img-optm.cls.php:1341
|
897 |
msgid "Rescaned %d images successfully."
|
898 |
msgstr ""
|
899 |
|
900 |
+
#: src/img-optm.cls.php:1400
|
901 |
msgid "Calculated backups successfully."
|
902 |
msgstr ""
|
903 |
|
904 |
+
#: src/img-optm.cls.php:1462
|
905 |
msgid "Removed backups successfully."
|
906 |
msgstr ""
|
907 |
|
908 |
+
#: src/img-optm.cls.php:1659
|
909 |
msgid "Switched images successfully."
|
910 |
msgstr ""
|
911 |
|
912 |
+
#: src/img-optm.cls.php:1687
|
913 |
msgid "Disabled WebP file successfully."
|
914 |
msgstr ""
|
915 |
|
916 |
+
#: src/img-optm.cls.php:1693
|
917 |
msgid "Enabled WebP file successfully."
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: src/img-optm.cls.php:1709
|
921 |
msgid "Restored original file successfully."
|
922 |
msgstr ""
|
923 |
|
924 |
+
#: src/img-optm.cls.php:1716
|
925 |
msgid "Switched to optimized file successfully."
|
926 |
msgstr ""
|
927 |
|
928 |
+
#: src/img-optm.cls.php:1779
|
929 |
msgid "Reset the optimized data successfully."
|
930 |
msgstr ""
|
931 |
|
1077 |
msgid "Cache PHP Resources"
|
1078 |
msgstr ""
|
1079 |
|
1080 |
+
#: src/lang.cls.php:77 tpl/cache/settings_inc.cache_mobile.tpl.php:71
|
1081 |
msgid "Cache Mobile"
|
1082 |
msgstr ""
|
1083 |
|
1084 |
+
#: src/lang.cls.php:78 tpl/cache/settings_inc.cache_mobile.tpl.php:71
|
1085 |
msgid "List of Mobile User Agents"
|
1086 |
msgstr ""
|
1087 |
|
1202 |
msgstr ""
|
1203 |
|
1204 |
#: src/lang.cls.php:111
|
1205 |
+
msgid "UCSS Inline"
|
1206 |
msgstr ""
|
1207 |
|
1208 |
#: src/lang.cls.php:112
|
1209 |
+
msgid "UCSS Whitelist"
|
1210 |
msgstr ""
|
1211 |
|
1212 |
#: src/lang.cls.php:113
|
1213 |
+
msgid "UCSS URI Excludes"
|
1214 |
+
msgstr ""
|
1215 |
+
|
1216 |
+
#: src/lang.cls.php:114
|
1217 |
+
msgid "CSS HTTP/2 Push"
|
1218 |
msgstr ""
|
1219 |
|
1220 |
#: src/lang.cls.php:115
|
1221 |
+
msgid "JS Minify"
|
1222 |
+
msgstr ""
|
1223 |
+
|
1224 |
+
#: src/lang.cls.php:117
|
1225 |
msgid "JS Combine External and Inline"
|
1226 |
msgstr ""
|
1227 |
|
1228 |
+
#: src/lang.cls.php:118
|
1229 |
msgid "JS HTTP/2 Push"
|
1230 |
msgstr ""
|
1231 |
|
1232 |
+
#: src/lang.cls.php:119
|
1233 |
msgid "HTML Minify"
|
1234 |
msgstr ""
|
1235 |
|
1236 |
+
#: src/lang.cls.php:120
|
1237 |
msgid "HTML Lazy Load Selectors"
|
1238 |
msgstr ""
|
1239 |
|
1240 |
+
#: src/lang.cls.php:121 tpl/page_optm/settings_tuning.tpl.php:145
|
1241 |
msgid "Load CSS Asynchronously"
|
1242 |
msgstr ""
|
1243 |
|
1244 |
+
#: src/lang.cls.php:122
|
1245 |
msgid "CCSS Per URL"
|
1246 |
msgstr ""
|
1247 |
|
1248 |
+
#: src/lang.cls.php:123
|
1249 |
msgid "Inline CSS Async Lib"
|
1250 |
msgstr ""
|
1251 |
|
1252 |
+
#: src/lang.cls.php:124
|
1253 |
msgid "Font Display Optimization"
|
1254 |
msgstr ""
|
1255 |
|
1256 |
+
#: src/lang.cls.php:125
|
1257 |
msgid "Load JS Deferred"
|
1258 |
msgstr ""
|
1259 |
|
1260 |
+
#: src/lang.cls.php:126
|
1261 |
msgid "DNS Prefetch"
|
1262 |
msgstr ""
|
1263 |
|
1264 |
+
#: src/lang.cls.php:127
|
1265 |
msgid "DNS Prefetch Control"
|
1266 |
msgstr ""
|
1267 |
|
1268 |
+
#: src/lang.cls.php:128
|
1269 |
msgid "CSS Excludes"
|
1270 |
msgstr ""
|
1271 |
|
1272 |
+
#: src/lang.cls.php:129
|
1273 |
msgid "JS Excludes"
|
1274 |
msgstr ""
|
1275 |
|
1276 |
+
#: src/lang.cls.php:130
|
1277 |
msgid "Remove Query Strings"
|
1278 |
msgstr ""
|
1279 |
|
1280 |
+
#: src/lang.cls.php:131
|
1281 |
msgid "Load Google Fonts Asynchronously"
|
1282 |
msgstr ""
|
1283 |
|
1284 |
+
#: src/lang.cls.php:132
|
1285 |
msgid "Remove Google Fonts"
|
1286 |
msgstr ""
|
1287 |
|
1288 |
+
#: src/lang.cls.php:133
|
1289 |
msgid "Critical CSS Rules"
|
1290 |
msgstr ""
|
1291 |
|
1292 |
+
#: src/lang.cls.php:134
|
1293 |
msgid "Separate CCSS Cache Post Types"
|
1294 |
msgstr ""
|
1295 |
|
1296 |
+
#: src/lang.cls.php:135
|
1297 |
msgid "Separate CCSS Cache URIs"
|
1298 |
msgstr ""
|
1299 |
|
1300 |
+
#: src/lang.cls.php:136
|
1301 |
msgid "JS Deferred Excludes"
|
1302 |
msgstr ""
|
1303 |
|
1304 |
+
#: src/lang.cls.php:137
|
1305 |
msgid "Guest Mode JS Excludes"
|
1306 |
msgstr ""
|
1307 |
|
1308 |
+
#: src/lang.cls.php:138
|
1309 |
msgid "Remove WordPress Emoji"
|
1310 |
msgstr ""
|
1311 |
|
1312 |
+
#: src/lang.cls.php:139
|
1313 |
msgid "Remove Noscript Tags"
|
1314 |
msgstr ""
|
1315 |
|
1316 |
+
#: src/lang.cls.php:140
|
1317 |
msgid "URI Excludes"
|
1318 |
msgstr ""
|
1319 |
|
1320 |
+
#: src/lang.cls.php:141
|
1321 |
msgid "Optimize for Guests Only"
|
1322 |
msgstr ""
|
1323 |
|
1324 |
+
#: src/lang.cls.php:142
|
1325 |
msgid "Role Excludes"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
+
#: src/lang.cls.php:145
|
1329 |
msgid "Gravatar Cache Cron"
|
1330 |
msgstr ""
|
1331 |
|
1332 |
+
#: src/lang.cls.php:146
|
1333 |
msgid "Gravatar Cache TTL"
|
1334 |
msgstr ""
|
1335 |
|
1336 |
+
#: src/lang.cls.php:148
|
1337 |
msgid "Lazy Load Images"
|
1338 |
msgstr ""
|
1339 |
|
1340 |
+
#: src/lang.cls.php:149
|
1341 |
msgid "Lazy Load Image Excludes"
|
1342 |
msgstr ""
|
1343 |
|
1344 |
+
#: src/lang.cls.php:150
|
1345 |
msgid "Lazy Load Image Class Name Excludes"
|
1346 |
msgstr ""
|
1347 |
|
1348 |
+
#: src/lang.cls.php:151
|
1349 |
msgid "Lazy Load Image Parent Class Name Excludes"
|
1350 |
msgstr ""
|
1351 |
|
1352 |
+
#: src/lang.cls.php:152
|
1353 |
msgid "Lazy Load Iframe Class Name Excludes"
|
1354 |
msgstr ""
|
1355 |
|
1356 |
+
#: src/lang.cls.php:153
|
1357 |
msgid "Lazy Load Iframe Parent Class Name Excludes"
|
1358 |
msgstr ""
|
1359 |
|
1360 |
+
#: src/lang.cls.php:154
|
1361 |
msgid "Lazy Load URI Excludes"
|
1362 |
msgstr ""
|
1363 |
|
1364 |
+
#: src/lang.cls.php:155
|
1365 |
msgid "LQIP Excludes"
|
1366 |
msgstr ""
|
1367 |
|
1368 |
+
#: src/lang.cls.php:156
|
1369 |
msgid "Basic Image Placeholder"
|
1370 |
msgstr ""
|
1371 |
|
1372 |
+
#: src/lang.cls.php:157
|
1373 |
msgid "Responsive Placeholder"
|
1374 |
msgstr ""
|
1375 |
|
1376 |
+
#: src/lang.cls.php:158
|
1377 |
msgid "Responsive Placeholder Color"
|
1378 |
msgstr ""
|
1379 |
|
1380 |
+
#: src/lang.cls.php:159
|
1381 |
msgid "Responsive Placeholder SVG"
|
1382 |
msgstr ""
|
1383 |
|
1384 |
+
#: src/lang.cls.php:160
|
1385 |
msgid "LQIP Cloud Generator"
|
1386 |
msgstr ""
|
1387 |
|
1388 |
+
#: src/lang.cls.php:161
|
1389 |
msgid "LQIP Quality"
|
1390 |
msgstr ""
|
1391 |
|
1392 |
+
#: src/lang.cls.php:162
|
1393 |
msgid "LQIP Minimum Dimensions"
|
1394 |
msgstr ""
|
1395 |
|
1396 |
+
#: src/lang.cls.php:164
|
1397 |
msgid "Generate LQIP In Background"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
+
#: src/lang.cls.php:165
|
1401 |
msgid "Lazy Load Iframes"
|
1402 |
msgstr ""
|
1403 |
|
1404 |
+
#: src/lang.cls.php:166
|
1405 |
msgid "Add Missing Sizes"
|
1406 |
msgstr ""
|
1407 |
|
1408 |
+
#: src/lang.cls.php:167
|
1409 |
msgid "Inline Lazy Load Images Library"
|
1410 |
msgstr ""
|
1411 |
|
1412 |
+
#: src/lang.cls.php:168
|
1413 |
msgid "Auto Request Cron"
|
1414 |
msgstr ""
|
1415 |
|
1416 |
+
#: src/lang.cls.php:169
|
1417 |
msgid "Auto Pull Cron"
|
1418 |
msgstr ""
|
1419 |
|
1420 |
+
#: src/lang.cls.php:170
|
1421 |
msgid "Optimize Original Images"
|
1422 |
msgstr ""
|
1423 |
|
1424 |
+
#: src/lang.cls.php:171
|
1425 |
msgid "Remove Original Backups"
|
1426 |
msgstr ""
|
1427 |
|
1428 |
+
#: src/lang.cls.php:172
|
1429 |
msgid "Create WebP Versions"
|
1430 |
msgstr ""
|
1431 |
|
1432 |
+
#: src/lang.cls.php:173
|
1433 |
msgid "Optimize Losslessly"
|
1434 |
msgstr ""
|
1435 |
|
1436 |
+
#: src/lang.cls.php:174
|
1437 |
msgid "Preserve EXIF/XMP data"
|
1438 |
msgstr ""
|
1439 |
|
1440 |
+
#: src/lang.cls.php:175
|
1441 |
msgid "WebP Attribute To Replace"
|
1442 |
msgstr ""
|
1443 |
|
1444 |
+
#: src/lang.cls.php:176
|
1445 |
msgid "WebP For Extra srcset"
|
1446 |
msgstr ""
|
1447 |
|
1448 |
+
#: src/lang.cls.php:177
|
1449 |
msgid "WordPress Image Quality Control"
|
1450 |
msgstr ""
|
1451 |
|
1452 |
+
#: src/lang.cls.php:178 tpl/esi_widget_edit.php:36
|
1453 |
msgid "Enable ESI"
|
1454 |
msgstr ""
|
1455 |
|
1456 |
+
#: src/lang.cls.php:179
|
1457 |
msgid "Cache Admin Bar"
|
1458 |
msgstr ""
|
1459 |
|
1460 |
+
#: src/lang.cls.php:180
|
1461 |
msgid "Cache Comment Form"
|
1462 |
msgstr ""
|
1463 |
|
1464 |
+
#: src/lang.cls.php:181
|
1465 |
msgid "ESI Nonces"
|
1466 |
msgstr ""
|
1467 |
|
1468 |
+
#: src/lang.cls.php:182 tpl/page_optm/settings_css.tpl.php:109
|
1469 |
+
#: tpl/page_optm/settings_css.tpl.php:232
|
1470 |
msgid "Vary Group"
|
1471 |
msgstr ""
|
1472 |
|
1473 |
+
#: src/lang.cls.php:183
|
1474 |
msgid "Purge All Hooks"
|
1475 |
msgstr ""
|
1476 |
|
1477 |
+
#: src/lang.cls.php:184
|
1478 |
msgid "Improve HTTP/HTTPS Compatibility"
|
1479 |
msgstr ""
|
1480 |
|
1481 |
+
#: src/lang.cls.php:185
|
1482 |
msgid "Instant Click"
|
1483 |
msgstr ""
|
1484 |
|
1485 |
+
#: src/lang.cls.php:186
|
1486 |
msgid "Do Not Cache Cookies"
|
1487 |
msgstr ""
|
1488 |
|
1489 |
+
#: src/lang.cls.php:187
|
1490 |
msgid "Do Not Cache User Agents"
|
1491 |
msgstr ""
|
1492 |
|
1493 |
+
#: src/lang.cls.php:188
|
1494 |
msgid "Login Cookie"
|
1495 |
msgstr ""
|
1496 |
|
1497 |
+
#: src/lang.cls.php:189
|
1498 |
msgid "Image WebP Replacement"
|
1499 |
msgstr ""
|
1500 |
|
1501 |
+
#: src/lang.cls.php:191
|
1502 |
msgid "Frontend .htaccess Path"
|
1503 |
msgstr ""
|
1504 |
|
1505 |
+
#: src/lang.cls.php:192
|
1506 |
msgid "Backend .htaccess Path"
|
1507 |
msgstr ""
|
1508 |
|
1509 |
+
#: src/lang.cls.php:193
|
1510 |
msgid "Frontend Heartbeat Control"
|
1511 |
msgstr ""
|
1512 |
|
1513 |
+
#: src/lang.cls.php:194
|
1514 |
msgid "Frontend Heartbeat TTL"
|
1515 |
msgstr ""
|
1516 |
|
1517 |
+
#: src/lang.cls.php:195
|
1518 |
msgid "Backend Heartbeat Control"
|
1519 |
msgstr ""
|
1520 |
|
1521 |
+
#: src/lang.cls.php:196
|
1522 |
msgid "Backend Heartbeat TTL"
|
1523 |
msgstr ""
|
1524 |
|
1525 |
+
#: src/lang.cls.php:197
|
1526 |
msgid "Editor Heartbeat"
|
1527 |
msgstr ""
|
1528 |
|
1529 |
+
#: src/lang.cls.php:198
|
1530 |
msgid "Editor Heartbeat TTL"
|
1531 |
msgstr ""
|
1532 |
|
1533 |
+
#: src/lang.cls.php:200
|
1534 |
msgid "QUIC.cloud CDN"
|
1535 |
msgstr ""
|
1536 |
|
1537 |
+
#: src/lang.cls.php:201
|
1538 |
msgid "Use CDN Mapping"
|
1539 |
msgstr ""
|
1540 |
|
1541 |
+
#: src/lang.cls.php:202
|
1542 |
msgid "CDN URL"
|
1543 |
msgstr ""
|
1544 |
|
1545 |
+
#: src/lang.cls.php:203
|
1546 |
msgid "Include Images"
|
1547 |
msgstr ""
|
1548 |
|
1549 |
+
#: src/lang.cls.php:204
|
1550 |
msgid "Include CSS"
|
1551 |
msgstr ""
|
1552 |
|
1553 |
+
#: src/lang.cls.php:205
|
1554 |
msgid "Include JS"
|
1555 |
msgstr ""
|
1556 |
|
1557 |
+
#: src/lang.cls.php:206 tpl/cdn/settings.tpl.php:102
|
1558 |
msgid "Include File Types"
|
1559 |
msgstr ""
|
1560 |
|
1561 |
+
#: src/lang.cls.php:207
|
1562 |
msgid "HTML Attribute To Replace"
|
1563 |
msgstr ""
|
1564 |
|
1565 |
+
#: src/lang.cls.php:208
|
1566 |
msgid "Original URLs"
|
1567 |
msgstr ""
|
1568 |
|
1569 |
+
#: src/lang.cls.php:209
|
1570 |
msgid "Included Directories"
|
1571 |
msgstr ""
|
1572 |
|
1573 |
+
#: src/lang.cls.php:210
|
1574 |
msgid "Exclude Path"
|
1575 |
msgstr ""
|
1576 |
|
1577 |
+
#: src/lang.cls.php:211
|
1578 |
msgid "Cloudflare API"
|
1579 |
msgstr ""
|
1580 |
|
1581 |
+
#: src/lang.cls.php:214
|
1582 |
msgid "Delay"
|
1583 |
msgstr ""
|
1584 |
|
1585 |
+
#: src/lang.cls.php:215
|
1586 |
msgid "Run Duration"
|
1587 |
msgstr ""
|
1588 |
|
1589 |
+
#: src/lang.cls.php:216
|
1590 |
msgid "Interval Between Runs"
|
1591 |
msgstr ""
|
1592 |
|
1593 |
+
#: src/lang.cls.php:217
|
1594 |
msgid "Crawl Interval"
|
1595 |
msgstr ""
|
1596 |
|
1597 |
+
#: src/lang.cls.php:218
|
1598 |
msgid "Threads"
|
1599 |
msgstr ""
|
1600 |
|
1601 |
+
#: src/lang.cls.php:219
|
1602 |
msgid "Timeout"
|
1603 |
msgstr ""
|
1604 |
|
1605 |
+
#: src/lang.cls.php:220
|
1606 |
msgid "Server Load Limit"
|
1607 |
msgstr ""
|
1608 |
|
1609 |
+
#: src/lang.cls.php:221
|
1610 |
msgid "Role Simulation"
|
1611 |
msgstr ""
|
1612 |
|
1613 |
+
#: src/lang.cls.php:222
|
1614 |
msgid "Cookie Simulation"
|
1615 |
msgstr ""
|
1616 |
|
1617 |
+
#: src/lang.cls.php:223
|
1618 |
msgid "Custom Sitemap"
|
1619 |
msgstr ""
|
1620 |
|
1621 |
+
#: src/lang.cls.php:224
|
1622 |
msgid "Drop Domain from Sitemap"
|
1623 |
msgstr ""
|
1624 |
|
1625 |
+
#: src/lang.cls.php:225
|
1626 |
msgid "Sitemap Timeout"
|
1627 |
msgstr ""
|
1628 |
|
1629 |
+
#: src/lang.cls.php:227 tpl/inc/disabled_all.php:5
|
1630 |
msgid "Disable All Features"
|
1631 |
msgstr ""
|
1632 |
|
1633 |
+
#: src/lang.cls.php:228 tpl/toolbox/log_viewer.tpl.php:7
|
1634 |
msgid "Debug Log"
|
1635 |
msgstr ""
|
1636 |
|
1637 |
+
#: src/lang.cls.php:229
|
1638 |
msgid "Admin IPs"
|
1639 |
msgstr ""
|
1640 |
|
1641 |
+
#: src/lang.cls.php:230
|
1642 |
msgid "Debug Level"
|
1643 |
msgstr ""
|
1644 |
|
1645 |
+
#: src/lang.cls.php:231
|
1646 |
msgid "Log File Size Limit"
|
1647 |
msgstr ""
|
1648 |
|
1649 |
+
#: src/lang.cls.php:232
|
1650 |
msgid "Log Cookies"
|
1651 |
msgstr ""
|
1652 |
|
1653 |
+
#: src/lang.cls.php:233
|
1654 |
msgid "Collapse Query Strings"
|
1655 |
msgstr ""
|
1656 |
|
1657 |
+
#: src/lang.cls.php:234
|
1658 |
msgid "Debug URI Includes"
|
1659 |
msgstr ""
|
1660 |
|
1661 |
+
#: src/lang.cls.php:235
|
1662 |
msgid "Debug URI Excludes"
|
1663 |
msgstr ""
|
1664 |
|
1665 |
+
#: src/lang.cls.php:237
|
1666 |
msgid "Revisions Max Number"
|
1667 |
msgstr ""
|
1668 |
|
1669 |
+
#: src/lang.cls.php:238
|
1670 |
msgid "Revisions Max Age"
|
1671 |
msgstr ""
|
1672 |
|
1855 |
msgid " %s ago"
|
1856 |
msgstr ""
|
1857 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1858 |
#: thirdparty/woocommerce.content.tpl.php:16
|
1859 |
msgid "WooCommerce Settings"
|
1860 |
msgstr ""
|
1979 |
msgid "Dismiss this notice"
|
1980 |
msgstr ""
|
1981 |
|
1982 |
+
#. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 4.4) #-#-#-#-#
|
1983 |
#. Plugin Name of the plugin/theme
|
1984 |
#: tpl/banner/new_version.php:59 tpl/banner/new_version_dev.tpl.php:12
|
1985 |
#: tpl/cache/more_settings_tip.tpl.php:15 tpl/inc/admin_footer.php:8
|
1995 |
msgstr ""
|
1996 |
|
1997 |
#: tpl/banner/new_version.php:71 tpl/banner/new_version_dev.tpl.php:24
|
1998 |
+
#: tpl/toolbox/beta_test.tpl.php:54
|
1999 |
msgid "Upgrade"
|
2000 |
msgstr ""
|
2001 |
|
2301 |
#: tpl/cache/settings-esi.tpl.php:35 tpl/cdn/manage.tpl.php:21
|
2302 |
#: tpl/crawler/summary.tpl.php:48 tpl/inc/check_cache_disabled.php:31
|
2303 |
#: tpl/inc/check_if_network_disable_all.php:18
|
2304 |
+
#: tpl/page_optm/settings_css.tpl.php:59 tpl/page_optm/settings_css.tpl.php:177
|
2305 |
#: tpl/page_optm/settings_localization.tpl.php:11
|
2306 |
msgid "WARNING"
|
2307 |
msgstr ""
|
2340 |
#: tpl/page_optm/settings_media_exc.tpl.php:27
|
2341 |
#: tpl/page_optm/settings_tuning.tpl.php:36
|
2342 |
#: tpl/page_optm/settings_tuning.tpl.php:57
|
2343 |
+
#: tpl/page_optm/settings_tuning.tpl.php:102
|
2344 |
+
#: tpl/page_optm/settings_tuning.tpl.php:163
|
2345 |
+
#: tpl/page_optm/settings_tuning.tpl.php:184
|
2346 |
msgid "Filter %s is supported."
|
2347 |
msgstr ""
|
2348 |
|
2624 |
msgid "Serve a separate cache copy for mobile visitors."
|
2625 |
msgstr ""
|
2626 |
|
2627 |
+
#: tpl/cache/settings_inc.cache_mobile.tpl.php:43
|
2628 |
msgid "Htaccess did not match configuration option."
|
2629 |
msgstr ""
|
2630 |
|
2631 |
+
#: tpl/cache/settings_inc.cache_mobile.tpl.php:44
|
2632 |
msgid "Htaccess rule is: %s"
|
2633 |
msgstr ""
|
2634 |
|
2635 |
+
#: tpl/cache/settings_inc.cache_mobile.tpl.php:71
|
2636 |
msgid "If %1$s is %2$s, then %3$s must be populated!"
|
2637 |
msgstr ""
|
2638 |
|
3054 |
msgstr ""
|
3055 |
|
3056 |
#: tpl/crawler/blacklist.tpl.php:57 tpl/crawler/map.tpl.php:70
|
3057 |
+
#: tpl/crawler/summary.tpl.php:160 tpl/crawler/summary.tpl.php:184
|
3058 |
msgid "Blacklisted"
|
3059 |
msgstr ""
|
3060 |
|
3310 |
msgstr ""
|
3311 |
|
3312 |
#: tpl/crawler/summary.tpl.php:125
|
3313 |
+
msgid "Activate"
|
3314 |
+
msgstr ""
|
3315 |
+
|
3316 |
+
#: tpl/crawler/summary.tpl.php:126
|
3317 |
msgid "Running"
|
3318 |
msgstr ""
|
3319 |
|
3320 |
+
#: tpl/crawler/summary.tpl.php:157
|
3321 |
msgid "Waiting"
|
3322 |
msgstr ""
|
3323 |
|
3324 |
+
#: tpl/crawler/summary.tpl.php:158
|
3325 |
msgid "Hit"
|
3326 |
msgstr ""
|
3327 |
|
3328 |
+
#: tpl/crawler/summary.tpl.php:159
|
3329 |
msgid "Miss"
|
3330 |
msgstr ""
|
3331 |
|
3332 |
+
#: tpl/crawler/summary.tpl.php:170
|
3333 |
msgid "running"
|
3334 |
msgstr ""
|
3335 |
|
3336 |
+
#: tpl/crawler/summary.tpl.php:181
|
3337 |
msgid "Waiting to be Crawled"
|
3338 |
msgstr ""
|
3339 |
|
3340 |
+
#: tpl/crawler/summary.tpl.php:182
|
3341 |
msgid "Already Cached"
|
3342 |
msgstr ""
|
3343 |
|
3344 |
+
#: tpl/crawler/summary.tpl.php:183
|
3345 |
msgid "Successfully Crawled"
|
3346 |
msgstr ""
|
3347 |
|
3348 |
+
#: tpl/crawler/summary.tpl.php:188
|
3349 |
msgid "Run frequency is set by the Interval Between Runs setting."
|
3350 |
msgstr ""
|
3351 |
|
3352 |
+
#: tpl/crawler/summary.tpl.php:189
|
3353 |
msgid "Crawlers cannot run concurrently."
|
3354 |
msgstr ""
|
3355 |
|
3356 |
+
#: tpl/crawler/summary.tpl.php:190
|
3357 |
msgid ""
|
3358 |
" If both the cron and a manual run start at similar times, the first to "
|
3359 |
"be started will take precedence."
|
3360 |
msgstr ""
|
3361 |
|
3362 |
+
#: tpl/crawler/summary.tpl.php:191
|
3363 |
msgid ""
|
3364 |
"Please see <a %s>Hooking WP-Cron Into the System Task Scheduler</a> to learn "
|
3365 |
"how to create the system cron task."
|
3366 |
msgstr ""
|
3367 |
|
3368 |
+
#: tpl/crawler/summary.tpl.php:196
|
3369 |
msgid "Watch Crawler Status"
|
3370 |
msgstr ""
|
3371 |
|
3372 |
+
#: tpl/crawler/summary.tpl.php:203
|
3373 |
msgid "Show crawler status"
|
3374 |
msgstr ""
|
3375 |
|
3376 |
+
#: tpl/crawler/summary.tpl.php:221
|
3377 |
msgid "No crawler meta file generated yet"
|
3378 |
msgstr ""
|
3379 |
|
3444 |
msgstr ""
|
3445 |
|
3446 |
#: tpl/dash/dashboard.tpl.php:227 tpl/img_optm/summary.tpl.php:57
|
3447 |
+
#: tpl/page_optm/settings_css.tpl.php:90 tpl/page_optm/settings_css.tpl.php:213
|
3448 |
#: tpl/page_optm/settings_media.tpl.php:176
|
3449 |
msgid ""
|
3450 |
"Are you sure you want to redetect the closest cloud server for this service?"
|
3501 |
msgstr ""
|
3502 |
|
3503 |
#: tpl/dash/dashboard.tpl.php:437 tpl/dash/dashboard.tpl.php:470
|
3504 |
+
#: tpl/dash/dashboard.tpl.php:503 tpl/page_optm/settings_css.tpl.php:81
|
3505 |
+
#: tpl/page_optm/settings_css.tpl.php:204
|
3506 |
#: tpl/page_optm/settings_media.tpl.php:170
|
3507 |
msgid "Last generated"
|
3508 |
msgstr ""
|
3920 |
"or tablet visitors."
|
3921 |
msgstr ""
|
3922 |
|
3923 |
+
#: tpl/general/settings_inc.guest.tpl.php:30
|
3924 |
msgid "Your %1s quota on %2s will still be in use."
|
3925 |
msgstr ""
|
3926 |
|
4017 |
msgid "The image compression quality setting of WordPress out of 100."
|
4018 |
msgstr ""
|
4019 |
|
4020 |
+
#: tpl/img_optm/summary.tpl.php:57 tpl/page_optm/settings_css.tpl.php:90
|
4021 |
+
#: tpl/page_optm/settings_css.tpl.php:213
|
4022 |
#: tpl/page_optm/settings_media.tpl.php:176
|
4023 |
msgid "Current closest Cloud server is %s. Click to redetect."
|
4024 |
msgstr ""
|
4278 |
"page."
|
4279 |
msgstr ""
|
4280 |
|
4281 |
+
#: tpl/inc/in_upgrading.php:5
|
4282 |
+
msgid ""
|
4283 |
+
"LiteSpeed cache plugin upgraded. Please refresh the page to complete the "
|
4284 |
+
"configuration data upgrade."
|
4285 |
+
msgstr ""
|
4286 |
+
|
4287 |
#: tpl/inc/show_display_installed.php:5
|
4288 |
msgid "LiteSpeed Cache plugin is installed!"
|
4289 |
msgstr ""
|
4423 |
"queue."
|
4424 |
msgstr ""
|
4425 |
|
4426 |
+
#: tpl/page_optm/settings_css.tpl.php:71
|
4427 |
+
msgid "This option is bypassed because %1$s option is %2$s."
|
4428 |
+
msgstr ""
|
4429 |
+
|
4430 |
+
#: tpl/page_optm/settings_css.tpl.php:84 tpl/page_optm/settings_css.tpl.php:207
|
4431 |
msgid "Last requested cost"
|
4432 |
msgstr ""
|
4433 |
|
4434 |
+
#: tpl/page_optm/settings_css.tpl.php:96 tpl/page_optm/settings_css.tpl.php:219
|
4435 |
msgid "URL list in %s queue waiting for cron"
|
4436 |
msgstr ""
|
4437 |
|
4438 |
+
#: tpl/page_optm/settings_css.tpl.php:117
|
4439 |
+
#: tpl/page_optm/settings_css.tpl.php:240
|
4440 |
msgid "Run %s Queue Manually"
|
4441 |
msgstr ""
|
4442 |
|
4443 |
+
#: tpl/page_optm/settings_css.tpl.php:133
|
4444 |
+
msgid ""
|
4445 |
+
"Inline UCSS to reduce the extra CSS file loading. This option will not be "
|
4446 |
+
"automatically turned on for %1$s pages. To use it on %1$s pages, please set "
|
4447 |
+
"it to ON."
|
4448 |
+
msgstr ""
|
4449 |
+
|
4450 |
+
#: tpl/page_optm/settings_css.tpl.php:135
|
4451 |
+
msgid "This option will automatically bypass %s option."
|
4452 |
+
msgstr ""
|
4453 |
+
|
4454 |
+
#: tpl/page_optm/settings_css.tpl.php:149
|
4455 |
msgid ""
|
4456 |
"Include external CSS and inline CSS in combined file when %1$s is also "
|
4457 |
"enabled. This option helps maintain the priorities of CSS, which should "
|
4458 |
"minimize potential errors caused by CSS Combine."
|
4459 |
msgstr ""
|
4460 |
|
4461 |
+
#: tpl/page_optm/settings_css.tpl.php:162
|
4462 |
msgid ""
|
4463 |
"Pre-send internal CSS files to the browser before they are requested. "
|
4464 |
"(Requires the HTTP/2 protocol)"
|
4465 |
msgstr ""
|
4466 |
|
4467 |
+
#: tpl/page_optm/settings_css.tpl.php:181
|
4468 |
msgid "Optimize CSS delivery."
|
4469 |
msgstr ""
|
4470 |
|
4471 |
+
#: tpl/page_optm/settings_css.tpl.php:182
|
4472 |
#: tpl/page_optm/settings_html.tpl.php:129 tpl/page_optm/settings_js.tpl.php:80
|
4473 |
#: tpl/page_optm/settings_media.tpl.php:243
|
4474 |
msgid ""
|
4476 |
"PageSpeed."
|
4477 |
msgstr ""
|
4478 |
|
4479 |
+
#: tpl/page_optm/settings_css.tpl.php:183
|
4480 |
msgid ""
|
4481 |
"Use QUIC.cloud online service to generate critical CSS and load remaining "
|
4482 |
"CSS asynchronously."
|
4483 |
msgstr ""
|
4484 |
|
4485 |
+
#: tpl/page_optm/settings_css.tpl.php:185
|
4486 |
msgid ""
|
4487 |
"Automatic generation of critical CSS is in the background via a cron-based "
|
4488 |
"queue."
|
4489 |
msgstr ""
|
4490 |
|
4491 |
+
#: tpl/page_optm/settings_css.tpl.php:186
|
4492 |
msgid ""
|
4493 |
"When this option is turned %s, it will also load Google Fonts asynchronously."
|
4494 |
msgstr ""
|
4495 |
|
4496 |
+
#: tpl/page_optm/settings_css.tpl.php:189
|
4497 |
msgid "Elements with attribute %s in HTML code will be excluded."
|
4498 |
msgstr ""
|
4499 |
|
4500 |
+
#: tpl/page_optm/settings_css.tpl.php:194
|
4501 |
+
msgid "This option is bypassed due to %s option."
|
4502 |
+
msgstr ""
|
4503 |
+
|
4504 |
+
#: tpl/page_optm/settings_css.tpl.php:255
|
4505 |
msgid ""
|
4506 |
"Disable this option to generate CCSS per Post Type instead of per page. This "
|
4507 |
"can save significant CCSS quota, however it may result in incorrect CSS "
|
4508 |
"styling if your site uses a page builder."
|
4509 |
msgstr ""
|
4510 |
|
4511 |
+
#: tpl/page_optm/settings_css.tpl.php:268
|
4512 |
msgid "This will inline the asynchronous CSS library to avoid render blocking."
|
4513 |
msgstr ""
|
4514 |
|
4515 |
+
#: tpl/page_optm/settings_css.tpl.php:279
|
4516 |
msgid "Default"
|
4517 |
msgstr ""
|
4518 |
|
4519 |
+
#: tpl/page_optm/settings_css.tpl.php:281
|
4520 |
msgid ""
|
4521 |
"Set this to append %1$s to all %2$s rules before caching CSS to specify how "
|
4522 |
"fonts should be displayed while being downloaded."
|
4523 |
msgstr ""
|
4524 |
|
4525 |
+
#: tpl/page_optm/settings_css.tpl.php:282
|
4526 |
msgid "%s is recommended."
|
4527 |
msgstr ""
|
4528 |
|
4529 |
+
#: tpl/page_optm/settings_css.tpl.php:282
|
4530 |
msgid "Swap"
|
4531 |
msgstr ""
|
4532 |
|
4828 |
#: tpl/page_optm/settings_media_exc.tpl.php:28
|
4829 |
#: tpl/page_optm/settings_tuning.tpl.php:37
|
4830 |
#: tpl/page_optm/settings_tuning.tpl.php:58
|
4831 |
+
#: tpl/page_optm/settings_tuning.tpl.php:164
|
4832 |
+
#: tpl/page_optm/settings_tuning.tpl.php:185
|
4833 |
msgid "Elements with attribute %s in html code will be excluded."
|
4834 |
msgstr ""
|
4835 |
|
4864 |
#: tpl/page_optm/settings_tuning.tpl.php:38
|
4865 |
#: tpl/page_optm/settings_tuning.tpl.php:59
|
4866 |
#: tpl/page_optm/settings_tuning.tpl.php:83
|
4867 |
+
#: tpl/page_optm/settings_tuning.tpl.php:165
|
4868 |
msgid "Predefined list will also be combined w/ the above settings"
|
4869 |
msgstr ""
|
4870 |
|
4891 |
msgstr ""
|
4892 |
|
4893 |
#: tpl/page_optm/settings_tuning.tpl.php:97
|
4894 |
+
msgid "Listed URI will not generate UCSS."
|
4895 |
+
msgstr ""
|
4896 |
+
|
4897 |
+
#: tpl/page_optm/settings_tuning.tpl.php:116
|
4898 |
msgid ""
|
4899 |
"List post types where each item of that type should have its own CCSS "
|
4900 |
"generated."
|
4901 |
msgstr ""
|
4902 |
|
4903 |
+
#: tpl/page_optm/settings_tuning.tpl.php:117
|
4904 |
msgid ""
|
4905 |
"For example, if every Page on the site has different formatting, enter %s in "
|
4906 |
"the box. Separate critical CSS files will be stored for every Page on the "
|
4907 |
"site."
|
4908 |
msgstr ""
|
4909 |
|
4910 |
+
#: tpl/page_optm/settings_tuning.tpl.php:131
|
4911 |
msgid ""
|
4912 |
"Separate critical CSS files will be generated for paths containing these "
|
4913 |
"strings."
|
4914 |
msgstr ""
|
4915 |
|
4916 |
+
#: tpl/page_optm/settings_tuning.tpl.php:145
|
4917 |
msgid "Specify critical CSS rules for above-the-fold content when enabling %s."
|
4918 |
msgstr ""
|
4919 |
|
4920 |
+
#: tpl/page_optm/settings_tuning.tpl.php:158
|
4921 |
msgid "Listed JS files or inline JS code will not be deferred."
|
4922 |
msgstr ""
|
4923 |
|
4924 |
+
#: tpl/page_optm/settings_tuning.tpl.php:179
|
4925 |
msgid "Listed JS files or inline JS code will not be optimized by %s."
|
4926 |
msgstr ""
|
4927 |
|
4928 |
+
#: tpl/page_optm/settings_tuning.tpl.php:199
|
4929 |
msgid "Prevent any optimization of listed pages."
|
4930 |
msgstr ""
|
4931 |
|
4932 |
+
#: tpl/page_optm/settings_tuning.tpl.php:213
|
4933 |
msgid ""
|
4934 |
"Only optimize pages for guest (not logged in) visitors. If turned this OFF, "
|
4935 |
"CSS/JS/CCSS files will be doubled by each user group."
|
4936 |
msgstr ""
|
4937 |
|
4938 |
+
#: tpl/page_optm/settings_tuning.tpl.php:225
|
4939 |
msgid "Selected roles will be excluded from all optimizations."
|
4940 |
msgstr ""
|
4941 |
|
4942 |
+
#: tpl/toolbox/beta_test.tpl.php:17
|
4943 |
msgid "Try GitHub Version"
|
4944 |
msgstr ""
|
4945 |
|
4946 |
+
#: tpl/toolbox/beta_test.tpl.php:21
|
4947 |
msgid ""
|
4948 |
"Use this section to switch plugin versions. To beta test a GitHub commit, "
|
4949 |
"enter the commit URL in the field below."
|
4950 |
msgstr ""
|
4951 |
|
4952 |
+
#: tpl/toolbox/beta_test.tpl.php:22
|
4953 |
msgid "Example"
|
4954 |
msgstr ""
|
4955 |
|
4956 |
+
#: tpl/toolbox/beta_test.tpl.php:26
|
4957 |
msgid "Use latest GitHub Dev commit"
|
4958 |
msgstr ""
|
4959 |
|
4960 |
+
#: tpl/toolbox/beta_test.tpl.php:28
|
4961 |
msgid "Use latest GitHub Master commit"
|
4962 |
msgstr ""
|
4963 |
|
4964 |
+
#: tpl/toolbox/beta_test.tpl.php:30 tpl/toolbox/beta_test.tpl.php:46
|
4965 |
msgid "Use latest WordPress release version"
|
4966 |
msgstr ""
|
4967 |
|
4968 |
+
#: tpl/toolbox/beta_test.tpl.php:30
|
4969 |
msgid "OR"
|
4970 |
msgstr ""
|
4971 |
|
4972 |
+
#: tpl/toolbox/beta_test.tpl.php:41
|
4973 |
msgid ""
|
4974 |
"Downgrade not recommended. May cause fatal error due to refactored code."
|
4975 |
msgstr ""
|
4976 |
|
4977 |
+
#: tpl/toolbox/beta_test.tpl.php:45
|
4978 |
msgid ""
|
4979 |
"Press the %s button to use the most recent GitHub commit. Master is for "
|
4980 |
"release candidate & Dev is for experimental testing."
|
4981 |
msgstr ""
|
4982 |
|
4983 |
+
#: tpl/toolbox/beta_test.tpl.php:45
|
4984 |
msgid "Use latest GitHub Dev/Master commit"
|
4985 |
msgstr ""
|
4986 |
|
4987 |
+
#: tpl/toolbox/beta_test.tpl.php:46
|
4988 |
msgid ""
|
4989 |
"Press the %s button to stop beta testing and go back to the current release "
|
4990 |
"from the WordPress Plugin Directory."
|
4991 |
msgstr ""
|
4992 |
|
4993 |
+
#: tpl/toolbox/beta_test.tpl.php:51
|
4994 |
msgid ""
|
4995 |
"In order to avoid an upgrade error, you must be using %1$s or later before "
|
4996 |
"you can upgrade to %2$s versions."
|
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.4
|
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.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
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ 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: 4.
|
7 |
License: GPLv3
|
8 |
License URI: http://www.gnu.org/licenses/gpl.html
|
9 |
|
@@ -249,6 +249,23 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The
|
|
249 |
|
250 |
== Changelog ==
|
251 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
= 4.3 - Aug 16 2021 =
|
253 |
* **UCSS** Separated UCSS Purge from CCSS Purge. (⭐ Contributed by Alice Tang #PR388)
|
254 |
* 🐞**Cloud** Fixed an issue where CCSS/UCSS quota data failed to update locally.
|
@@ -258,27 +275,27 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The
|
|
258 |
* **Cloud** CCSS/UCSS/LQIP queue now exits immediately when quota is depleted.
|
259 |
* **Cloud** Replaced separate `d/regionnodes` with a single `d/nodes` in the node list API for image optimization.
|
260 |
* **LQIP** Fixed an issue with LQIP network compatibility. (⭐ Contributed by Alice Tang #PR387)
|
261 |
-
* **GUEST** JS no longer preloads for Guest Optimization. (
|
262 |
-
* 🐞**Data** Fixed an issue where deleting the `cssjs` data folder causes a failure in the upgrade process. (
|
263 |
-
* **GUI** Fixed a potential dashboard PHP warning when no queue existed. (
|
264 |
* **GUI** Added daily quota on dashboard.
|
265 |
* **GUI** Added downgrade warning to Toolbox -> Beta Test.
|
266 |
* **GUI** Tuned `.litespeed-desc` class to full width in CSS.
|
267 |
-
* **Conf** `Preserve EXIF/XMP data` now defaults to ON due to copyright concerns. (
|
268 |
-
* 🐞**3rd** Fixed a PHP warning when using Google AMP w/ /amp as structure. (
|
269 |
|
270 |
= 4.2 - Jul 29 2021 =
|
271 |
* **Cloud** Auto redirect to a new node if the current node is not available anymore.
|
272 |
* **Cloud** Combined CCSS/UCSS to sub services of Page Optimization.
|
273 |
* **Cloud** Added a daily quota rate limit to help mitigate the heavy service load at the beginning of the month.
|
274 |
-
* **Cloud** Cached the node IP list in order to speed up security check. (
|
275 |
-
* 🐞**GUEST** Fixed an issue where Guest Mode remained enabled even when the UA setting is empty. (
|
276 |
* **GUEST** Guest Mode will no longer cache POST requests.
|
277 |
* **UCSS** Purging CSS/JS now purges the UCSS queue as well, to avoid failure when generating UCSS.
|
278 |
* **UCSS** Separated service entry `UCSS` from `CCSS`.
|
279 |
* **CCSS** Simplified `load_queue/save_queue/build_filepath_prefix` functions. (⭐ Contributed by Alice Tang #PR373)
|
280 |
* **CCSS** If CCSS request fails, details are now saved in the CSS file.
|
281 |
-
* **CCSS** Renamed CCSS ID in inline HTML from `litespeed-optm-css-rules` to `litespeed-ccss`. (
|
282 |
* **Page Optimize** CCSS/UCSS now supports Cloud queue/notify for asynchronous generation.
|
283 |
* **Page Optimize** Simplified CCSS/UCSS generation function.
|
284 |
* **Page Optimize** Added the ability to cancel CCSS/UCSS Cloud requests.
|
@@ -290,44 +307,44 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The
|
|
290 |
* **API** Renamed `LITESPEED_BYPASS_OPTM` to `LITESPEED_NO_OPTM` for Page Optimization.
|
291 |
* **Toolbox** Dropped v3.6.4- versions in Beta Test as they will cause a fatal error in downgrade.
|
292 |
* **GUI** Added shortcut links to each section on the Dashboard.
|
293 |
-
* **GUI** Added UCSS whitelist usage description. (
|
294 |
* **GUI** Showed the default recommended values for Guest Mode UA/IPs.
|
295 |
* **3rd** Fixed AMP plugin compatibility. (⭐ Contributed by Alice Tang #PR368)
|
296 |
* **3rd** Bypassed all page optimization including CDN/WebP for AMP pages.
|
297 |
-
* **3rd** Improved compatibility with All in One SEO plugin sitemap. (
|
298 |
-
* **3rd** Added wsform nonce. (#365
|
299 |
-
* **3rd** Added Easy Digital Download (EDD) & WP Menu Cart nonce. (#PR366
|
300 |
-
* **3rd** Improved compatibility w/ Restrict Content Pro. (
|
301 |
-
* **3rd** Improved compatibility w/ Gravity Forms. (
|
302 |
|
303 |
= 4.1 - Jun 25 2021 =
|
304 |
* 🌱**UCSS/CCSS/LQIP** Moved queue storage to file system from database wp-options table to lessen the IO load. (#633504)
|
305 |
-
* 🌱**3rd** Added an option to disable ESI for the WooCommerce Cart. (#358
|
306 |
-
* **ESI** Fixed an ESI nonce issue introduced in v4.0. (
|
307 |
* **Object** Used new `.litespeed_conf.dat` instead of `.object-cache.ini` for object cache configuration storage.
|
308 |
* **Conf** Now updating related files after plugin upgrade and not just after activation.
|
309 |
-
* 🌱**Guest** Added a Guest Mode JS Excludes option. (
|
310 |
* **Guest** Guest Mode now uses a lightweight script to update guest vary for reduced server load.
|
311 |
* **Guest** Guest Mode now adds missing image dimensions.
|
312 |
* **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.
|
313 |
* **Guest** Guest vary update request will no longer be sent if `lscache_vary` is already set.
|
314 |
* **Guest** Added a Configurable Guest Mode UA/IP under the Tuning tab in the General menu.
|
315 |
-
* **Guest** Guest Mode now allows cron to be hooked, even when UCSS/CCSS options are off. (#338437
|
316 |
* **Guest** Simplified the vary generation process under Guest Mode.
|
317 |
-
* **Guest** Added a Guest Mode HTML comment for easier debugging. (
|
318 |
* **Guest** Guest vary update ajax now bypasses potential POST cache.
|
319 |
-
* **CCSS** Added back the options `Separate CCSS Cache Post Types` and `Separate CCSS Cache URIs`. (
|
320 |
* **CCSS** CCSS/UCSS queue is now limited to a maximum of 500 entries.
|
321 |
* **Control** The cache control constant `LSCACHE_NO_CACHE` will now have a higher priority than the Forced Public Cache setting.
|
322 |
* **Crawler** The Crawler can now crawl Guest Mode pages.
|
323 |
* **Crawler** Fixed a potential XSS vulnerability in the Crawler settings. (#927355)
|
324 |
-
* **Crawler** The Crawler now supports a cookie value of `_null`. (
|
325 |
* **Media** Updated the default value for the Responsive Placeholder SVG to be transparent.
|
326 |
* **Media** WebP images in the background may now be served in Guest Mode.
|
327 |
* **Media** WebP images in CSS may now be bypassed if the requesting Guest Mode client doesn't support WebP.
|
328 |
* **Media** Fixed empty default image placeholder under Guest Mode.
|
329 |
-
* 🐞**Image Optimize** Changed the missing `$_POST` to `$post_data` so the database status is properly updated. (#345
|
330 |
-
* **Import** Export file is now readable to allow importing of partial configurations. (
|
331 |
* **Page Optimize** Fixed W3 validator errors in Guest Mode. (#61393817)
|
332 |
* **3rd** A fatal WooCommerce error is no longer triggered by a custom theme reusing a previous LSCWP cache detection tag.
|
333 |
* **3rd** AMP may now bypass Guest Mode automatically.
|
@@ -336,53 +353,53 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The
|
|
336 |
* **Lang** Corrected a missing language folder.
|
337 |
* **GUI** Added a CCSS/UCSS loading page visualization. (⭐ Contributed by Astrid Wang & Anna Feng #PR360)
|
338 |
* **GUI** Added a warning to indicate when Guest Mode CCSS/UCSS quota is in use. (Contributed by Astrid Wang & Anna Feng #PR361)
|
339 |
-
* **GUI** Added a `litespeed-info` text color. (
|
340 |
-
* **GUI** Implemented various UI/UX improvements. (
|
341 |
-
* **GUI** Duplicate cloud service messages with the same content will only display once now. (
|
342 |
* **GUI** Added a WebP replacement warning for Guest Mode Optimization if WebP replacement is off.
|
343 |
-
* **Misc** Dropped `wp_assets` from distribution to reduce the package size. (
|
344 |
* **Misc** Increased the new version and score detection intervals.
|
345 |
-
* **Misc** Optimized WP Assets images. (#352
|
346 |
* **Debug** Dropped the redundant error_log debug info.
|
347 |
|
348 |
= 4.0 - Apr 30 2021 =
|
349 |
* 🌱🌱🌱**Guest** Introduced `Guest Mode` for instantly cacheable content on the first visit.
|
350 |
* 🌱**UCSS** Added a new service: `Unique CSS`, to drop unused CSS from elements from combined CSS
|
351 |
-
* 🌱**CCSS** Added `HTML Lazyload` option. (
|
352 |
* 🌱**CCSS** Added `CCSS Per URL` option to allow Critical CSS to be generated for each page instead of for each Post Type.
|
353 |
-
* 🌱**Media** Added `Add Missing Sizes` setting for improving Cumulative Layout Shift. (
|
354 |
-
* 🌱**JS** Switched to new JS minification library for better compression and compatibility w/ template literals. (
|
355 |
* **Media** WebP may now be replaced in CSS.
|
356 |
-
* **Media** Can now drop image tags in noscript to avoid lazyload. (
|
357 |
* **Media** Bypass optimization if a page is not cacheable.
|
358 |
-
* **Image Optimize** Auto hook to `wp_update_attachment_metadata` to automate image gathering process, and to handle the new thumbnail generation after images are uploaded. (
|
359 |
* **Image Optimize** Repeated image thumbnails won't be gathered anymore.
|
360 |
* **Image Optimize** Simplified the rescan/gather/upload_hook for existing image detection.
|
361 |
-
* **Image Optimize** Fixed the duplicated optimize size records in the postmeta table. (
|
362 |
-
* **Image Optimize** Allow either JSON POST request or normal form request in `notify_img`. (
|
363 |
-
* **Image Optimize** Optimized SQL query for better efficiency. (
|
364 |
* **Image Optimize** Fixed issue where rescan mass created duplicate images. (#954399)
|
365 |
* **Image Optimize** Image optimization pie will not show 100% anymore if there is still a small amount in the unfinished queue.
|
366 |
* **Image Optimize** WebP generation defaults to ON for Guest Mode.
|
367 |
* **Image Optimize** `Priority Line` package now can have smaller request interval.
|
368 |
-
* **ESI** Disable ESI when page is not cacheable. (
|
369 |
-
* **ESI** Fixed an issue where Divi was disabling all in edit mode, but couldn't disable ESI. (
|
370 |
* **ESI** ESI init moved under `init` hook from `plugin_loaded` hook.
|
371 |
-
* **CDN** Add basic support for CloudFlare API Tokens (
|
372 |
* **CSS** Simplified `Font Display Optimization` option.
|
373 |
-
* **CSS** Fixed manual cron timeout issue. (
|
374 |
-
* **CSS** Inline CSS may now use `data-no-optimize` to be excluded from optimization. (
|
375 |
* **JS** Combined `Load JS Defer` and `Load Inline JS Defer` options.
|
376 |
* **JS** Forced async to defer.
|
377 |
* **JS** Moved Google Analytics JS from constant default to setting default for removal.
|
378 |
-
* **JS** Fixed potential JS parsing issue caused by JS src being changed to data-src by other plugins. (
|
379 |
-
* **JS** Excluded spotlight from JS optimize. (
|
380 |
* **CCSS** Fixed CCSS/UCSS manual cron timeout issue.
|
381 |
* **CCSS** Only 10 items will be kept for CCSS history.
|
382 |
* **CCSS** The appearance of CCSS Purge in the topbar menu will be determined by the existance of CCSS cache, and not the setting only.
|
383 |
* **CCSS** To avoid stuck queues when the current request keeps failing, the CCSS queue will always drop once requested.
|
384 |
* **CCSS** CCSS will no longer hide adminbar.
|
385 |
-
* **CCSS** CCSS may now be separate for network subsites. (
|
386 |
* **CCSS** Gave CCSS a unique filename per URL per user role per subsite.
|
387 |
* **CCSS** Dropped `Separate CCSS Cache Post Types` option.
|
388 |
* **CCSS** Dropped `Separate CCSS Cache URIs` option.
|
@@ -406,7 +423,7 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The
|
|
406 |
* **Vary** 3rd party vary cookies will not append into .htaccess anymore but only present in response vary header if in use.
|
407 |
* **Vary** Dropped function `append()`.
|
408 |
* **Vary** Commenter cookie is now considered cacheable.
|
409 |
-
* **Crawler** Minor update to crawler user agent to accommodate mobile_detect.php (
|
410 |
* **Data** Added a table truncate function.
|
411 |
* **Data** Added new tables url & url_file.
|
412 |
* **Data** Dropped cssjs table.
|
@@ -419,14 +436,14 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The
|
|
419 |
* **Page Optimize** Bypass optimization if page not cacheable.
|
420 |
* **Page Optimize** Purge CSS/JS will purge the `url_file` table too.
|
421 |
* **Page Optimize** Optionally store a vary with a shorter value.
|
422 |
-
* **Page Optimize** Removing query strings will no longer affect external assets. (
|
423 |
* **Page Optimize** Better regex for optimization parsing.
|
424 |
-
* **Page Optimize** Eliminated w3 validator for DNS prefetch and duplicated ID errors. (
|
425 |
* **Page Optimize** New Optimization for Guest Only option under Tuning.
|
426 |
* **Page Optimize** Now forbidding external link redirection for localization.
|
427 |
* **Debug** Implemented a better debug format for the 2nd parameter in the log.
|
428 |
-
* **GUI** Bypass page score banner when score is not detected (both 0). (
|
429 |
-
* **GUI** Fixed deprecated JQuery function warning in WP-Admin. (
|
430 |
|
431 |
= 3.6.4 - Mar 15 2021 =
|
432 |
* **Toolbox** Fixed Beta Test upgrade error when upgrading to v3.7+.
|
@@ -439,14 +456,14 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The
|
|
439 |
* **Page Optimize** Fixed an issue where network purge CSS/JS caused 404 errors for subsites.
|
440 |
* **Page Optimize** Fixed an issue where purge CSS/JS only caused 404 errors.
|
441 |
* **Page Optimize** Added a notice for CSS/JS data detection and potential random string issue.
|
442 |
-
* **Page Optimize** Limited localization resources to specified .js only. (
|
443 |
-
* **JS** Data src may now be bypassed from JS Combine. (
|
444 |
-
* **CLI** Fixed a message typo in Purge. (
|
445 |
-
* **Browser** Added font/otf to Browser Cache expire list. (
|
446 |
* **Data** Updated data files to accept PR from dev branch only.
|
447 |
-
* **3rd** Add data-view-breakpoint-pointer to js_excludes.txt for the Events Calendar plugin. (
|
448 |
* **Cloud** Bypassed invalid requests.
|
449 |
-
* **Doc** CDN Mapping description improvement. (
|
450 |
|
451 |
= 3.6.1 - Dec 21 2020 =
|
452 |
* **WP** Tested up to WP v5.6.
|
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: 4.4
|
7 |
License: GPLv3
|
8 |
License URI: http://www.gnu.org/licenses/gpl.html
|
9 |
|
249 |
|
250 |
== Changelog ==
|
251 |
|
252 |
+
= 4.4 - Sep 8 2021 =
|
253 |
+
* 🌱**Crawler** Added the ability to enable or disable specific crawlers. (⭐ Contributed by Astrid Wang #PR390)
|
254 |
+
* 🌱**UCSS** Added `UCSS Inline` option. (Ankit).
|
255 |
+
* 🌱**UCSS** Added `UCSS URI Excludes` option. (RC Verma).
|
256 |
+
* 🐞**Page Optimize** Fixed an issue where combined CSS/JS files would potentially return 404 errors after a Purge All. (Special thanks to Abe & Ruikai)
|
257 |
+
* **Page Optimize** Minimized the potential for 404 errors by query string when Purging All.
|
258 |
+
* **Page Optimize** Dropped redundant query strings for minified CSS/JS files.
|
259 |
+
* **Conf** Ugrade configuration safely to avoid the issue of new functions not being found in old codebase.
|
260 |
+
* **Conf** Configuration upgrade process now adds a notification to admin pages and disables configuration save until upgrade is complete. (Lisa)
|
261 |
+
* **JS** Fixed an issue where JS Defer caused a `litespeed_var_1_ is not defined` error when enabled w/ ESI options. (Tobolo)
|
262 |
+
* 🐞**JS** Fixed an issue where `JS Delay` doesn't work for combined JS when `JS Combine` is enabled. (Special thanks to Joshua & Ankit)
|
263 |
+
* **JS** `JS Delay` now will continue loading JS, even if there is an error in the current JS loading process.
|
264 |
+
* 🐞**CCSS** If CCSS fails to generate, Load CSS Asynchronously will now be disabled. (Stars #54074166)
|
265 |
+
* 🐞**UCSS** If UCSS generation fails the generated error will no longer be served inside the file. (Ryan D)
|
266 |
+
* **Log** Updated the Debug log to use less code for prefix.
|
267 |
+
* **3rd** Always respect `DONOTCACHEPAGE` constant defination to fix DIVI dynamic css calculation process.
|
268 |
+
|
269 |
= 4.3 - Aug 16 2021 =
|
270 |
* **UCSS** Separated UCSS Purge from CCSS Purge. (⭐ Contributed by Alice Tang #PR388)
|
271 |
* 🐞**Cloud** Fixed an issue where CCSS/UCSS quota data failed to update locally.
|
275 |
* **Cloud** CCSS/UCSS/LQIP queue now exits immediately when quota is depleted.
|
276 |
* **Cloud** Replaced separate `d/regionnodes` with a single `d/nodes` in the node list API for image optimization.
|
277 |
* **LQIP** Fixed an issue with LQIP network compatibility. (⭐ Contributed by Alice Tang #PR387)
|
278 |
+
* **GUEST** JS no longer preloads for Guest Optimization. (Ankit)
|
279 |
+
* 🐞**Data** Fixed an issue where deleting the `cssjs` data folder causes a failure in the upgrade process. (Joshua #PR391)
|
280 |
+
* **GUI** Fixed a potential dashboard PHP warning when no queue existed. (jrmora)
|
281 |
* **GUI** Added daily quota on dashboard.
|
282 |
* **GUI** Added downgrade warning to Toolbox -> Beta Test.
|
283 |
* **GUI** Tuned `.litespeed-desc` class to full width in CSS.
|
284 |
+
* **Conf** `Preserve EXIF/XMP data` now defaults to ON due to copyright concerns. (Tobolo)
|
285 |
+
* 🐞**3rd** Fixed a PHP warning when using Google AMP w/ /amp as structure. (thanhstran98)
|
286 |
|
287 |
= 4.2 - Jul 29 2021 =
|
288 |
* **Cloud** Auto redirect to a new node if the current node is not available anymore.
|
289 |
* **Cloud** Combined CCSS/UCSS to sub services of Page Optimization.
|
290 |
* **Cloud** Added a daily quota rate limit to help mitigate the heavy service load at the beginning of the month.
|
291 |
+
* **Cloud** Cached the node IP list in order to speed up security check. (Lucas)
|
292 |
+
* 🐞**GUEST** Fixed an issue where Guest Mode remained enabled even when the UA setting is empty. (Stars)
|
293 |
* **GUEST** Guest Mode will no longer cache POST requests.
|
294 |
* **UCSS** Purging CSS/JS now purges the UCSS queue as well, to avoid failure when generating UCSS.
|
295 |
* **UCSS** Separated service entry `UCSS` from `CCSS`.
|
296 |
* **CCSS** Simplified `load_queue/save_queue/build_filepath_prefix` functions. (⭐ Contributed by Alice Tang #PR373)
|
297 |
* **CCSS** If CCSS request fails, details are now saved in the CSS file.
|
298 |
+
* **CCSS** Renamed CCSS ID in inline HTML from `litespeed-optm-css-rules` to `litespeed-ccss`. (Alice)
|
299 |
* **Page Optimize** CCSS/UCSS now supports Cloud queue/notify for asynchronous generation.
|
300 |
* **Page Optimize** Simplified CCSS/UCSS generation function.
|
301 |
* **Page Optimize** Added the ability to cancel CCSS/UCSS Cloud requests.
|
307 |
* **API** Renamed `LITESPEED_BYPASS_OPTM` to `LITESPEED_NO_OPTM` for Page Optimization.
|
308 |
* **Toolbox** Dropped v3.6.4- versions in Beta Test as they will cause a fatal error in downgrade.
|
309 |
* **GUI** Added shortcut links to each section on the Dashboard.
|
310 |
+
* **GUI** Added UCSS whitelist usage description. (wyb)
|
311 |
* **GUI** Showed the default recommended values for Guest Mode UA/IPs.
|
312 |
* **3rd** Fixed AMP plugin compatibility. (⭐ Contributed by Alice Tang #PR368)
|
313 |
* **3rd** Bypassed all page optimization including CDN/WebP for AMP pages.
|
314 |
+
* **3rd** Improved compatibility with All in One SEO plugin sitemap. (arnaudbroes/flschaves Issue#372)
|
315 |
+
* **3rd** Added wsform nonce. (#365 cstrouse)
|
316 |
+
* **3rd** Added Easy Digital Download (EDD) & WP Menu Cart nonce. (#PR366 AkramiPro)
|
317 |
+
* **3rd** Improved compatibility w/ Restrict Content Pro. (Abe #PR370)
|
318 |
+
* **3rd** Improved compatibility w/ Gravity Forms. (Ruikai #371)
|
319 |
|
320 |
= 4.1 - Jun 25 2021 =
|
321 |
* 🌱**UCSS/CCSS/LQIP** Moved queue storage to file system from database wp-options table to lessen the IO load. (#633504)
|
322 |
+
* 🌱**3rd** Added an option to disable ESI for the WooCommerce Cart. (#358 Anna Feng/Astrid Wang)
|
323 |
+
* **ESI** Fixed an ESI nonce issue introduced in v4.0. (Andrew Choi)
|
324 |
* **Object** Used new `.litespeed_conf.dat` instead of `.object-cache.ini` for object cache configuration storage.
|
325 |
* **Conf** Now updating related files after plugin upgrade and not just after activation.
|
326 |
+
* 🌱**Guest** Added a Guest Mode JS Excludes option. (Ankit/Mamac/Rcverma)
|
327 |
* **Guest** Guest Mode now uses a lightweight script to update guest vary for reduced server load.
|
328 |
* **Guest** Guest Mode now adds missing image dimensions.
|
329 |
* **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.
|
330 |
* **Guest** Guest vary update request will no longer be sent if `lscache_vary` is already set.
|
331 |
* **Guest** Added a Configurable Guest Mode UA/IP under the Tuning tab in the General menu.
|
332 |
+
* **Guest** Guest Mode now allows cron to be hooked, even when UCSS/CCSS options are off. (#338437 Stars)
|
333 |
* **Guest** Simplified the vary generation process under Guest Mode.
|
334 |
+
* **Guest** Added a Guest Mode HTML comment for easier debugging. (Ruikai)
|
335 |
* **Guest** Guest vary update ajax now bypasses potential POST cache.
|
336 |
+
* **CCSS** Added back the options `Separate CCSS Cache Post Types` and `Separate CCSS Cache URIs`. (Joshua/Ankit)
|
337 |
* **CCSS** CCSS/UCSS queue is now limited to a maximum of 500 entries.
|
338 |
* **Control** The cache control constant `LSCACHE_NO_CACHE` will now have a higher priority than the Forced Public Cache setting.
|
339 |
* **Crawler** The Crawler can now crawl Guest Mode pages.
|
340 |
* **Crawler** Fixed a potential XSS vulnerability in the Crawler settings. (#927355)
|
341 |
+
* **Crawler** The Crawler now supports a cookie value of `_null`. (Tobolo)
|
342 |
* **Media** Updated the default value for the Responsive Placeholder SVG to be transparent.
|
343 |
* **Media** WebP images in the background may now be served in Guest Mode.
|
344 |
* **Media** WebP images in CSS may now be bypassed if the requesting Guest Mode client doesn't support WebP.
|
345 |
* **Media** Fixed empty default image placeholder under Guest Mode.
|
346 |
+
* 🐞**Image Optimize** Changed the missing `$_POST` to `$post_data` so the database status is properly updated. (#345 Lucas)
|
347 |
+
* **Import** Export file is now readable to allow importing of partial configurations. (Ryan D/Joshua)
|
348 |
* **Page Optimize** Fixed W3 validator errors in Guest Mode. (#61393817)
|
349 |
* **3rd** A fatal WooCommerce error is no longer triggered by a custom theme reusing a previous LSCWP cache detection tag.
|
350 |
* **3rd** AMP may now bypass Guest Mode automatically.
|
353 |
* **Lang** Corrected a missing language folder.
|
354 |
* **GUI** Added a CCSS/UCSS loading page visualization. (⭐ Contributed by Astrid Wang & Anna Feng #PR360)
|
355 |
* **GUI** Added a warning to indicate when Guest Mode CCSS/UCSS quota is in use. (Contributed by Astrid Wang & Anna Feng #PR361)
|
356 |
+
* **GUI** Added a `litespeed-info` text color. (Astrid Wang)
|
357 |
+
* **GUI** Implemented various UI/UX improvements. (Joshua/Lisa)
|
358 |
+
* **GUI** Duplicate cloud service messages with the same content will only display once now. (Marc Dahl)
|
359 |
* **GUI** Added a WebP replacement warning for Guest Mode Optimization if WebP replacement is off.
|
360 |
+
* **Misc** Dropped `wp_assets` from distribution to reduce the package size. (lowwebtech)
|
361 |
* **Misc** Increased the new version and score detection intervals.
|
362 |
+
* **Misc** Optimized WP Assets images. (#352 lowwebtech)
|
363 |
* **Debug** Dropped the redundant error_log debug info.
|
364 |
|
365 |
= 4.0 - Apr 30 2021 =
|
366 |
* 🌱🌱🌱**Guest** Introduced `Guest Mode` for instantly cacheable content on the first visit.
|
367 |
* 🌱**UCSS** Added a new service: `Unique CSS`, to drop unused CSS from elements from combined CSS
|
368 |
+
* 🌱**CCSS** Added `HTML Lazyload` option. (Ankit)
|
369 |
* 🌱**CCSS** Added `CCSS Per URL` option to allow Critical CSS to be generated for each page instead of for each Post Type.
|
370 |
+
* 🌱**Media** Added `Add Missing Sizes` setting for improving Cumulative Layout Shift. (Fahim)
|
371 |
+
* 🌱**JS** Switched to new JS minification library for better compression and compatibility w/ template literals. (LuminSol)
|
372 |
* **Media** WebP may now be replaced in CSS.
|
373 |
+
* **Media** Can now drop image tags in noscript to avoid lazyload. (Abe #314 /mattthomas-photography)
|
374 |
* **Media** Bypass optimization if a page is not cacheable.
|
375 |
+
* **Image Optimize** Auto hook to `wp_update_attachment_metadata` to automate image gathering process, and to handle the new thumbnail generation after images are uploaded. (smerriman).
|
376 |
* **Image Optimize** Repeated image thumbnails won't be gathered anymore.
|
377 |
* **Image Optimize** Simplified the rescan/gather/upload_hook for existing image detection.
|
378 |
+
* **Image Optimize** Fixed the duplicated optimize size records in the postmeta table. (Abe #315)
|
379 |
+
* **Image Optimize** Allow either JSON POST request or normal form request in `notify_img`. (Lucas #313)
|
380 |
+
* **Image Optimize** Optimized SQL query for better efficiency. (lucas/Lauren)
|
381 |
* **Image Optimize** Fixed issue where rescan mass created duplicate images. (#954399)
|
382 |
* **Image Optimize** Image optimization pie will not show 100% anymore if there is still a small amount in the unfinished queue.
|
383 |
* **Image Optimize** WebP generation defaults to ON for Guest Mode.
|
384 |
* **Image Optimize** `Priority Line` package now can have smaller request interval.
|
385 |
+
* **ESI** Disable ESI when page is not cacheable. (titsmaker)
|
386 |
+
* **ESI** Fixed an issue where Divi was disabling all in edit mode, but couldn't disable ESI. (Abe)
|
387 |
* **ESI** ESI init moved under `init` hook from `plugin_loaded` hook.
|
388 |
+
* **CDN** Add basic support for CloudFlare API Tokens (Abe #320)
|
389 |
* **CSS** Simplified `Font Display Optimization` option.
|
390 |
+
* **CSS** Fixed manual cron timeout issue. (jesse Distad)
|
391 |
+
* **CSS** Inline CSS may now use `data-no-optimize` to be excluded from optimization. (popaionut)
|
392 |
* **JS** Combined `Load JS Defer` and `Load Inline JS Defer` options.
|
393 |
* **JS** Forced async to defer.
|
394 |
* **JS** Moved Google Analytics JS from constant default to setting default for removal.
|
395 |
+
* **JS** Fixed potential JS parsing issue caused by JS src being changed to data-src by other plugins. (ankit)
|
396 |
+
* **JS** Excluded spotlight from JS optimize. (tobolo)
|
397 |
* **CCSS** Fixed CCSS/UCSS manual cron timeout issue.
|
398 |
* **CCSS** Only 10 items will be kept for CCSS history.
|
399 |
* **CCSS** The appearance of CCSS Purge in the topbar menu will be determined by the existance of CCSS cache, and not the setting only.
|
400 |
* **CCSS** To avoid stuck queues when the current request keeps failing, the CCSS queue will always drop once requested.
|
401 |
* **CCSS** CCSS will no longer hide adminbar.
|
402 |
+
* **CCSS** CCSS may now be separate for network subsites. (Joshua)
|
403 |
* **CCSS** Gave CCSS a unique filename per URL per user role per subsite.
|
404 |
* **CCSS** Dropped `Separate CCSS Cache Post Types` option.
|
405 |
* **CCSS** Dropped `Separate CCSS Cache URIs` option.
|
423 |
* **Vary** 3rd party vary cookies will not append into .htaccess anymore but only present in response vary header if in use.
|
424 |
* **Vary** Dropped function `append()`.
|
425 |
* **Vary** Commenter cookie is now considered cacheable.
|
426 |
+
* **Crawler** Minor update to crawler user agent to accommodate mobile_detect.php (Abe #304)
|
427 |
* **Data** Added a table truncate function.
|
428 |
* **Data** Added new tables url & url_file.
|
429 |
* **Data** Dropped cssjs table.
|
436 |
* **Page Optimize** Bypass optimization if page not cacheable.
|
437 |
* **Page Optimize** Purge CSS/JS will purge the `url_file` table too.
|
438 |
* **Page Optimize** Optionally store a vary with a shorter value.
|
439 |
+
* **Page Optimize** Removing query strings will no longer affect external assets. (ankit)
|
440 |
* **Page Optimize** Better regex for optimization parsing.
|
441 |
+
* **Page Optimize** Eliminated w3 validator for DNS prefetch and duplicated ID errors. (sumit Pandey)
|
442 |
* **Page Optimize** New Optimization for Guest Only option under Tuning.
|
443 |
* **Page Optimize** Now forbidding external link redirection for localization.
|
444 |
* **Debug** Implemented a better debug format for the 2nd parameter in the log.
|
445 |
+
* **GUI** Bypass page score banner when score is not detected (both 0). (ankit)
|
446 |
+
* **GUI** Fixed deprecated JQuery function warning in WP-Admin. (krzxsiek)
|
447 |
|
448 |
= 3.6.4 - Mar 15 2021 =
|
449 |
* **Toolbox** Fixed Beta Test upgrade error when upgrading to v3.7+.
|
456 |
* **Page Optimize** Fixed an issue where network purge CSS/JS caused 404 errors for subsites.
|
457 |
* **Page Optimize** Fixed an issue where purge CSS/JS only caused 404 errors.
|
458 |
* **Page Optimize** Added a notice for CSS/JS data detection and potential random string issue.
|
459 |
+
* **Page Optimize** Limited localization resources to specified .js only. (closte #292/ormonk)
|
460 |
+
* **JS** Data src may now be bypassed from JS Combine. (ankit)
|
461 |
+
* **CLI** Fixed a message typo in Purge. (flixwatchsupport)
|
462 |
+
* **Browser** Added font/otf to Browser Cache expire list. (ruikai)
|
463 |
* **Data** Updated data files to accept PR from dev branch only.
|
464 |
+
* **3rd** Add data-view-breakpoint-pointer to js_excludes.txt for the Events Calendar plugin. (therealgilles)
|
465 |
* **Cloud** Bypassed invalid requests.
|
466 |
+
* **Doc** CDN Mapping description improvement. (mihai A.)
|
467 |
|
468 |
= 3.6.1 - Dec 21 2020 =
|
469 |
* **WP** Tested up to WP v5.6.
|
src/admin-display.cls.php
CHANGED
@@ -240,6 +240,12 @@ class Admin_Display extends Base {
|
|
240 |
$localize_data[ 'ajax_url_getIP' ] = function_exists( 'get_rest_url' ) ? get_rest_url( null, 'litespeed/v1/tool/check_ip' ) : '/';
|
241 |
$localize_data[ 'nonce' ] = wp_create_nonce( 'wp_rest' );
|
242 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
243 |
}
|
244 |
|
245 |
if ( $localize_data ) {
|
@@ -400,6 +406,10 @@ class Admin_Display extends Base {
|
|
400 |
* @access public
|
401 |
*/
|
402 |
public function display_messages() {
|
|
|
|
|
|
|
|
|
403 |
if ( GUI::has_whm_msg() ) {
|
404 |
$this->show_display_installed();
|
405 |
}
|
@@ -635,6 +645,16 @@ class Admin_Display extends Base {
|
|
635 |
include LSCWP_DIR . "tpl/inc/check_cache_disabled.php";
|
636 |
}
|
637 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
638 |
/**
|
639 |
* Output litespeed form info
|
640 |
*
|
@@ -648,7 +668,12 @@ class Admin_Display extends Base {
|
|
648 |
|
649 |
$has_upload = $has_upload ? 'enctype="multipart/form-data"' : '';
|
650 |
|
651 |
-
|
|
|
|
|
|
|
|
|
|
|
652 |
|
653 |
echo '<input type="hidden" name="' . Router::ACTION . '" value="' . $action . '" />';
|
654 |
if ( $type ) {
|
@@ -665,9 +690,18 @@ class Admin_Display extends Base {
|
|
665 |
*/
|
666 |
public function form_end( $disable_reset = false ) {
|
667 |
echo "<div class='litespeed-top20'></div>";
|
668 |
-
submit_button( __( 'Save Changes', 'litespeed-cache' ), 'primary litespeed-duplicate-float', 'litespeed-submit', true, array( 'id' => 'litespeed-submit-' . $this->_btn_i++ ) );
|
669 |
|
670 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
671 |
}
|
672 |
|
673 |
/**
|
@@ -788,17 +822,12 @@ class Admin_Display extends Base {
|
|
788 |
if ( $checked === null && $this->conf( $id, true ) ) {
|
789 |
$checked = true;
|
790 |
}
|
791 |
-
|
792 |
if ( $title_on === null ) {
|
793 |
$title_on = __( 'ON', 'litespeed-cache' );
|
794 |
$title_off = __( 'OFF', 'litespeed-cache' );
|
795 |
}
|
796 |
-
|
797 |
$cls = $checked ? 'primary' : 'default litespeed-toggleoff';
|
798 |
-
|
799 |
-
$this->enroll( $id );
|
800 |
-
|
801 |
-
echo "<div class='litespeed-toggle litespeed-toggle-btn litespeed-toggle-btn-$cls' data-litespeed-toggle-on='primary' data-litespeed-toggle-off='default'>
|
802 |
<input name='$id' type='hidden' value='$checked' />
|
803 |
<div class='litespeed-toggle-group'>
|
804 |
<label class='litespeed-toggle-btn litespeed-toggle-btn-primary litespeed-toggle-on'>$title_on</label>
|
@@ -806,8 +835,6 @@ class Admin_Display extends Base {
|
|
806 |
<span class='litespeed-toggle-handle litespeed-toggle-btn litespeed-toggle-btn-default'></span>
|
807 |
</div>
|
808 |
</div>";
|
809 |
-
|
810 |
-
$this->_check_overwritten( $id );
|
811 |
}
|
812 |
|
813 |
/**
|
240 |
$localize_data[ 'ajax_url_getIP' ] = function_exists( 'get_rest_url' ) ? get_rest_url( null, 'litespeed/v1/tool/check_ip' ) : '/';
|
241 |
$localize_data[ 'nonce' ] = wp_create_nonce( 'wp_rest' );
|
242 |
}
|
243 |
+
|
244 |
+
// Activate or deactivate a specific crawler
|
245 |
+
if ( $_GET[ 'page' ] == 'litespeed-crawler' ) {
|
246 |
+
$localize_data[ 'ajax_url_crawler_switch' ] = function_exists( 'get_rest_url' ) ? get_rest_url( null, 'litespeed/v1/toggle_crawler_state' ) : '/';
|
247 |
+
$localize_data[ 'nonce' ] = wp_create_nonce( 'wp_rest' );
|
248 |
+
}
|
249 |
}
|
250 |
|
251 |
if ( $localize_data ) {
|
406 |
* @access public
|
407 |
*/
|
408 |
public function display_messages() {
|
409 |
+
if ( ! defined( 'LITESPEED_CONF_LOADED' ) ) {
|
410 |
+
$this->_in_upgrading();
|
411 |
+
}
|
412 |
+
|
413 |
if ( GUI::has_whm_msg() ) {
|
414 |
$this->show_display_installed();
|
415 |
}
|
645 |
include LSCWP_DIR . "tpl/inc/check_cache_disabled.php";
|
646 |
}
|
647 |
|
648 |
+
/**
|
649 |
+
* Display conf data upgrading banner
|
650 |
+
*
|
651 |
+
* @since 2.1
|
652 |
+
* @access private
|
653 |
+
*/
|
654 |
+
private function _in_upgrading() {
|
655 |
+
include LSCWP_DIR . "tpl/inc/in_upgrading.php";
|
656 |
+
}
|
657 |
+
|
658 |
/**
|
659 |
* Output litespeed form info
|
660 |
*
|
668 |
|
669 |
$has_upload = $has_upload ? 'enctype="multipart/form-data"' : '';
|
670 |
|
671 |
+
if ( ! defined( 'LITESPEED_CONF_LOADED' ) ) {
|
672 |
+
echo '<div class="litespeed-relative"';
|
673 |
+
}
|
674 |
+
else {
|
675 |
+
echo '<form method="post" action="' . wp_unslash( $_SERVER[ 'REQUEST_URI' ] ) . '" class="litespeed-relative" ' . $has_upload . '>';
|
676 |
+
}
|
677 |
|
678 |
echo '<input type="hidden" name="' . Router::ACTION . '" value="' . $action . '" />';
|
679 |
if ( $type ) {
|
690 |
*/
|
691 |
public function form_end( $disable_reset = false ) {
|
692 |
echo "<div class='litespeed-top20'></div>";
|
|
|
693 |
|
694 |
+
if ( ! defined( 'LITESPEED_CONF_LOADED' ) ) {
|
695 |
+
submit_button( __( 'Save Changes', 'litespeed-cache' ), 'secondary litespeed-duplicate-float', 'litespeed-submit', true, array( 'disabled' => 'disabled' ) );
|
696 |
+
|
697 |
+
echo '</div>';
|
698 |
+
}
|
699 |
+
else {
|
700 |
+
submit_button( __( 'Save Changes', 'litespeed-cache' ), 'primary litespeed-duplicate-float', 'litespeed-submit', true, array( 'id' => 'litespeed-submit-' . $this->_btn_i++ ) );
|
701 |
+
|
702 |
+
echo '</form>';
|
703 |
+
}
|
704 |
+
|
705 |
}
|
706 |
|
707 |
/**
|
822 |
if ( $checked === null && $this->conf( $id, true ) ) {
|
823 |
$checked = true;
|
824 |
}
|
|
|
825 |
if ( $title_on === null ) {
|
826 |
$title_on = __( 'ON', 'litespeed-cache' );
|
827 |
$title_off = __( 'OFF', 'litespeed-cache' );
|
828 |
}
|
|
|
829 |
$cls = $checked ? 'primary' : 'default litespeed-toggleoff';
|
830 |
+
echo "<div class='litespeed-toggle litespeed-toggle-btn litespeed-toggle-btn-$cls' data-litespeed-toggle-on='primary' data-litespeed-toggle-off='default' data-litespeed_crawler_id='$id' >
|
|
|
|
|
|
|
831 |
<input name='$id' type='hidden' value='$checked' />
|
832 |
<div class='litespeed-toggle-group'>
|
833 |
<label class='litespeed-toggle-btn litespeed-toggle-btn-primary litespeed-toggle-on'>$title_on</label>
|
835 |
<span class='litespeed-toggle-handle litespeed-toggle-btn litespeed-toggle-btn-default'></span>
|
836 |
</div>
|
837 |
</div>";
|
|
|
|
|
838 |
}
|
839 |
|
840 |
/**
|
src/base.cls.php
CHANGED
@@ -123,7 +123,9 @@ class Base extends Root {
|
|
123 |
const O_OPTM_CSS_COMB = 'optm-css_comb';
|
124 |
const O_OPTM_CSS_COMB_EXT_INL = 'optm-css_comb_ext_inl';
|
125 |
const O_OPTM_UCSS = 'optm-ucss';
|
|
|
126 |
const O_OPTM_UCSS_WHITELIST = 'optm-ucss_whitelist';
|
|
|
127 |
const O_OPTM_CSS_HTTP2 = 'optm-css_http2';
|
128 |
const O_OPTM_CSS_EXC = 'optm-css_exc';
|
129 |
const O_OPTM_JS_MIN = 'optm-js_min';
|
@@ -405,7 +407,9 @@ class Base extends Root {
|
|
405 |
self::O_OPTM_CSS_COMB => false,
|
406 |
self::O_OPTM_CSS_COMB_EXT_INL => false,
|
407 |
self::O_OPTM_UCSS => false,
|
|
|
408 |
self::O_OPTM_UCSS_WHITELIST => array(),
|
|
|
409 |
self::O_OPTM_CSS_HTTP2 => false,
|
410 |
self::O_OPTM_CSS_EXC => array(),
|
411 |
self::O_OPTM_JS_MIN => false,
|
123 |
const O_OPTM_CSS_COMB = 'optm-css_comb';
|
124 |
const O_OPTM_CSS_COMB_EXT_INL = 'optm-css_comb_ext_inl';
|
125 |
const O_OPTM_UCSS = 'optm-ucss';
|
126 |
+
const O_OPTM_UCSS_INLINE = 'optm-ucss_inline';
|
127 |
const O_OPTM_UCSS_WHITELIST = 'optm-ucss_whitelist';
|
128 |
+
const O_OPTM_UCSS_EXC = 'optm-ucss_exc';
|
129 |
const O_OPTM_CSS_HTTP2 = 'optm-css_http2';
|
130 |
const O_OPTM_CSS_EXC = 'optm-css_exc';
|
131 |
const O_OPTM_JS_MIN = 'optm-js_min';
|
407 |
self::O_OPTM_CSS_COMB => false,
|
408 |
self::O_OPTM_CSS_COMB_EXT_INL => false,
|
409 |
self::O_OPTM_UCSS => false,
|
410 |
+
self::O_OPTM_UCSS_INLINE => false,
|
411 |
self::O_OPTM_UCSS_WHITELIST => array(),
|
412 |
+
self::O_OPTM_UCSS_EXC => array(),
|
413 |
self::O_OPTM_CSS_HTTP2 => false,
|
414 |
self::O_OPTM_CSS_EXC => array(),
|
415 |
self::O_OPTM_JS_MIN => false,
|
src/cloud.cls.php
CHANGED
@@ -8,6 +8,7 @@ namespace LiteSpeed;
|
|
8 |
defined( 'WPINC' ) || exit;
|
9 |
|
10 |
class Cloud extends Base {
|
|
|
11 |
const CLOUD_SERVER = 'https://api.quic.cloud';
|
12 |
const CLOUD_IPS = 'https://quic.cloud/ips';
|
13 |
const CLOUD_SERVER_DASH = 'https://my.quic.cloud';
|
@@ -126,7 +127,7 @@ class Cloud extends Base {
|
|
126 |
return;
|
127 |
}
|
128 |
|
129 |
-
|
130 |
|
131 |
if ( version_compare( $this->_summary[ 'version.dev' ], Core::VER, '<=' ) ) {
|
132 |
return;
|
@@ -301,7 +302,7 @@ class Cloud extends Base {
|
|
301 |
return;
|
302 |
}
|
303 |
|
304 |
-
|
305 |
|
306 |
foreach ( self::$SERVICES as $v ) {
|
307 |
$this->_summary[ 'usage.' . $v ] = ! empty( $usage[ $v ] ) ? $usage[ $v ] : false;
|
@@ -329,7 +330,7 @@ class Cloud extends Base {
|
|
329 |
}
|
330 |
self::save_summary();
|
331 |
|
332 |
-
|
333 |
}
|
334 |
|
335 |
/**
|
@@ -365,7 +366,7 @@ class Cloud extends Base {
|
|
365 |
|
366 |
// Check if get list correctly
|
367 |
if ( empty( $json[ 'list' ] ) || ! is_array( $json[ 'list' ] ) ) {
|
368 |
-
|
369 |
|
370 |
if ( $json ) {
|
371 |
$msg = __( 'Cloud Error', 'litespeed-cache' ) . ": [Service] $service [Info] " . json_encode( $json );
|
@@ -384,7 +385,7 @@ class Cloud extends Base {
|
|
384 |
$min = min( $speed_list );
|
385 |
|
386 |
if ( $min == 99999 ) {
|
387 |
-
|
388 |
return false;
|
389 |
}
|
390 |
|
@@ -397,7 +398,7 @@ class Cloud extends Base {
|
|
397 |
$valid_clouds[] = $node;
|
398 |
}
|
399 |
// Append the lower speed ones
|
400 |
-
else if ( $speed < $min *
|
401 |
$valid_clouds[] = $node;
|
402 |
}
|
403 |
}
|
@@ -408,7 +409,7 @@ class Cloud extends Base {
|
|
408 |
return false;
|
409 |
}
|
410 |
|
411 |
-
|
412 |
|
413 |
// Check server load
|
414 |
if ( in_array( $service, self::$SERVICES_LOAD_CHECK ) ) {
|
@@ -417,7 +418,7 @@ class Cloud extends Base {
|
|
417 |
$response = wp_remote_get( $v, array( 'timeout' => 5, 'sslverify' => true ) );
|
418 |
if ( is_wp_error( $response ) ) {
|
419 |
$error_message = $response->get_error_message();
|
420 |
-
|
421 |
continue;
|
422 |
}
|
423 |
|
@@ -433,7 +434,7 @@ class Cloud extends Base {
|
|
433 |
return false;
|
434 |
}
|
435 |
|
436 |
-
|
437 |
|
438 |
$qualified_list = array_keys( $valid_cloud_loads, min( $valid_cloud_loads ) );
|
439 |
}
|
@@ -443,7 +444,7 @@ class Cloud extends Base {
|
|
443 |
|
444 |
$closest = $qualified_list[ array_rand( $qualified_list ) ];
|
445 |
|
446 |
-
|
447 |
|
448 |
// store data into option locally
|
449 |
$this->_summary[ 'server.' . $service ] = $closest;
|
@@ -499,7 +500,7 @@ class Cloud extends Base {
|
|
499 |
|
500 |
$url .= '?' . http_build_query( $param );
|
501 |
|
502 |
-
|
503 |
|
504 |
$this->_summary[ 'curr_request.' . $service_tag ] = time();
|
505 |
self::save_summary();
|
@@ -544,7 +545,7 @@ class Cloud extends Base {
|
|
544 |
if ( ! empty( $this->_summary[ $timestamp_tag . $service_tag ] ) ) {
|
545 |
$expired = $this->_summary[ $timestamp_tag . $service_tag ] + $expiration_req - time();
|
546 |
if ( $expired > 0 ) {
|
547 |
-
|
548 |
|
549 |
if ( $service_tag !== self::API_VER ) {
|
550 |
$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>' );
|
@@ -601,7 +602,7 @@ class Cloud extends Base {
|
|
601 |
|
602 |
$url = $server . '/' . $service;
|
603 |
|
604 |
-
|
605 |
|
606 |
$param = array(
|
607 |
'site_url' => home_url(),
|
@@ -627,14 +628,14 @@ class Cloud extends Base {
|
|
627 |
private function _parse_response( $response, $service, $service_tag, $server ) {
|
628 |
if ( is_wp_error( $response ) ) {
|
629 |
$error_message = $response->get_error_message();
|
630 |
-
|
631 |
|
632 |
if ( $service !== self::API_VER ) {
|
633 |
$msg = __( 'Failed to request via WordPress', 'litespeed-cache' ) . ': ' . $error_message . " [server] $server [service] $service";
|
634 |
Admin_Display::error( $msg );
|
635 |
|
636 |
// Force redetect node
|
637 |
-
|
638 |
$this->detect_cloud( $service, true );
|
639 |
}
|
640 |
return;
|
@@ -643,14 +644,14 @@ class Cloud extends Base {
|
|
643 |
$json = json_decode( $response[ 'body' ], true );
|
644 |
|
645 |
if ( ! is_array( $json ) ) {
|
646 |
-
|
647 |
|
648 |
if ( $service !== self::API_VER ) {
|
649 |
$msg = __( 'Failed to request via WordPress', 'litespeed-cache' ) . ': ' . $response[ 'body' ] . " [server] $server [service] $service";
|
650 |
Admin_Display::error( $msg );
|
651 |
|
652 |
// Force redetect node
|
653 |
-
|
654 |
$this->detect_cloud( $service, true );
|
655 |
}
|
656 |
|
@@ -660,28 +661,28 @@ class Cloud extends Base {
|
|
660 |
if ( ! empty( $json[ '_code' ] ) ) {
|
661 |
if ( $json[ '_code' ] == 'heavy_load' || $json[ '_code' ] == 'redetect_node' ) {
|
662 |
// Force redetect node
|
663 |
-
|
664 |
Admin_Display::info( __( 'Redetected node', 'litespeed-cache' ) . ': ' . Error::msg( $json[ '_code' ] ) );
|
665 |
$this->detect_cloud( $service, true );
|
666 |
}
|
667 |
}
|
668 |
|
669 |
if ( ! empty( $json[ '_503' ] ) ) {
|
670 |
-
|
671 |
|
672 |
$msg = __( 'We are working hard to improve your online service experience. The service will be unavailable while we work. We apologize for any inconvenience.', 'litespeed-cache' );
|
673 |
$msg .= ' ' . $json[ '_503' ] . " [server] $server [service] $service";
|
674 |
Admin_Display::error( $msg );
|
675 |
|
676 |
// Force redetect node
|
677 |
-
|
678 |
$this->detect_cloud( $service, true );
|
679 |
|
680 |
return;
|
681 |
}
|
682 |
|
683 |
if ( ! empty( $json[ '_info' ] ) ) {
|
684 |
-
|
685 |
$msg = __( 'Message from QUIC.cloud server', 'litespeed-cache' ) . ': ' . $json[ '_info' ];
|
686 |
$msg .= $this->_parse_link( $json );
|
687 |
Admin_Display::info( $msg );
|
@@ -689,7 +690,7 @@ class Cloud extends Base {
|
|
689 |
}
|
690 |
|
691 |
if ( ! empty( $json[ '_note' ] ) ) {
|
692 |
-
|
693 |
$msg = __( 'Message from QUIC.cloud server', 'litespeed-cache' ) . ': ' . $json[ '_note' ];
|
694 |
$msg .= $this->_parse_link( $json );
|
695 |
Admin_Display::note( $msg );
|
@@ -697,7 +698,7 @@ class Cloud extends Base {
|
|
697 |
}
|
698 |
|
699 |
if ( ! empty( $json[ '_success' ] ) ) {
|
700 |
-
|
701 |
$msg = __( 'Good news from QUIC.cloud server', 'litespeed-cache' ) . ': ' . $json[ '_success' ];
|
702 |
$msg .= $this->_parse_link( $json );
|
703 |
Admin_Display::succeed( $msg );
|
@@ -706,7 +707,7 @@ class Cloud extends Base {
|
|
706 |
|
707 |
// Upgrade is required
|
708 |
if ( ! empty( $json[ '_err_req_v' ] ) ) {
|
709 |
-
|
710 |
$msg = sprintf( __( '%1$s plugin version %2$s required for this action.', 'litespeed-cache' ), Core::NAME, 'v' . $json[ '_err_req_v' ] . '+' ) . " [server] $server [service] $service";
|
711 |
|
712 |
// Append upgrade link
|
@@ -719,7 +720,7 @@ class Cloud extends Base {
|
|
719 |
|
720 |
// Parse _carry_on info
|
721 |
if ( ! empty( $json[ '_carry_on' ] ) ) {
|
722 |
-
|
723 |
// Store generic info
|
724 |
foreach ( array( 'usage', 'promo' ) as $v ) {
|
725 |
if ( ! empty( $json[ '_carry_on' ][ $v ] ) ) {
|
@@ -748,7 +749,7 @@ class Cloud extends Base {
|
|
748 |
// Parse general error msg
|
749 |
if ( empty( $json[ '_res' ] ) || $json[ '_res' ] !== 'ok' ) {
|
750 |
$json_msg = ! empty( $json[ '_msg' ] ) ? $json[ '_msg' ] : 'unknown';
|
751 |
-
|
752 |
|
753 |
$msg = __( 'Failed to communicate with QUIC.cloud server', 'litespeed-cache' ) . ': ' . Error::msg( $json_msg ) . " [server] $server [service] $service";
|
754 |
$msg .= $this->_parse_link( $json );
|
@@ -777,10 +778,10 @@ class Cloud extends Base {
|
|
777 |
self::save_summary();
|
778 |
|
779 |
if ( $json ) {
|
780 |
-
|
781 |
}
|
782 |
else {
|
783 |
-
|
784 |
}
|
785 |
|
786 |
// Only successful request return Array
|
@@ -850,18 +851,18 @@ class Cloud extends Base {
|
|
850 |
*/
|
851 |
public function ip_validate() {
|
852 |
if ( empty( $_POST[ 'hash' ] ) ) {
|
853 |
-
|
854 |
return self::err( 'lack_of_param' );
|
855 |
}
|
856 |
|
857 |
if ( empty( $this->_api_key ) ) {
|
858 |
-
|
859 |
return self::err( 'lack_of_api_key' );
|
860 |
}
|
861 |
|
862 |
$to_validate = substr( $this->_api_key, 0, 4 );
|
863 |
if ( $_POST[ 'hash' ] !== md5( $to_validate ) ) {
|
864 |
-
|
865 |
return self::err( 'err_hash' );
|
866 |
}
|
867 |
|
@@ -869,7 +870,7 @@ class Cloud extends Base {
|
|
869 |
|
870 |
$res_hash = substr( $this->_api_key, 2, 4 );
|
871 |
|
872 |
-
|
873 |
|
874 |
return self::ok( array( 'hash' => md5( $res_hash ) ) );
|
875 |
}
|
@@ -902,7 +903,7 @@ class Cloud extends Base {
|
|
902 |
$response = wp_remote_get( self::CLOUD_SERVER . '/d/req_key?data=' . Utility::arr2str( $data ) );
|
903 |
if ( is_wp_error( $response ) ) {
|
904 |
$error_message = $response->get_error_message();
|
905 |
-
|
906 |
Admin_Display::error( __( 'Cloud Error', 'litespeed-cache' ) . ': ' . $error_message );
|
907 |
return;
|
908 |
}
|
@@ -926,7 +927,7 @@ class Cloud extends Base {
|
|
926 |
self::save_summary();
|
927 |
|
928 |
$json_msg = ! empty( $json[ '_msg' ] ) ? $json[ '_msg' ] : 'unknown';
|
929 |
-
|
930 |
|
931 |
$msg = __( 'Failed to communicate with QUIC.cloud server', 'litespeed-cache' ) . ': ' . Error::msg( $json_msg );
|
932 |
$msg .= $this->_parse_link( $json );
|
@@ -937,7 +938,7 @@ class Cloud extends Base {
|
|
937 |
|
938 |
// This is a ok msg
|
939 |
if ( ! empty( $json[ '_msg' ] ) ) {
|
940 |
-
|
941 |
|
942 |
$msg = __( 'Message from QUIC.cloud server', 'litespeed-cache' ) . ': ' . Error::msg( $json[ '_msg' ] );
|
943 |
$msg .= $this->_parse_link( $json );
|
@@ -945,7 +946,7 @@ class Cloud extends Base {
|
|
945 |
return;
|
946 |
}
|
947 |
|
948 |
-
|
949 |
|
950 |
Admin_Display::succeed( __( 'Applied for Domain Key successfully. Please wait for result. Domain Key will be automatically sent to your WordPress.', 'litespeed-cache' ) );
|
951 |
}
|
@@ -965,7 +966,7 @@ class Cloud extends Base {
|
|
965 |
|
966 |
Control::set_nocache( 'Cloud token validation' );
|
967 |
|
968 |
-
|
969 |
|
970 |
return self::ok( array( 'hash' => md5( substr( $this->_summary[ 'token' ], 3, 8 ) ) ) );
|
971 |
}
|
@@ -997,7 +998,7 @@ class Cloud extends Base {
|
|
997 |
unset( $this->_summary[ 'token' ] );
|
998 |
self::save_summary();
|
999 |
|
1000 |
-
|
1001 |
Admin_Display::succeed( '🎊 ' . __( 'Congratulations, your Domain Key has been approved! The setting has been updated accordingly.', 'litespeed-cache' ) );
|
1002 |
|
1003 |
return self::ok();
|
@@ -1010,17 +1011,17 @@ class Cloud extends Base {
|
|
1010 |
*/
|
1011 |
private function _validate_hash( $offset = 0 ) {
|
1012 |
if ( empty( $_POST[ 'hash' ] ) ) {
|
1013 |
-
|
1014 |
throw new \Exception( 'lack_of_param' );
|
1015 |
}
|
1016 |
|
1017 |
if ( empty( $this->_summary[ 'token' ] ) ) {
|
1018 |
-
|
1019 |
throw new \Exception( 'lack_of_local_token' );
|
1020 |
}
|
1021 |
|
1022 |
if ( $_POST[ 'hash' ] !== md5( substr( $this->_summary[ 'token' ], $offset, 8 ) ) ) {
|
1023 |
-
|
1024 |
throw new \Exception( 'mismatch' );
|
1025 |
}
|
1026 |
}
|
@@ -1092,13 +1093,13 @@ class Cloud extends Base {
|
|
1092 |
|
1093 |
$res = $this->cls( 'Router' )->ip_access( $this->_summary[ 'ips' ] );
|
1094 |
if ( ! $res ) {
|
1095 |
-
|
1096 |
|
1097 |
// Refresh IP list for future detection
|
1098 |
$this->_update_ips();
|
1099 |
}
|
1100 |
else {
|
1101 |
-
|
1102 |
}
|
1103 |
|
1104 |
return $res;
|
@@ -1110,12 +1111,12 @@ class Cloud extends Base {
|
|
1110 |
* @since 4.2
|
1111 |
*/
|
1112 |
private function _update_ips() {
|
1113 |
-
|
1114 |
|
1115 |
$response = wp_remote_get( self::CLOUD_IPS . '?json' );
|
1116 |
if ( is_wp_error( $response ) ) {
|
1117 |
$error_message = $response->get_error_message();
|
1118 |
-
|
1119 |
throw new \Exception( 'Failed to fetch QUIC.cloud whitelist ' . $error_message );
|
1120 |
}
|
1121 |
|
8 |
defined( 'WPINC' ) || exit;
|
9 |
|
10 |
class Cloud extends Base {
|
11 |
+
const LOG_TAG = '❄️';
|
12 |
const CLOUD_SERVER = 'https://api.quic.cloud';
|
13 |
const CLOUD_IPS = 'https://quic.cloud/ips';
|
14 |
const CLOUD_SERVER_DASH = 'https://my.quic.cloud';
|
127 |
return;
|
128 |
}
|
129 |
|
130 |
+
self::debug( 'Latest dev version ' . $this->_summary[ 'version.dev' ] );
|
131 |
|
132 |
if ( version_compare( $this->_summary[ 'version.dev' ], Core::VER, '<=' ) ) {
|
133 |
return;
|
302 |
return;
|
303 |
}
|
304 |
|
305 |
+
self::debug( 'sync_usage ' . json_encode( $usage ) );
|
306 |
|
307 |
foreach ( self::$SERVICES as $v ) {
|
308 |
$this->_summary[ 'usage.' . $v ] = ! empty( $usage[ $v ] ) ? $usage[ $v ] : false;
|
330 |
}
|
331 |
self::save_summary();
|
332 |
|
333 |
+
self::debug( 'Cleared all local service node caches' );
|
334 |
}
|
335 |
|
336 |
/**
|
366 |
|
367 |
// Check if get list correctly
|
368 |
if ( empty( $json[ 'list' ] ) || ! is_array( $json[ 'list' ] ) ) {
|
369 |
+
self::debug( 'request cloud list failed: ', $json );
|
370 |
|
371 |
if ( $json ) {
|
372 |
$msg = __( 'Cloud Error', 'litespeed-cache' ) . ": [Service] $service [Info] " . json_encode( $json );
|
385 |
$min = min( $speed_list );
|
386 |
|
387 |
if ( $min == 99999 ) {
|
388 |
+
self::debug( 'failed to ping all clouds' );
|
389 |
return false;
|
390 |
}
|
391 |
|
398 |
$valid_clouds[] = $node;
|
399 |
}
|
400 |
// Append the lower speed ones
|
401 |
+
else if ( $speed < $min * 4 ) {
|
402 |
$valid_clouds[] = $node;
|
403 |
}
|
404 |
}
|
409 |
return false;
|
410 |
}
|
411 |
|
412 |
+
self::debug( 'Closest nodes list', $valid_clouds );
|
413 |
|
414 |
// Check server load
|
415 |
if ( in_array( $service, self::$SERVICES_LOAD_CHECK ) ) {
|
418 |
$response = wp_remote_get( $v, array( 'timeout' => 5, 'sslverify' => true ) );
|
419 |
if ( is_wp_error( $response ) ) {
|
420 |
$error_message = $response->get_error_message();
|
421 |
+
self::debug( 'failed to do load checker: ' . $error_message );
|
422 |
continue;
|
423 |
}
|
424 |
|
434 |
return false;
|
435 |
}
|
436 |
|
437 |
+
self::debug( 'Closest nodes list after load check', $valid_cloud_loads );
|
438 |
|
439 |
$qualified_list = array_keys( $valid_cloud_loads, min( $valid_cloud_loads ) );
|
440 |
}
|
444 |
|
445 |
$closest = $qualified_list[ array_rand( $qualified_list ) ];
|
446 |
|
447 |
+
self::debug( 'Chose node: ' . $closest );
|
448 |
|
449 |
// store data into option locally
|
450 |
$this->_summary[ 'server.' . $service ] = $closest;
|
500 |
|
501 |
$url .= '?' . http_build_query( $param );
|
502 |
|
503 |
+
self::debug( 'getting from : ' . $url );
|
504 |
|
505 |
$this->_summary[ 'curr_request.' . $service_tag ] = time();
|
506 |
self::save_summary();
|
545 |
if ( ! empty( $this->_summary[ $timestamp_tag . $service_tag ] ) ) {
|
546 |
$expired = $this->_summary[ $timestamp_tag . $service_tag ] + $expiration_req - time();
|
547 |
if ( $expired > 0 ) {
|
548 |
+
self::debug( "❌ try [$service_tag] after $expired seconds" );
|
549 |
|
550 |
if ( $service_tag !== self::API_VER ) {
|
551 |
$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>' );
|
602 |
|
603 |
$url = $server . '/' . $service;
|
604 |
|
605 |
+
self::debug( 'posting to : ' . $url );
|
606 |
|
607 |
$param = array(
|
608 |
'site_url' => home_url(),
|
628 |
private function _parse_response( $response, $service, $service_tag, $server ) {
|
629 |
if ( is_wp_error( $response ) ) {
|
630 |
$error_message = $response->get_error_message();
|
631 |
+
self::debug( 'failed to request: ' . $error_message );
|
632 |
|
633 |
if ( $service !== self::API_VER ) {
|
634 |
$msg = __( 'Failed to request via WordPress', 'litespeed-cache' ) . ': ' . $error_message . " [server] $server [service] $service";
|
635 |
Admin_Display::error( $msg );
|
636 |
|
637 |
// Force redetect node
|
638 |
+
self::debug( 'Node error, redetecting node [svc] ' . $service );
|
639 |
$this->detect_cloud( $service, true );
|
640 |
}
|
641 |
return;
|
644 |
$json = json_decode( $response[ 'body' ], true );
|
645 |
|
646 |
if ( ! is_array( $json ) ) {
|
647 |
+
self::debug( 'failed to decode response json: ' . $response[ 'body' ] );
|
648 |
|
649 |
if ( $service !== self::API_VER ) {
|
650 |
$msg = __( 'Failed to request via WordPress', 'litespeed-cache' ) . ': ' . $response[ 'body' ] . " [server] $server [service] $service";
|
651 |
Admin_Display::error( $msg );
|
652 |
|
653 |
// Force redetect node
|
654 |
+
self::debug( 'Node error, redetecting node [svc] ' . $service );
|
655 |
$this->detect_cloud( $service, true );
|
656 |
}
|
657 |
|
661 |
if ( ! empty( $json[ '_code' ] ) ) {
|
662 |
if ( $json[ '_code' ] == 'heavy_load' || $json[ '_code' ] == 'redetect_node' ) {
|
663 |
// Force redetect node
|
664 |
+
self::debug( 'Node redetecting node [svc] ' . $service );
|
665 |
Admin_Display::info( __( 'Redetected node', 'litespeed-cache' ) . ': ' . Error::msg( $json[ '_code' ] ) );
|
666 |
$this->detect_cloud( $service, true );
|
667 |
}
|
668 |
}
|
669 |
|
670 |
if ( ! empty( $json[ '_503' ] ) ) {
|
671 |
+
self::debug( 'service 503 unavailable temporarily. ' . $json[ '_503' ] );
|
672 |
|
673 |
$msg = __( 'We are working hard to improve your online service experience. The service will be unavailable while we work. We apologize for any inconvenience.', 'litespeed-cache' );
|
674 |
$msg .= ' ' . $json[ '_503' ] . " [server] $server [service] $service";
|
675 |
Admin_Display::error( $msg );
|
676 |
|
677 |
// Force redetect node
|
678 |
+
self::debug( 'Node error, redetecting node [svc] ' . $service );
|
679 |
$this->detect_cloud( $service, true );
|
680 |
|
681 |
return;
|
682 |
}
|
683 |
|
684 |
if ( ! empty( $json[ '_info' ] ) ) {
|
685 |
+
self::debug( '_info: ' . $json[ '_info' ] );
|
686 |
$msg = __( 'Message from QUIC.cloud server', 'litespeed-cache' ) . ': ' . $json[ '_info' ];
|
687 |
$msg .= $this->_parse_link( $json );
|
688 |
Admin_Display::info( $msg );
|
690 |
}
|
691 |
|
692 |
if ( ! empty( $json[ '_note' ] ) ) {
|
693 |
+
self::debug( '_note: ' . $json[ '_note' ] );
|
694 |
$msg = __( 'Message from QUIC.cloud server', 'litespeed-cache' ) . ': ' . $json[ '_note' ];
|
695 |
$msg .= $this->_parse_link( $json );
|
696 |
Admin_Display::note( $msg );
|
698 |
}
|
699 |
|
700 |
if ( ! empty( $json[ '_success' ] ) ) {
|
701 |
+
self::debug( '_success: ' . $json[ '_success' ] );
|
702 |
$msg = __( 'Good news from QUIC.cloud server', 'litespeed-cache' ) . ': ' . $json[ '_success' ];
|
703 |
$msg .= $this->_parse_link( $json );
|
704 |
Admin_Display::succeed( $msg );
|
707 |
|
708 |
// Upgrade is required
|
709 |
if ( ! empty( $json[ '_err_req_v' ] ) ) {
|
710 |
+
self::debug( '_err_req_v: ' . $json[ '_err_req_v' ] );
|
711 |
$msg = sprintf( __( '%1$s plugin version %2$s required for this action.', 'litespeed-cache' ), Core::NAME, 'v' . $json[ '_err_req_v' ] . '+' ) . " [server] $server [service] $service";
|
712 |
|
713 |
// Append upgrade link
|
720 |
|
721 |
// Parse _carry_on info
|
722 |
if ( ! empty( $json[ '_carry_on' ] ) ) {
|
723 |
+
self::debug( 'Carry_on usage', $json[ '_carry_on' ] );
|
724 |
// Store generic info
|
725 |
foreach ( array( 'usage', 'promo' ) as $v ) {
|
726 |
if ( ! empty( $json[ '_carry_on' ][ $v ] ) ) {
|
749 |
// Parse general error msg
|
750 |
if ( empty( $json[ '_res' ] ) || $json[ '_res' ] !== 'ok' ) {
|
751 |
$json_msg = ! empty( $json[ '_msg' ] ) ? $json[ '_msg' ] : 'unknown';
|
752 |
+
self::debug( '❌ _err: ' . $json_msg );
|
753 |
|
754 |
$msg = __( 'Failed to communicate with QUIC.cloud server', 'litespeed-cache' ) . ': ' . Error::msg( $json_msg ) . " [server] $server [service] $service";
|
755 |
$msg .= $this->_parse_link( $json );
|
778 |
self::save_summary();
|
779 |
|
780 |
if ( $json ) {
|
781 |
+
self::debug2( 'response ok', $json );
|
782 |
}
|
783 |
else {
|
784 |
+
self::debug2( 'response ok' );
|
785 |
}
|
786 |
|
787 |
// Only successful request return Array
|
851 |
*/
|
852 |
public function ip_validate() {
|
853 |
if ( empty( $_POST[ 'hash' ] ) ) {
|
854 |
+
self::debug( 'Lack of hash param' );
|
855 |
return self::err( 'lack_of_param' );
|
856 |
}
|
857 |
|
858 |
if ( empty( $this->_api_key ) ) {
|
859 |
+
self::debug( 'Lack of API key' );
|
860 |
return self::err( 'lack_of_api_key' );
|
861 |
}
|
862 |
|
863 |
$to_validate = substr( $this->_api_key, 0, 4 );
|
864 |
if ( $_POST[ 'hash' ] !== md5( $to_validate ) ) {
|
865 |
+
self::debug( '__callback IP request hash wrong: md5(' . $to_validate . ') !== ' . $_POST[ 'hash' ] );
|
866 |
return self::err( 'err_hash' );
|
867 |
}
|
868 |
|
870 |
|
871 |
$res_hash = substr( $this->_api_key, 2, 4 );
|
872 |
|
873 |
+
self::debug( '__callback IP request hash: md5(' . $res_hash . ')' );
|
874 |
|
875 |
return self::ok( array( 'hash' => md5( $res_hash ) ) );
|
876 |
}
|
903 |
$response = wp_remote_get( self::CLOUD_SERVER . '/d/req_key?data=' . Utility::arr2str( $data ) );
|
904 |
if ( is_wp_error( $response ) ) {
|
905 |
$error_message = $response->get_error_message();
|
906 |
+
self::debug( 'failed to gen_key: ' . $error_message );
|
907 |
Admin_Display::error( __( 'Cloud Error', 'litespeed-cache' ) . ': ' . $error_message );
|
908 |
return;
|
909 |
}
|
927 |
self::save_summary();
|
928 |
|
929 |
$json_msg = ! empty( $json[ '_msg' ] ) ? $json[ '_msg' ] : 'unknown';
|
930 |
+
self::debug( '❌ _err: ' . $json_msg );
|
931 |
|
932 |
$msg = __( 'Failed to communicate with QUIC.cloud server', 'litespeed-cache' ) . ': ' . Error::msg( $json_msg );
|
933 |
$msg .= $this->_parse_link( $json );
|
938 |
|
939 |
// This is a ok msg
|
940 |
if ( ! empty( $json[ '_msg' ] ) ) {
|
941 |
+
self::debug( '_msg: ' . $json[ '_msg' ] );
|
942 |
|
943 |
$msg = __( 'Message from QUIC.cloud server', 'litespeed-cache' ) . ': ' . Error::msg( $json[ '_msg' ] );
|
944 |
$msg .= $this->_parse_link( $json );
|
946 |
return;
|
947 |
}
|
948 |
|
949 |
+
self::debug( '✅ send request for key successfully.' );
|
950 |
|
951 |
Admin_Display::succeed( __( 'Applied for Domain Key successfully. Please wait for result. Domain Key will be automatically sent to your WordPress.', 'litespeed-cache' ) );
|
952 |
}
|
966 |
|
967 |
Control::set_nocache( 'Cloud token validation' );
|
968 |
|
969 |
+
self::debug( '✅ __callback token validation passed' );
|
970 |
|
971 |
return self::ok( array( 'hash' => md5( substr( $this->_summary[ 'token' ], 3, 8 ) ) ) );
|
972 |
}
|
998 |
unset( $this->_summary[ 'token' ] );
|
999 |
self::save_summary();
|
1000 |
|
1001 |
+
self::debug( '✅ saved auth_key' );
|
1002 |
Admin_Display::succeed( '🎊 ' . __( 'Congratulations, your Domain Key has been approved! The setting has been updated accordingly.', 'litespeed-cache' ) );
|
1003 |
|
1004 |
return self::ok();
|
1011 |
*/
|
1012 |
private function _validate_hash( $offset = 0 ) {
|
1013 |
if ( empty( $_POST[ 'hash' ] ) ) {
|
1014 |
+
self::debug( 'Lack of hash param' );
|
1015 |
throw new \Exception( 'lack_of_param' );
|
1016 |
}
|
1017 |
|
1018 |
if ( empty( $this->_summary[ 'token' ] ) ) {
|
1019 |
+
self::debug( 'token validate failed: token not exist' );
|
1020 |
throw new \Exception( 'lack_of_local_token' );
|
1021 |
}
|
1022 |
|
1023 |
if ( $_POST[ 'hash' ] !== md5( substr( $this->_summary[ 'token' ], $offset, 8 ) ) ) {
|
1024 |
+
self::debug( 'token validate failed: token mismatch hash !== ' . $_POST[ 'hash' ] );
|
1025 |
throw new \Exception( 'mismatch' );
|
1026 |
}
|
1027 |
}
|
1093 |
|
1094 |
$res = $this->cls( 'Router' )->ip_access( $this->_summary[ 'ips' ] );
|
1095 |
if ( ! $res ) {
|
1096 |
+
self::debug( '❌ Not our cloud IP' );
|
1097 |
|
1098 |
// Refresh IP list for future detection
|
1099 |
$this->_update_ips();
|
1100 |
}
|
1101 |
else {
|
1102 |
+
self::debug( '✅ Passed Cloud IP verification' );
|
1103 |
}
|
1104 |
|
1105 |
return $res;
|
1111 |
* @since 4.2
|
1112 |
*/
|
1113 |
private function _update_ips() {
|
1114 |
+
self::debug( 'Load remote Cloud IP list from ' . self::CLOUD_IPS );
|
1115 |
|
1116 |
$response = wp_remote_get( self::CLOUD_IPS . '?json' );
|
1117 |
if ( is_wp_error( $response ) ) {
|
1118 |
$error_message = $response->get_error_message();
|
1119 |
+
self::debug( 'failed to get ip whitelist: ' . $error_message );
|
1120 |
throw new \Exception( 'Failed to fetch QUIC.cloud whitelist ' . $error_message );
|
1121 |
}
|
1122 |
|
src/conf.cls.php
CHANGED
@@ -63,17 +63,20 @@ class Conf extends Base {
|
|
63 |
$ver = $this->conf( self::_VER );
|
64 |
|
65 |
/**
|
66 |
-
* Don't upgrade or run new installations other than from backend visit
|
67 |
* In this case, just use default conf
|
68 |
*/
|
|
|
69 |
if ( ! $ver || $ver != Core::VER ) {
|
70 |
-
if ( ! is_admin() && ! defined( 'LITESPEED_CLI' ) ) {
|
|
|
|
|
71 |
$this->set_conf( $this->load_default_vals() );
|
72 |
$this->_try_load_site_options();
|
73 |
|
74 |
// Disable new installation auto upgrade to avoid overwritten to customized data.ini
|
75 |
if ( ! $ver ) {
|
76 |
-
|
77 |
}
|
78 |
return;
|
79 |
}
|
@@ -87,7 +90,7 @@ class Conf extends Base {
|
|
87 |
Data::cls()->try_upgrade_conf_3_0();
|
88 |
}
|
89 |
else {
|
90 |
-
|
91 |
|
92 |
/**
|
93 |
* Upgrade conf
|
@@ -125,14 +128,14 @@ class Conf extends Base {
|
|
125 |
$this->_try_load_site_options();
|
126 |
|
127 |
// Mark as conf loaded
|
128 |
-
|
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 (
|
136 |
// Check new version @since 2.9.3
|
137 |
Cloud::version_check( 'activate' . ( defined( 'LSCWP_REF' ) ? '_' . LSCWP_REF : '' ) );
|
138 |
|
@@ -477,6 +480,11 @@ class Conf extends Base {
|
|
477 |
if ( $this->_conf_cron( $id ) ) {
|
478 |
$this->cls( 'Task' )->try_clean( $id );
|
479 |
}
|
|
|
|
|
|
|
|
|
|
|
480 |
}
|
481 |
}
|
482 |
|
63 |
$ver = $this->conf( self::_VER );
|
64 |
|
65 |
/**
|
66 |
+
* Don't upgrade or run new installations other than from backend visit at the 2nd time (delay the update)
|
67 |
* In this case, just use default conf
|
68 |
*/
|
69 |
+
$has_delay_conf_tag = self::get_option( '__activation' );
|
70 |
if ( ! $ver || $ver != Core::VER ) {
|
71 |
+
if ( ( ! is_admin() && ! defined( 'LITESPEED_CLI' ) ) || ! $has_delay_conf_tag ) { // Reuse __activation to control the delay conf update
|
72 |
+
$has_delay_conf_tag || self::update_option( '__activation', Core::VER );
|
73 |
+
|
74 |
$this->set_conf( $this->load_default_vals() );
|
75 |
$this->_try_load_site_options();
|
76 |
|
77 |
// Disable new installation auto upgrade to avoid overwritten to customized data.ini
|
78 |
if ( ! $ver ) {
|
79 |
+
defined( 'LITESPEED_BYPASS_AUTO_V' ) || define( 'LITESPEED_BYPASS_AUTO_V', true );
|
80 |
}
|
81 |
return;
|
82 |
}
|
90 |
Data::cls()->try_upgrade_conf_3_0();
|
91 |
}
|
92 |
else {
|
93 |
+
defined( 'LSCWP_CUR_V' ) || define( 'LSCWP_CUR_V', $ver );
|
94 |
|
95 |
/**
|
96 |
* Upgrade conf
|
128 |
$this->_try_load_site_options();
|
129 |
|
130 |
// Mark as conf loaded
|
131 |
+
defined( 'LITESPEED_CONF_LOADED' ) || define( 'LITESPEED_CONF_LOADED', true );
|
132 |
|
133 |
/**
|
134 |
* Activation delayed file update
|
135 |
* Pros: This is to avoid file correction script changed in new versions
|
136 |
* Cons: Conf upgrade won't get file correction if there is new values that are used in file
|
137 |
*/
|
138 |
+
if ( $has_delay_conf_tag ) {
|
139 |
// Check new version @since 2.9.3
|
140 |
Cloud::version_check( 'activate' . ( defined( 'LSCWP_REF' ) ? '_' . LSCWP_REF : '' ) );
|
141 |
|
480 |
if ( $this->_conf_cron( $id ) ) {
|
481 |
$this->cls( 'Task' )->try_clean( $id );
|
482 |
}
|
483 |
+
|
484 |
+
// Reset crawler bypassed list when any of the options WebP replace, guest mode, or cache mobile got changed
|
485 |
+
if ( $id == self::O_IMG_OPTM_WEBP_REPLACE || $id == self::O_GUEST || $id == self::O_CACHE_MOBILE ) {
|
486 |
+
$this->cls( 'Crawler' )->clear_disabled_list();
|
487 |
+
}
|
488 |
}
|
489 |
}
|
490 |
|
src/control.cls.php
CHANGED
@@ -532,6 +532,11 @@ class Control extends Root {
|
|
532 |
public function output() {
|
533 |
$hdr = self::X_HEADER . ': ';
|
534 |
|
|
|
|
|
|
|
|
|
|
|
535 |
// Guest mode directly return cacheable result
|
536 |
if ( defined( 'LITESPEED_GUEST' ) && LITESPEED_GUEST ) {
|
537 |
// If is POST, no cache
|
532 |
public function output() {
|
533 |
$hdr = self::X_HEADER . ': ';
|
534 |
|
535 |
+
if ( defined( 'DONOTCACHEPAGE' ) && DONOTCACHEPAGE ) {
|
536 |
+
$hdr .= 'no-cache';
|
537 |
+
return $hdr;
|
538 |
+
}
|
539 |
+
|
540 |
// Guest mode directly return cacheable result
|
541 |
if ( defined( 'LITESPEED_GUEST' ) && LITESPEED_GUEST ) {
|
542 |
// If is POST, no cache
|
src/crawler.cls.php
CHANGED
@@ -58,6 +58,50 @@ class Crawler extends Root {
|
|
58 |
Debug2::debug( '🐞 Init' );
|
59 |
}
|
60 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
/**
|
62 |
* Overwride get_summary to init elements
|
63 |
*
|
@@ -166,6 +210,17 @@ class Crawler extends Root {
|
|
166 |
|
167 |
$this->list_crawlers();
|
168 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
// In case crawlers are all done but not reload, reload it
|
170 |
if ( empty( $this->_summary[ 'curr_crawler' ] ) || empty( $this->_crawlers[ $this->_summary[ 'curr_crawler' ] ] ) ) {
|
171 |
$this->_summary[ 'curr_crawler' ] = 0;
|
58 |
Debug2::debug( '🐞 Init' );
|
59 |
}
|
60 |
|
61 |
+
/**
|
62 |
+
* Check whether the current crawler is active/runable/useable/enabled/want it to work or not
|
63 |
+
*
|
64 |
+
* @since 4.3
|
65 |
+
*/
|
66 |
+
public function is_active( $curr ){
|
67 |
+
$bypass_list = self::get_option( 'bypass_list' , array() );
|
68 |
+
return ! in_array( $curr, $bypass_list );
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Toggle the current crawler's activeness state, i.e., runable/useable/enabled/want it to work or not, and return the updated state
|
73 |
+
*
|
74 |
+
* @since 4.3
|
75 |
+
*/
|
76 |
+
public function toggle_activeness( $curr ) { // param type: int
|
77 |
+
$bypass_list = self::get_option( 'bypass_list' , array() );
|
78 |
+
if ( in_array( $curr, $bypass_list ) ) { // when the ith opt was off / in the bypassed list, turn it on / remove it from the list
|
79 |
+
unset( $bypass_list[ array_search( $curr, $bypass_list ) ] );
|
80 |
+
$bypass_list = array_values( $bypass_list );
|
81 |
+
self::update_option( 'bypass_list' , $bypass_list );
|
82 |
+
return true;
|
83 |
+
} else { // when the ith opt was on / not in the bypassed list, turn it off / add it to the list
|
84 |
+
$bypass_list[] = ( int ) $curr;
|
85 |
+
self::update_option( 'bypass_list' , $bypass_list );
|
86 |
+
return false;
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Clear bypassed list
|
92 |
+
*
|
93 |
+
* @since 4.3
|
94 |
+
* @access public
|
95 |
+
*/
|
96 |
+
public function clear_disabled_list() {
|
97 |
+
self::delete_option( 'bypass_list' );
|
98 |
+
|
99 |
+
$msg = __( 'Crawler disabled list is cleared! All crawlers are set to active! ', 'litespeed-cache' );
|
100 |
+
Admin_Display::note( $msg );
|
101 |
+
|
102 |
+
Debug2::debug( '🐞 All crawlers are set to active...... ' );
|
103 |
+
}
|
104 |
+
|
105 |
/**
|
106 |
* Overwride get_summary to init elements
|
107 |
*
|
210 |
|
211 |
$this->list_crawlers();
|
212 |
|
213 |
+
// Skip the crawlers that in bypassed list
|
214 |
+
while ( ! $this->is_active( $this->_summary[ 'curr_crawler' ] ) && $this->_summary[ 'curr_crawler' ] < count( $this->_crawlers ) ) {
|
215 |
+
Debug2::debug( '🐞 Skipped the Crawler #' . $this->_summary[ 'curr_crawler' ] . ' ......' );
|
216 |
+
$this->_summary[ 'curr_crawler' ]++;
|
217 |
+
}
|
218 |
+
if ( $this->_summary[ 'curr_crawler' ] >= count( $this->_crawlers ) ) {
|
219 |
+
$this->_end_reason = 'end';
|
220 |
+
$this->_terminate_running();
|
221 |
+
return;
|
222 |
+
}
|
223 |
+
|
224 |
// In case crawlers are all done but not reload, reload it
|
225 |
if ( empty( $this->_summary[ 'curr_crawler' ] ) || empty( $this->_crawlers[ $this->_summary[ 'curr_crawler' ] ] ) ) {
|
226 |
$this->_summary[ 'curr_crawler' ] = 0;
|
src/css.cls.php
CHANGED
@@ -83,10 +83,15 @@ class CSS extends Base {
|
|
83 |
return null;
|
84 |
}
|
85 |
|
|
|
|
|
|
|
|
|
|
|
86 |
// Append default critical css
|
87 |
$rules .= $this->conf( self::O_OPTM_CCSS_CON );
|
88 |
|
89 |
-
return '<style id="litespeed-ccss">' . $rules . '</style>';
|
90 |
}
|
91 |
|
92 |
/**
|
@@ -194,7 +199,14 @@ class CSS extends Base {
|
|
194 |
*
|
195 |
* @since 4.0
|
196 |
*/
|
197 |
-
public function load_ucss( $request_url ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
$filepath_prefix = $this->_build_filepath_prefix( 'ucss' );
|
199 |
$url_tag = is_404() ? '404' : $request_url;
|
200 |
|
@@ -205,10 +217,21 @@ class CSS extends Base {
|
|
205 |
|
206 |
if ( file_exists( $static_file ) ) {
|
207 |
Debug2::debug2( '[UCSS] existing ucss ' . $static_file );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
return $filepath_prefix . $filename . '.css';
|
209 |
}
|
210 |
}
|
211 |
|
|
|
|
|
|
|
|
|
212 |
$uid = get_current_user_id();
|
213 |
|
214 |
$ua = ! empty( $_SERVER[ 'HTTP_USER_AGENT' ] ) ? $_SERVER[ 'HTTP_USER_AGENT' ] : '';
|
83 |
return null;
|
84 |
}
|
85 |
|
86 |
+
$error_tag = '';
|
87 |
+
if ( substr( $rules, 0, 2 ) == '/*' && substr( $rules, -2 ) == '*/' ) {
|
88 |
+
$error_tag = ' data-error="failed to generate"';
|
89 |
+
}
|
90 |
+
|
91 |
// Append default critical css
|
92 |
$rules .= $this->conf( self::O_OPTM_CCSS_CON );
|
93 |
|
94 |
+
return '<style id="litespeed-ccss"' . $error_tag . '>' . $rules . '</style>';
|
95 |
}
|
96 |
|
97 |
/**
|
199 |
*
|
200 |
* @since 4.0
|
201 |
*/
|
202 |
+
public function load_ucss( $request_url, $dry_run = false ) {
|
203 |
+
// Check UCSS URI excludes
|
204 |
+
$ucss_exc = apply_filters( 'litespeed_ucss_exc', $this->conf( self::O_OPTM_UCSS_EXC ) );
|
205 |
+
if ( $ucss_exc && $hit = Utility::str_hit_array( $request_url, $ucss_exc ) ) {
|
206 |
+
Debug2::debug( '[CSS] UCSS bypassed due to UCSS URI Exclude setting: ' . $hit );
|
207 |
+
return false;
|
208 |
+
}
|
209 |
+
|
210 |
$filepath_prefix = $this->_build_filepath_prefix( 'ucss' );
|
211 |
$url_tag = is_404() ? '404' : $request_url;
|
212 |
|
217 |
|
218 |
if ( file_exists( $static_file ) ) {
|
219 |
Debug2::debug2( '[UCSS] existing ucss ' . $static_file );
|
220 |
+
// Check if is error comment inside only
|
221 |
+
$tmp = File::read( $static_file );
|
222 |
+
if ( substr( $tmp, 0, 2 ) == '/*' && substr( $tmp, -2 ) == '*/' ) {
|
223 |
+
Debug2::debug2( '[UCSS] existing ucss is error only: ' . $tmp );
|
224 |
+
return false;
|
225 |
+
}
|
226 |
+
|
227 |
return $filepath_prefix . $filename . '.css';
|
228 |
}
|
229 |
}
|
230 |
|
231 |
+
if ( $dry_run ) {
|
232 |
+
return false;
|
233 |
+
}
|
234 |
+
|
235 |
$uid = get_current_user_id();
|
236 |
|
237 |
$ua = ! empty( $_SERVER[ 'HTTP_USER_AGENT' ] ) ? $_SERVER[ 'HTTP_USER_AGENT' ] : '';
|
src/data.cls.php
CHANGED
@@ -210,7 +210,7 @@ class Data extends Root {
|
|
210 |
return;
|
211 |
}
|
212 |
|
213 |
-
Admin_Display::info( sprintf( __( 'The database has been upgrading in the background since %s. This message will disappear once upgrade is complete.' ), '<code>' . Utility::readable_time( $is_upgrading ) . '</code>' ) . ' [LiteSpeed]', true );
|
214 |
}
|
215 |
|
216 |
/**
|
@@ -459,7 +459,8 @@ class Data extends Root {
|
|
459 |
$url_row = $wpdb->get_row( $wpdb->prepare( $q, $request_url ), ARRAY_A );
|
460 |
if ( ! $url_row ) {
|
461 |
$q = "INSERT INTO `$tb_url` SET url=%s";
|
462 |
-
$
|
|
|
463 |
}
|
464 |
else {
|
465 |
$url_id = $url_row[ 'id' ];
|
210 |
return;
|
211 |
}
|
212 |
|
213 |
+
Admin_Display::info( sprintf( __( 'The database has been upgrading in the background since %s. This message will disappear once upgrade is complete.', 'litespeed-cache' ), '<code>' . Utility::readable_time( $is_upgrading ) . '</code>' ) . ' [LiteSpeed]', true );
|
214 |
}
|
215 |
|
216 |
/**
|
459 |
$url_row = $wpdb->get_row( $wpdb->prepare( $q, $request_url ), ARRAY_A );
|
460 |
if ( ! $url_row ) {
|
461 |
$q = "INSERT INTO `$tb_url` SET url=%s";
|
462 |
+
$wpdb->query( $wpdb->prepare( $q, $request_url ) );
|
463 |
+
$url_id = $wpdb->insert_id;
|
464 |
}
|
465 |
else {
|
466 |
$url_id = $url_row[ 'id' ];
|
src/doc.cls.php
CHANGED
@@ -14,6 +14,18 @@ defined( 'WPINC' ) || exit;
|
|
14 |
class Doc {
|
15 |
// protected static $_instance;
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
/**
|
18 |
* Privacy policy
|
19 |
*
|
14 |
class Doc {
|
15 |
// protected static $_instance;
|
16 |
|
17 |
+
/**
|
18 |
+
* Changes affect crawler list warning
|
19 |
+
*
|
20 |
+
* @since 4.3
|
21 |
+
* @access public
|
22 |
+
*/
|
23 |
+
public static function crawler_affected() {
|
24 |
+
echo '<font class="litespeed-primary">';
|
25 |
+
echo '⚠️ ' . __( 'This setting will regenerate crawler list and clear the disabled list!' , 'litespeed-cache' );
|
26 |
+
echo '</font>';
|
27 |
+
}
|
28 |
+
|
29 |
/**
|
30 |
* Privacy policy
|
31 |
*
|
src/gui.cls.php
CHANGED
@@ -722,8 +722,8 @@ class GUI extends Base {
|
|
722 |
esc_url( $url ),
|
723 |
esc_attr( $name ),
|
724 |
esc_attr( $title ),
|
725 |
-
esc_attr( sprintf( __( 'Install %s' ), $title ) ),
|
726 |
-
__( 'Install Now' )
|
727 |
);
|
728 |
|
729 |
return $action;
|
@@ -742,15 +742,15 @@ class GUI extends Base {
|
|
742 |
$details_url = self_admin_url( 'plugin-install.php?tab=plugin-information&plugin=' . $name . '§ion=changelog&TB_iframe=true&width=600&height=800' );
|
743 |
$file = $name . '/' . $name . '.php';
|
744 |
|
745 |
-
$msg = sprintf( __( '<a href="%1$s" %2$s>View version %3$s details</a> or <a href="%4$s" %5$s target="_blank">update now</a>.' ),
|
746 |
esc_url( $details_url ),
|
747 |
sprintf( 'class="thickbox open-plugin-details-modal" aria-label="%s"',
|
748 |
-
esc_attr( sprintf( __( 'View %1$s version %2$s details' ), $title, $v ) )
|
749 |
),
|
750 |
$v,
|
751 |
wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $file, 'upgrade-plugin_' . $file ),
|
752 |
sprintf( 'class="update-link" aria-label="%s"',
|
753 |
-
esc_attr( sprintf( __( 'Update %s now' ), $title ) )
|
754 |
)
|
755 |
);
|
756 |
|
722 |
esc_url( $url ),
|
723 |
esc_attr( $name ),
|
724 |
esc_attr( $title ),
|
725 |
+
esc_attr( sprintf( __( 'Install %s', 'litespeed-cache' ), $title ) ),
|
726 |
+
__( 'Install Now', 'litespeed-cache' )
|
727 |
);
|
728 |
|
729 |
return $action;
|
742 |
$details_url = self_admin_url( 'plugin-install.php?tab=plugin-information&plugin=' . $name . '§ion=changelog&TB_iframe=true&width=600&height=800' );
|
743 |
$file = $name . '/' . $name . '.php';
|
744 |
|
745 |
+
$msg = sprintf( __( '<a href="%1$s" %2$s>View version %3$s details</a> or <a href="%4$s" %5$s target="_blank">update now</a>.', 'litespeed-cache' ),
|
746 |
esc_url( $details_url ),
|
747 |
sprintf( 'class="thickbox open-plugin-details-modal" aria-label="%s"',
|
748 |
+
esc_attr( sprintf( __( 'View %1$s version %2$s details', 'litespeed-cache' ), $title, $v ) )
|
749 |
),
|
750 |
$v,
|
751 |
wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $file, 'upgrade-plugin_' . $file ),
|
752 |
sprintf( 'class="update-link" aria-label="%s"',
|
753 |
+
esc_attr( sprintf( __( 'Update %s now', 'litespeed-cache' ), $title ) )
|
754 |
)
|
755 |
);
|
756 |
|
src/img-optm.cls.php
CHANGED
@@ -933,7 +933,9 @@ class Img_Optm extends Base {
|
|
933 |
* Use wp orignal get func to avoid allow_url_open off issue
|
934 |
* @since 1.6.5
|
935 |
*/
|
936 |
-
$
|
|
|
|
|
937 |
if ( is_wp_error( $response ) ) {
|
938 |
$error_message = $response->get_error_message();
|
939 |
Debug2::debug( '[Img_Optm] ❌ failed to pull image: ' . $error_message );
|
933 |
* Use wp orignal get func to avoid allow_url_open off issue
|
934 |
* @since 1.6.5
|
935 |
*/
|
936 |
+
$image_url = $server_info[ 'server' ] . '/' . $server_info[ 'ori' ];
|
937 |
+
Debug2::debug( '[Img_Optm] Pulling image: ' . $image_url );
|
938 |
+
$response = wp_remote_get( $image_url, array( 'timeout' => 60 ) );
|
939 |
if ( is_wp_error( $response ) ) {
|
940 |
$error_message = $response->get_error_message();
|
941 |
Debug2::debug( '[Img_Optm] ❌ failed to pull image: ' . $error_message );
|
src/lang.cls.php
CHANGED
@@ -108,7 +108,9 @@ class Lang extends Base {
|
|
108 |
self::O_OPTM_CSS_COMB => __( 'CSS Combine', 'litespeed-cache' ),
|
109 |
self::O_OPTM_CSS_COMB_EXT_INL => __( 'CSS Combine External and Inline', 'litespeed-cache' ),
|
110 |
self::O_OPTM_UCSS => __( 'Generate UCSS', 'litespeed-cache' ),
|
|
|
111 |
self::O_OPTM_UCSS_WHITELIST => __( 'UCSS Whitelist', 'litespeed-cache' ),
|
|
|
112 |
self::O_OPTM_CSS_HTTP2 => __( 'CSS HTTP/2 Push', 'litespeed-cache' ),
|
113 |
self::O_OPTM_JS_MIN => __( 'JS Minify', 'litespeed-cache' ),
|
114 |
self::O_OPTM_JS_COMB => __( 'JS Combine', 'litespeed-cache' ),
|
108 |
self::O_OPTM_CSS_COMB => __( 'CSS Combine', 'litespeed-cache' ),
|
109 |
self::O_OPTM_CSS_COMB_EXT_INL => __( 'CSS Combine External and Inline', 'litespeed-cache' ),
|
110 |
self::O_OPTM_UCSS => __( 'Generate UCSS', 'litespeed-cache' ),
|
111 |
+
self::O_OPTM_UCSS_INLINE => __( 'UCSS Inline', 'litespeed-cache' ),
|
112 |
self::O_OPTM_UCSS_WHITELIST => __( 'UCSS Whitelist', 'litespeed-cache' ),
|
113 |
+
self::O_OPTM_UCSS_EXC => __( 'UCSS URI Excludes', 'litespeed-cache' ),
|
114 |
self::O_OPTM_CSS_HTTP2 => __( 'CSS HTTP/2 Push', 'litespeed-cache' ),
|
115 |
self::O_OPTM_JS_MIN => __( 'JS Minify', 'litespeed-cache' ),
|
116 |
self::O_OPTM_JS_COMB => __( 'JS Combine', 'litespeed-cache' ),
|
src/optimize.cls.php
CHANGED
@@ -35,6 +35,7 @@ class Optimize extends Base {
|
|
35 |
private $dns_prefetch;
|
36 |
private $_ggfonts_urls = array();
|
37 |
private $_ccss;
|
|
|
38 |
|
39 |
private $__optimizer;
|
40 |
|
@@ -43,6 +44,7 @@ class Optimize extends Base {
|
|
43 |
|
44 |
private static $_var_i = 0;
|
45 |
private $_var_preserve_js = array();
|
|
|
46 |
|
47 |
private $i2 = 0;
|
48 |
|
@@ -65,7 +67,11 @@ class Optimize extends Base {
|
|
65 |
$this->cfg_css_async = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_CSS_ASYNC );
|
66 |
if ( $this->cfg_css_async ) {
|
67 |
if ( ! $this->conf( self::O_API_KEY ) ) {
|
68 |
-
Debug2::debug( '[Optm] ❌ CCSS set to OFF due to
|
|
|
|
|
|
|
|
|
69 |
$this->cfg_css_async = false;
|
70 |
}
|
71 |
}
|
@@ -236,6 +242,9 @@ class Optimize extends Base {
|
|
236 |
* @access private
|
237 |
*/
|
238 |
private function _optimize() {
|
|
|
|
|
|
|
239 |
$this->cfg_http2_css = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_CSS_HTTP2 );
|
240 |
$this->cfg_http2_js = ! defined( 'LITESPEED_GUEST_OPTM' ) && $this->conf( self::O_OPTM_JS_HTTP2 );
|
241 |
$this->cfg_css_min = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_CSS_MIN );
|
@@ -257,6 +266,10 @@ class Optimize extends Base {
|
|
257 |
Debug2::debug( '[Optm] ❌ CCSS set to OFF due to CCSS not generated yet' );
|
258 |
$this->cfg_css_async = false;
|
259 |
}
|
|
|
|
|
|
|
|
|
260 |
}
|
261 |
|
262 |
do_action( 'litespeed_optm' );
|
@@ -274,21 +287,35 @@ class Optimize extends Base {
|
|
274 |
if ( $src_list ) {
|
275 |
// IF combine
|
276 |
if ( $this->cfg_css_comb ) {
|
277 |
-
|
278 |
-
if ( $
|
279 |
-
|
280 |
-
if ( $
|
281 |
-
$this->
|
282 |
-
|
283 |
-
|
284 |
-
$this->
|
285 |
}
|
|
|
286 |
|
287 |
-
|
288 |
-
$
|
289 |
|
290 |
-
|
291 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
}
|
293 |
}
|
294 |
// Only minify
|
@@ -376,8 +403,9 @@ class Optimize extends Base {
|
|
376 |
}
|
377 |
|
378 |
// Append JS inline var for preserved ESI
|
|
|
379 |
if ( $this->_var_preserve_js ) {
|
380 |
-
$this->html_head .=
|
381 |
Debug2::debug2( '[Optm] Inline JS defer vars', $this->_var_preserve_js );
|
382 |
}
|
383 |
|
@@ -416,6 +444,11 @@ class Optimize extends Base {
|
|
416 |
$this->html_head = $this->cls( 'CSS' )->prepare_html_lazy() . $this->html_head;
|
417 |
}
|
418 |
|
|
|
|
|
|
|
|
|
|
|
419 |
// Check if there is any critical css rules setting
|
420 |
if ( $this->cfg_css_async && $this->_ccss ) {
|
421 |
$this->html_head = $this->_ccss . $this->html_head;
|
@@ -461,7 +494,7 @@ class Optimize extends Base {
|
|
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 ) {
|
@@ -724,8 +757,10 @@ class Optimize extends Base {
|
|
724 |
$static_file = LITESPEED_STATIC_DIR . '/' . $filename;
|
725 |
File::save( $static_file, $content, true );
|
726 |
|
727 |
-
$qs_hash = substr( md5( $src ), -5 );
|
728 |
-
return LITESPEED_STATIC_URL . "/$filename?ver=$qs_hash";
|
|
|
|
|
729 |
}
|
730 |
|
731 |
/**
|
@@ -736,8 +771,6 @@ class Optimize extends Base {
|
|
736 |
*/
|
737 |
private function _build_hash_url( $src_list, $file_type = 'css' ) {
|
738 |
// $url_sensitive = $this->conf( self::O_OPTM_CSS_UNIQUE ) && $file_type == 'css'; // If need to keep unique CSS per URI
|
739 |
-
global $wp;
|
740 |
-
$request_url = home_url( $wp->request );
|
741 |
|
742 |
// Replace preserved ESI (before generating hash)
|
743 |
if ( $file_type == 'js' ) {
|
@@ -750,15 +783,15 @@ class Optimize extends Base {
|
|
750 |
}
|
751 |
|
752 |
$minify = $file_type === 'css' ? $this->cfg_css_min : $this->cfg_js_min;
|
753 |
-
$file_path = $this->__optimizer->serve( $
|
754 |
|
755 |
if ( ! $file_path ) {
|
756 |
return false; // Failed to generate
|
757 |
}
|
758 |
|
759 |
-
|
760 |
// As filename is alreay realted to filecon md5, no need QS anymore
|
761 |
-
return LITESPEED_STATIC_URL . $file_path;
|
762 |
}
|
763 |
|
764 |
/**
|
@@ -907,8 +940,7 @@ class Optimize extends Base {
|
|
907 |
if ( strpos( $attrs, ' type=' ) !== false ) {
|
908 |
$attrs = preg_replace( '# type=([\'"])([^\1]+)\1#isU', '', $attrs );
|
909 |
}
|
910 |
-
$this->i2
|
911 |
-
return '<script' . $attrs . ' type="litespeed/javascript" data-i="' . $this->i2 . '">' . $con . '</script>';
|
912 |
// return '<script' . $attrs . ' type="litespeed/javascript" data-i="' . $this->i2 . '" src="data:text/javascript;base64,' . base64_encode( $con ) . '"></script>';
|
913 |
// return '<script' . $attrs . ' type="litespeed/javascript">' . $con . '</script>';
|
914 |
}
|
@@ -932,6 +964,7 @@ class Optimize extends Base {
|
|
932 |
$con = str_replace( $esi_placeholder, $js_var, $con );
|
933 |
$this->_var_preserve_js[] = $js_var . '=' . $esi_placeholder;
|
934 |
}
|
|
|
935 |
return $con;
|
936 |
}
|
937 |
|
@@ -1144,8 +1177,7 @@ class Optimize extends Base {
|
|
1144 |
if ( strpos( $ori, ' type=' ) !== false ) {
|
1145 |
$ori = preg_replace( '# type=([\'"])([^\1]+)\1#isU', '', $ori );
|
1146 |
}
|
1147 |
-
|
1148 |
-
return str_replace( ' src=', ' type="litespeed/javascript" data-i="' . $this->i2 . '" data-src=', $ori );
|
1149 |
}
|
1150 |
|
1151 |
return str_replace( '></script>', ' defer data-deferred="1"></script>', $ori );
|
35 |
private $dns_prefetch;
|
36 |
private $_ggfonts_urls = array();
|
37 |
private $_ccss;
|
38 |
+
private $_ucss = false;
|
39 |
|
40 |
private $__optimizer;
|
41 |
|
44 |
|
45 |
private static $_var_i = 0;
|
46 |
private $_var_preserve_js = array();
|
47 |
+
private $_request_url;
|
48 |
|
49 |
private $i2 = 0;
|
50 |
|
67 |
$this->cfg_css_async = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_CSS_ASYNC );
|
68 |
if ( $this->cfg_css_async ) {
|
69 |
if ( ! $this->conf( self::O_API_KEY ) ) {
|
70 |
+
Debug2::debug( '[Optm] ❌ CCSS set to OFF due to missing domain key' );
|
71 |
+
$this->cfg_css_async = false;
|
72 |
+
}
|
73 |
+
if ( ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_UCSS ) ) && $this->conf( self::O_OPTM_UCSS_INLINE ) ) {
|
74 |
+
Debug2::debug( '[Optm] ❌ CCSS set to OFF due to UCSS Inline' );
|
75 |
$this->cfg_css_async = false;
|
76 |
}
|
77 |
}
|
242 |
* @access private
|
243 |
*/
|
244 |
private function _optimize() {
|
245 |
+
global $wp;
|
246 |
+
$this->_request_url = home_url( $wp->request );
|
247 |
+
|
248 |
$this->cfg_http2_css = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_CSS_HTTP2 );
|
249 |
$this->cfg_http2_js = ! defined( 'LITESPEED_GUEST_OPTM' ) && $this->conf( self::O_OPTM_JS_HTTP2 );
|
250 |
$this->cfg_css_min = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_CSS_MIN );
|
266 |
Debug2::debug( '[Optm] ❌ CCSS set to OFF due to CCSS not generated yet' );
|
267 |
$this->cfg_css_async = false;
|
268 |
}
|
269 |
+
else if ( strpos( $this->_ccss, '<style id="litespeed-ccss" data-error' ) === 0 ) {
|
270 |
+
Debug2::debug( '[Optm] ❌ CCSS set to OFF due to CCSS failed to generate' );
|
271 |
+
$this->cfg_css_async = false;
|
272 |
+
}
|
273 |
}
|
274 |
|
275 |
do_action( 'litespeed_optm' );
|
287 |
if ( $src_list ) {
|
288 |
// IF combine
|
289 |
if ( $this->cfg_css_comb ) {
|
290 |
+
// Check if has inline UCSS enabled or not
|
291 |
+
if ( ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_UCSS ) ) && $this->conf( self::O_OPTM_UCSS_INLINE ) ) {
|
292 |
+
$final_file_path = $this->cls( 'CSS' )->load_ucss( $this->_request_url, true );
|
293 |
+
if ( $final_file_path ) {
|
294 |
+
$this->_ucss = File::read( LITESPEED_STATIC_DIR . $final_file_path );
|
295 |
+
|
296 |
+
// Drop all css
|
297 |
+
$this->content = str_replace( $html_list, '', $this->content );
|
298 |
}
|
299 |
+
}
|
300 |
|
301 |
+
if ( ! $this->_ucss ) {
|
302 |
+
$url = $this->_build_hash_url( $src_list );
|
303 |
|
304 |
+
if ( $url ) {
|
305 |
+
// Handle css async load
|
306 |
+
if ( $this->cfg_css_async ) {
|
307 |
+
$this->html_head .= '<link rel="preload" data-asynced="1" data-optimized="2" as="style" onload="this.onload=null;this.rel=\'stylesheet\'" href="' . $url . '" />'; // todo: How to use " in attr wrapper "
|
308 |
+
}
|
309 |
+
else {
|
310 |
+
$this->html_head .= '<link data-optimized="2" rel="stylesheet" href="' . $url . '" />';// use 2 as combined
|
311 |
+
}
|
312 |
+
|
313 |
+
// Move all css to top
|
314 |
+
$this->content = str_replace( $html_list, '', $this->content );
|
315 |
+
|
316 |
+
// Add to HTTP2
|
317 |
+
$this->append_http2( $url );
|
318 |
+
}
|
319 |
}
|
320 |
}
|
321 |
// Only minify
|
403 |
}
|
404 |
|
405 |
// Append JS inline var for preserved ESI
|
406 |
+
// Shouldn't give any optm (defer/delay) @since 4.4
|
407 |
if ( $this->_var_preserve_js ) {
|
408 |
+
$this->html_head .= '<script>var ' . implode( ',', $this->_var_preserve_js ) . ';</script>';
|
409 |
Debug2::debug2( '[Optm] Inline JS defer vars', $this->_var_preserve_js );
|
410 |
}
|
411 |
|
444 |
$this->html_head = $this->cls( 'CSS' )->prepare_html_lazy() . $this->html_head;
|
445 |
}
|
446 |
|
447 |
+
// Maybe prepend inline UCSS
|
448 |
+
if ( $this->_ucss ) {
|
449 |
+
$this->html_head = '<style id="litespeed-ucss">' . $this->_ucss . '</style>' . $this->html_head;
|
450 |
+
}
|
451 |
+
|
452 |
// Check if there is any critical css rules setting
|
453 |
if ( $this->cfg_css_async && $this->_ccss ) {
|
454 |
$this->html_head = $this->_ccss . $this->html_head;
|
494 |
*/
|
495 |
private function _build_js_tag( $src ) {
|
496 |
if ( $this->cfg_js_defer === 2 ) {
|
497 |
+
return '<script data-optimized="1" type="litespeed/javascript" data-i="' . ++$this->i2 . '" data-src="' . $src . '"></script>';
|
498 |
}
|
499 |
|
500 |
if ( $this->cfg_js_defer ) {
|
757 |
$static_file = LITESPEED_STATIC_DIR . '/' . $filename;
|
758 |
File::save( $static_file, $content, true );
|
759 |
|
760 |
+
// $qs_hash = substr( md5( $src ), -5 );
|
761 |
+
// return LITESPEED_STATIC_URL . "/$filename?ver=$qs_hash";
|
762 |
+
// $qs_hash is from src, same as $filename, redundant
|
763 |
+
return LITESPEED_STATIC_URL . "/$filename";
|
764 |
}
|
765 |
|
766 |
/**
|
771 |
*/
|
772 |
private function _build_hash_url( $src_list, $file_type = 'css' ) {
|
773 |
// $url_sensitive = $this->conf( self::O_OPTM_CSS_UNIQUE ) && $file_type == 'css'; // If need to keep unique CSS per URI
|
|
|
|
|
774 |
|
775 |
// Replace preserved ESI (before generating hash)
|
776 |
if ( $file_type == 'js' ) {
|
783 |
}
|
784 |
|
785 |
$minify = $file_type === 'css' ? $this->cfg_css_min : $this->cfg_js_min;
|
786 |
+
$file_path = $this->__optimizer->serve( $this->_request_url, $file_type, $minify, $src_list );
|
787 |
|
788 |
if ( ! $file_path ) {
|
789 |
return false; // Failed to generate
|
790 |
}
|
791 |
|
792 |
+
$qs_hash = substr( md5( self::get_option( self::ITEM_TIMESTAMP_PURGE_CSS ) ), -5 );
|
793 |
// As filename is alreay realted to filecon md5, no need QS anymore
|
794 |
+
return LITESPEED_STATIC_URL . $file_path . '?ver=' . $qs_hash;
|
795 |
}
|
796 |
|
797 |
/**
|
940 |
if ( strpos( $attrs, ' type=' ) !== false ) {
|
941 |
$attrs = preg_replace( '# type=([\'"])([^\1]+)\1#isU', '', $attrs );
|
942 |
}
|
943 |
+
return '<script' . $attrs . ' type="litespeed/javascript" data-i="' . ++$this->i2 . '">' . $con . '</script>';
|
|
|
944 |
// return '<script' . $attrs . ' type="litespeed/javascript" data-i="' . $this->i2 . '" src="data:text/javascript;base64,' . base64_encode( $con ) . '"></script>';
|
945 |
// return '<script' . $attrs . ' type="litespeed/javascript">' . $con . '</script>';
|
946 |
}
|
964 |
$con = str_replace( $esi_placeholder, $js_var, $con );
|
965 |
$this->_var_preserve_js[] = $js_var . '=' . $esi_placeholder;
|
966 |
}
|
967 |
+
|
968 |
return $con;
|
969 |
}
|
970 |
|
1177 |
if ( strpos( $ori, ' type=' ) !== false ) {
|
1178 |
$ori = preg_replace( '# type=([\'"])([^\1]+)\1#isU', '', $ori );
|
1179 |
}
|
1180 |
+
return str_replace( ' src=', ' type="litespeed/javascript" data-i="' . ++$this->i2 . '" data-src=', $ori );
|
|
|
1181 |
}
|
1182 |
|
1183 |
return str_replace( '></script>', ' defer data-deferred="1"></script>', $ori );
|
src/rest.cls.php
CHANGED
@@ -31,6 +31,13 @@ class REST extends Root {
|
|
31 |
* @access public
|
32 |
*/
|
33 |
public function rest_api_init() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
register_rest_route( 'litespeed/v1', '/tool/check_ip', array(
|
35 |
'methods' => 'GET',
|
36 |
'callback' => array( $this, 'check_ip' ),
|
@@ -112,6 +119,17 @@ class REST extends Root {
|
|
112 |
|
113 |
}
|
114 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
/**
|
116 |
* Check if the request is from cloud nodes
|
117 |
*
|
31 |
* @access public
|
32 |
*/
|
33 |
public function rest_api_init() {
|
34 |
+
// Activate or deactivate a specific crawler callback
|
35 |
+
register_rest_route( 'litespeed/v1', '/toggle_crawler_state', array(
|
36 |
+
'methods' => 'POST',
|
37 |
+
'callback' => array( $this, 'toggle_crawler_state' ),
|
38 |
+
'permission_callback' => '__return_true',
|
39 |
+
) );
|
40 |
+
|
41 |
register_rest_route( 'litespeed/v1', '/tool/check_ip', array(
|
42 |
'methods' => 'GET',
|
43 |
'callback' => array( $this, 'check_ip' ),
|
119 |
|
120 |
}
|
121 |
|
122 |
+
/**
|
123 |
+
* Call to freeze or melt the crawler clicked
|
124 |
+
*
|
125 |
+
* @since 4.3
|
126 |
+
*/
|
127 |
+
public function toggle_crawler_state() {
|
128 |
+
if( isset( $_POST[ 'crawler_id' ] ) ) {
|
129 |
+
return $this->cls( 'Crawler' )->toggle_activeness( $_POST[ 'crawler_id' ] ) ? 1 : 0;
|
130 |
+
}
|
131 |
+
}
|
132 |
+
|
133 |
/**
|
134 |
* Check if the request is from cloud nodes
|
135 |
*
|
src/root.cls.php
CHANGED
@@ -18,6 +18,41 @@ abstract class Root {
|
|
18 |
private static $_primary_options = array();
|
19 |
private static $_network_options = array();
|
20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
/**
|
22 |
* Check if there is cache folder for that type
|
23 |
*
|
18 |
private static $_primary_options = array();
|
19 |
private static $_network_options = array();
|
20 |
|
21 |
+
/**
|
22 |
+
* Log a debug message.
|
23 |
+
*
|
24 |
+
* @since 4.4
|
25 |
+
* @access public
|
26 |
+
*/
|
27 |
+
public static function debug( $msg, $backtrace_limit = false ) {
|
28 |
+
if ( ! defined( 'LSCWP_LOG' ) ) {
|
29 |
+
return;
|
30 |
+
}
|
31 |
+
|
32 |
+
if ( defined( 'static::LOG_TAG' )) {
|
33 |
+
$msg = static::LOG_TAG . ' ' . $msg;
|
34 |
+
}
|
35 |
+
|
36 |
+
Debug2::debug( $msg, $backtrace_limit );
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Log an advanced debug message.
|
41 |
+
*
|
42 |
+
* @since 4.4
|
43 |
+
* @access public
|
44 |
+
*/
|
45 |
+
public static function debug2( $msg, $backtrace_limit = false ) {
|
46 |
+
if ( ! defined( 'LSCWP_LOG_MORE' ) ) {
|
47 |
+
return;
|
48 |
+
}
|
49 |
+
|
50 |
+
if ( defined( 'static::LOG_TAG' )) {
|
51 |
+
$msg = static::LOG_TAG . ' ' . $msg;
|
52 |
+
}
|
53 |
+
Debug2::debug2( $msg, $backtrace_limit );
|
54 |
+
}
|
55 |
+
|
56 |
/**
|
57 |
* Check if there is cache folder for that type
|
58 |
*
|
src/utility.cls.php
CHANGED
@@ -873,8 +873,8 @@ class Utility extends Root {
|
|
873 |
$page_links = paginate_links( array(
|
874 |
'base' => add_query_arg( 'pagenum', '%#%' ),
|
875 |
'format' => '',
|
876 |
-
'prev_text' =>
|
877 |
-
'next_text' =>
|
878 |
'total' => $num_of_pages,
|
879 |
'current' => $pagenum,
|
880 |
) );
|
873 |
$page_links = paginate_links( array(
|
874 |
'base' => add_query_arg( 'pagenum', '%#%' ),
|
875 |
'format' => '',
|
876 |
+
'prev_text' => '«',
|
877 |
+
'next_text' => '»',
|
878 |
'total' => $num_of_pages,
|
879 |
'current' => $pagenum,
|
880 |
) );
|
thirdparty/woocommerce.cls.php
CHANGED
@@ -36,7 +36,7 @@ class WooCommerce extends Base {
|
|
36 |
const ESI_PARAM_LOCATED = 'wc_located' ;
|
37 |
|
38 |
private $cache_cart ;
|
39 |
-
private $
|
40 |
|
41 |
/**
|
42 |
* Detects if WooCommerce is installed.
|
@@ -65,7 +65,7 @@ class WooCommerce extends Base {
|
|
65 |
$this->_option_append() ;
|
66 |
|
67 |
$this->cache_cart = apply_filters( 'litespeed_conf', self::O_WOO_CACHE_CART ) ;
|
68 |
-
$this->
|
69 |
|
70 |
add_action( 'litespeed_control_finalize', array( $this, 'set_control' ) );
|
71 |
add_action( 'litespeed_tag_finalize', array( $this, 'set_tag' ) );
|
@@ -76,7 +76,7 @@ class WooCommerce extends Base {
|
|
76 |
|
77 |
add_action( 'comment_post', array( $this, 'add_review' ), 10, 3 ) ;
|
78 |
|
79 |
-
if ( $this->
|
80 |
if ( function_exists( 'is_shop' ) && ! is_shop() ) {
|
81 |
add_action( 'litespeed_tpl_normal', array( $this, 'set_block_template' ) );
|
82 |
// No need for add-to-cart button
|
@@ -121,7 +121,7 @@ class WooCommerce extends Base {
|
|
121 |
'woocommerce_checkout_order_processed',
|
122 |
) ;
|
123 |
foreach ( $hooks_to_purge as $v ) {
|
124 |
-
if ( $this->
|
125 |
add_action( $v, array( $this, 'purge_esi' ) ) ;
|
126 |
}
|
127 |
else {
|
@@ -581,7 +581,7 @@ class WooCommerce extends Base {
|
|
581 |
elseif ( is_null($woocom->cart) ) {
|
582 |
$err = 'null cart' ;
|
583 |
}
|
584 |
-
elseif ( ! $this->
|
585 |
if ( $this->cache_cart ) {
|
586 |
do_action( 'litespeed_control_set_private', 'cache cart' );
|
587 |
/**
|
36 |
const ESI_PARAM_LOCATED = 'wc_located' ;
|
37 |
|
38 |
private $cache_cart ;
|
39 |
+
private $esi_enabled ;
|
40 |
|
41 |
/**
|
42 |
* Detects if WooCommerce is installed.
|
65 |
$this->_option_append() ;
|
66 |
|
67 |
$this->cache_cart = apply_filters( 'litespeed_conf', self::O_WOO_CACHE_CART ) ;
|
68 |
+
$this->esi_enabled = apply_filters( 'litespeed_esi_status', false );
|
69 |
|
70 |
add_action( 'litespeed_control_finalize', array( $this, 'set_control' ) );
|
71 |
add_action( 'litespeed_tag_finalize', array( $this, 'set_tag' ) );
|
76 |
|
77 |
add_action( 'comment_post', array( $this, 'add_review' ), 10, 3 ) ;
|
78 |
|
79 |
+
if ( $this->esi_enabled ) {
|
80 |
if ( function_exists( 'is_shop' ) && ! is_shop() ) {
|
81 |
add_action( 'litespeed_tpl_normal', array( $this, 'set_block_template' ) );
|
82 |
// No need for add-to-cart button
|
121 |
'woocommerce_checkout_order_processed',
|
122 |
) ;
|
123 |
foreach ( $hooks_to_purge as $v ) {
|
124 |
+
if ( $this->esi_enabled ) {
|
125 |
add_action( $v, array( $this, 'purge_esi' ) ) ;
|
126 |
}
|
127 |
else {
|
581 |
elseif ( is_null($woocom->cart) ) {
|
582 |
$err = 'null cart' ;
|
583 |
}
|
584 |
+
elseif ( ! $this->esi_enabled && $woocom->cart->get_cart_contents_count() !== 0 ) {
|
585 |
if ( $this->cache_cart ) {
|
586 |
do_action( 'litespeed_control_set_private', 'cache cart' );
|
587 |
/**
|
tpl/cache/settings_inc.cache_mobile.tpl.php
CHANGED
@@ -18,6 +18,7 @@ defined( 'WPINC' ) || exit;
|
|
18 |
<?php echo __( 'Serve a separate cache copy for mobile visitors.', 'litespeed-cache' ); ?>
|
19 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/cache/#cache-mobile', 'Learn more about when this is needed' ); ?>
|
20 |
<br /><?php Doc::notice_htaccess(); ?>
|
|
|
21 |
</div>
|
22 |
</td>
|
23 |
</tr>
|
18 |
<?php echo __( 'Serve a separate cache copy for mobile visitors.', 'litespeed-cache' ); ?>
|
19 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/cache/#cache-mobile', 'Learn more about when this is needed' ); ?>
|
20 |
<br /><?php Doc::notice_htaccess(); ?>
|
21 |
+
<br /><?php Doc::crawler_affected(); ?>
|
22 |
</div>
|
23 |
</td>
|
24 |
</tr>
|
tpl/cdn/settings.tpl.php
CHANGED
@@ -75,7 +75,7 @@ $this->form_action();
|
|
75 |
</script>
|
76 |
|
77 |
<div class="litespeed-warning">
|
78 |
-
<?php echo __('NOTE', 'litespeed-cache'); ?>:
|
79 |
<?php echo __( 'To randomize CDN hostname, define multiple hostnames for the same resources.', 'litespeed-cache' ); ?>
|
80 |
</div>
|
81 |
|
@@ -99,7 +99,7 @@ $this->form_action();
|
|
99 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/cdn/#include-file-types', __( 'Default value', 'litespeed-cache' ) ); ?>
|
100 |
|
101 |
<br />
|
102 |
-
<?php echo sprintf( __( 'If you turn any of the above settings OFF, please remove the related file types from the %s box.' ), '<b>' . __( 'Include File Types', 'litespeed-cache' ) . '</b>' ); ?>
|
103 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/cdn/#include-file-types' ); ?>
|
104 |
</div>
|
105 |
|
75 |
</script>
|
76 |
|
77 |
<div class="litespeed-warning">
|
78 |
+
<?php echo __( 'NOTE', 'litespeed-cache' ); ?>:
|
79 |
<?php echo __( 'To randomize CDN hostname, define multiple hostnames for the same resources.', 'litespeed-cache' ); ?>
|
80 |
</div>
|
81 |
|
99 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/cdn/#include-file-types', __( 'Default value', 'litespeed-cache' ) ); ?>
|
100 |
|
101 |
<br />
|
102 |
+
<?php echo sprintf( __( 'If you turn any of the above settings OFF, please remove the related file types from the %s box.', 'litespeed-cache' ), '<b>' . __( 'Include File Types', 'litespeed-cache' ) . '</b>' ); ?>
|
103 |
<?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/cdn/#include-file-types' ); ?>
|
104 |
</div>
|
105 |
|
tpl/crawler/summary.tpl.php
CHANGED
@@ -122,6 +122,7 @@ if($seconds > 0):
|
|
122 |
<th scope="col"><?php echo __('Cron Name', 'litespeed-cache'); ?></th>
|
123 |
<th scope="col"><?php echo __('Run Frequency', 'litespeed-cache'); ?></th>
|
124 |
<th scope="col"><?php echo __( 'Status', 'litespeed-cache' ); ?></th>
|
|
|
125 |
<th scope="col"><?php echo __( 'Running', 'litespeed-cache' ); ?></th>
|
126 |
</tr></thead>
|
127 |
<tbody>
|
@@ -158,6 +159,9 @@ if($seconds > 0):
|
|
158 |
<?php echo '<i class="litespeed-badge litespeed-bg-primary" data-balloon-pos="up" aria-label="' . __( 'Miss', 'litespeed-cache' ) . '">' . ( $miss ?: '-' ) . '</i> '; ?>
|
159 |
<?php echo '<i class="litespeed-badge litespeed-bg-danger" data-balloon-pos="up" aria-label="' . __( 'Blacklisted', 'litespeed-cache' ) . '">' . ( $blacklisted ?: '-' ) . '</i> '; ?>
|
160 |
</td>
|
|
|
|
|
|
|
161 |
<td>
|
162 |
<?php
|
163 |
if ( $i == $summary[ 'curr_crawler' ] ) {
|
122 |
<th scope="col"><?php echo __('Cron Name', 'litespeed-cache'); ?></th>
|
123 |
<th scope="col"><?php echo __('Run Frequency', 'litespeed-cache'); ?></th>
|
124 |
<th scope="col"><?php echo __( 'Status', 'litespeed-cache' ); ?></th>
|
125 |
+
<th scope="col"><?php echo __( 'Activate', 'litespeed-cache' ); ?></th>
|
126 |
<th scope="col"><?php echo __( 'Running', 'litespeed-cache' ); ?></th>
|
127 |
</tr></thead>
|
128 |
<tbody>
|
159 |
<?php echo '<i class="litespeed-badge litespeed-bg-primary" data-balloon-pos="up" aria-label="' . __( 'Miss', 'litespeed-cache' ) . '">' . ( $miss ?: '-' ) . '</i> '; ?>
|
160 |
<?php echo '<i class="litespeed-badge litespeed-bg-danger" data-balloon-pos="up" aria-label="' . __( 'Blacklisted', 'litespeed-cache' ) . '">' . ( $blacklisted ?: '-' ) . '</i> '; ?>
|
161 |
</td>
|
162 |
+
<td>
|
163 |
+
<?php $this->build_toggle( 'litespeed-crawler-'.$i , $__crawler->is_active( $i ) ); ?>
|
164 |
+
</td>
|
165 |
<td>
|
166 |
<?php
|
167 |
if ( $i == $summary[ 'curr_crawler' ] ) {
|
tpl/dash/dashboard.tpl.php
CHANGED
@@ -288,7 +288,7 @@ $placeholder_queue_count = count( $this->load_queue( 'lqip' ) );
|
|
288 |
|
289 |
<?php if ( ! empty( $cloud_summary[ 'last_request.health-score' ] ) ) : ?>
|
290 |
<div class="inside litespeed-postbox-footer litespeed-postbox-footer--compact">
|
291 |
-
<?php echo __( 'Last requested' ) . ': ' . Utility::readable_time( $cloud_summary[ 'last_request.health-score' ] ) ?>
|
292 |
</div>
|
293 |
<?php endif; ?>
|
294 |
</div>
|
@@ -453,7 +453,7 @@ $placeholder_queue_count = count( $this->load_queue( 'lqip' ) );
|
|
453 |
|
454 |
<?php if ( ! empty( $cloud_summary[ 'last_request.ccss' ] ) ) : ?>
|
455 |
<div class="inside litespeed-postbox-footer litespeed-postbox-footer--compact">
|
456 |
-
<?php echo __( 'Last requested' ) . ': ' . Utility::readable_time( $cloud_summary[ 'last_request.ccss' ] ) ?>
|
457 |
</div>
|
458 |
<?php endif; ?>
|
459 |
</div>
|
@@ -486,7 +486,7 @@ $placeholder_queue_count = count( $this->load_queue( 'lqip' ) );
|
|
486 |
|
487 |
<?php if ( ! empty( $cloud_summary[ 'last_request.ccss' ] ) ) : ?>
|
488 |
<div class="inside litespeed-postbox-footer litespeed-postbox-footer--compact">
|
489 |
-
<?php echo __( 'Last requested' ) . ': ' . Utility::readable_time( $cloud_summary[ 'last_request.ccss' ] ) ?>
|
490 |
</div>
|
491 |
<?php endif; ?>
|
492 |
</div>
|
@@ -518,7 +518,7 @@ $placeholder_queue_count = count( $this->load_queue( 'lqip' ) );
|
|
518 |
|
519 |
<?php if ( ! empty( $cloud_summary[ 'last_request.lqip' ] ) ) : ?>
|
520 |
<div class="inside litespeed-postbox-footer litespeed-postbox-footer--compact">
|
521 |
-
<?php echo __( 'Last requested' ) . ': ' . Utility::readable_time( $cloud_summary[ 'last_request.lqip' ] ) ?>
|
522 |
</div>
|
523 |
<?php endif; ?>
|
524 |
</div>
|
288 |
|
289 |
<?php if ( ! empty( $cloud_summary[ 'last_request.health-score' ] ) ) : ?>
|
290 |
<div class="inside litespeed-postbox-footer litespeed-postbox-footer--compact">
|
291 |
+
<?php echo __( 'Last requested', 'litespeed-cache' ) . ': ' . Utility::readable_time( $cloud_summary[ 'last_request.health-score' ] ) ?>
|
292 |
</div>
|
293 |
<?php endif; ?>
|
294 |
</div>
|
453 |
|
454 |
<?php if ( ! empty( $cloud_summary[ 'last_request.ccss' ] ) ) : ?>
|
455 |
<div class="inside litespeed-postbox-footer litespeed-postbox-footer--compact">
|
456 |
+
<?php echo __( 'Last requested', 'litespeed-cache' ) . ': ' . Utility::readable_time( $cloud_summary[ 'last_request.ccss' ] ) ?>
|
457 |
</div>
|
458 |
<?php endif; ?>
|
459 |
</div>
|
486 |
|
487 |
<?php if ( ! empty( $cloud_summary[ 'last_request.ccss' ] ) ) : ?>
|
488 |
<div class="inside litespeed-postbox-footer litespeed-postbox-footer--compact">
|
489 |
+
<?php echo __( 'Last requested', 'litespeed-cache' ) . ': ' . Utility::readable_time( $cloud_summary[ 'last_request.ccss' ] ) ?>
|
490 |
</div>
|
491 |
<?php endif; ?>
|
492 |
</div>
|
518 |
|
519 |
<?php if ( ! empty( $cloud_summary[ 'last_request.lqip' ] ) ) : ?>
|
520 |
<div class="inside litespeed-postbox-footer litespeed-postbox-footer--compact">
|
521 |
+
<?php echo __( 'Last requested', 'litespeed-cache' ) . ': ' . Utility::readable_time( $cloud_summary[ 'last_request.lqip' ] ) ?>
|
522 |
</div>
|
523 |
<?php endif; ?>
|
524 |
</div>
|
tpl/general/settings_inc.guest.tpl.php
CHANGED
@@ -14,6 +14,7 @@ defined( 'WPINC' ) || exit;
|
|
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 ) ) {
|
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 |
+
<br /><?php Doc::crawler_affected(); ?>
|
18 |
<?php
|
19 |
$typeList = array();
|
20 |
if ( $this->conf( Base::O_GUEST ) && ! $this->conf( Base::O_OPTM_UCSS ) ) {
|
tpl/img_optm/settings.media_webp.tpl.php
CHANGED
@@ -13,6 +13,7 @@ defined( 'WPINC' ) || exit;
|
|
13 |
<div class="litespeed-desc">
|
14 |
<?php echo sprintf( __( 'Significantly improve load time by replacing images with their optimized %s versions.', 'litespeed-cache' ), '.webp' ); ?>
|
15 |
<br /><?php Doc::notice_htaccess(); ?>
|
|
|
16 |
</div>
|
17 |
</td>
|
18 |
</tr>
|
13 |
<div class="litespeed-desc">
|
14 |
<?php echo sprintf( __( 'Significantly improve load time by replacing images with their optimized %s versions.', 'litespeed-cache' ), '.webp' ); ?>
|
15 |
<br /><?php Doc::notice_htaccess(); ?>
|
16 |
+
<br /><?php Doc::crawler_affected(); ?>
|
17 |
</div>
|
18 |
</td>
|
19 |
</tr>
|
tpl/img_optm/summary.tpl.php
CHANGED
@@ -68,7 +68,7 @@ if ( ! empty( $img_count[ 'img.' . Img_Optm::STATUS_ERR_FETCH ] ) ) {
|
|
68 |
|
69 |
<?php if ( $wet_limit ) : ?>
|
70 |
<p class="litespeed-desc">
|
71 |
-
<?php echo __( 'To make sure our server can communicate with your server without any issues and everything works fine, for the few first requests the number of images allowed in a single request is limited.' ); ?>
|
72 |
<?php echo __( 'Current limit is', 'litespeed-cache' ) . ': <strong>' . $wet_limit . '</strong>'; ?>
|
73 |
</p>
|
74 |
<?php endif; ?>
|
68 |
|
69 |
<?php if ( $wet_limit ) : ?>
|
70 |
<p class="litespeed-desc">
|
71 |
+
<?php echo __( 'To make sure our server can communicate with your server without any issues and everything works fine, for the few first requests the number of images allowed in a single request is limited.', 'litespeed-cache' ); ?>
|
72 |
<?php echo __( 'Current limit is', 'litespeed-cache' ) . ': <strong>' . $wet_limit . '</strong>'; ?>
|
73 |
</p>
|
74 |
<?php endif; ?>
|
tpl/inc/in_upgrading.php
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace LiteSpeed;
|
3 |
+
defined( 'WPINC' ) || exit;
|
4 |
+
|
5 |
+
$msg = __( 'LiteSpeed cache plugin upgraded. Please refresh the page to complete the configuration data upgrade.', 'litespeed-cache' );
|
6 |
+
|
7 |
+
echo self::build_notice( self::NOTICE_BLUE, $msg );
|
8 |
+
|
tpl/page_optm/settings_css.tpl.php
CHANGED
@@ -46,7 +46,7 @@ $ucss_queue = $this->load_queue( 'ucss' );
|
|
46 |
</td>
|
47 |
</tr>
|
48 |
|
49 |
-
<tr
|
50 |
<th class="litespeed-padding-left">
|
51 |
<?php $id = Base::O_OPTM_UCSS; ?>
|
52 |
<?php $this->title( $id ); ?>
|
@@ -65,6 +65,13 @@ $ucss_queue = $this->load_queue( 'ucss' );
|
|
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 unique CSS is in the background via a cron-based queue.', 'litespeed-cache' ); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
</div>
|
69 |
|
70 |
<div class="litespeed-desc litespeed-left20">
|
@@ -115,6 +122,22 @@ $ucss_queue = $this->load_queue( 'ucss' );
|
|
115 |
</td>
|
116 |
</tr>
|
117 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
<tr>
|
119 |
<th>
|
120 |
<?php $id = Base::O_OPTM_CSS_COMB_EXT_INL; ?>
|
@@ -166,6 +189,12 @@ $ucss_queue = $this->load_queue( 'ucss' );
|
|
166 |
<?php echo sprintf( __( 'Elements with attribute %s in HTML code will be excluded.', 'litespeed-cache' ), '<code>data-no-async="1"</code>' ); ?>
|
167 |
</font>
|
168 |
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
</div>
|
170 |
|
171 |
<div class="litespeed-desc litespeed-left20">
|
46 |
</td>
|
47 |
</tr>
|
48 |
|
49 |
+
<tr>
|
50 |
<th class="litespeed-padding-left">
|
51 |
<?php $id = Base::O_OPTM_UCSS; ?>
|
52 |
<?php $this->title( $id ); ?>
|
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 unique CSS is in the background via a cron-based queue.', 'litespeed-cache' ); ?>
|
68 |
+
|
69 |
+
<?php if ( $this->conf( Base::O_OPTM_UCSS ) && ! $this->conf( Base::O_OPTM_CSS_COMB ) ) : ?>
|
70 |
+
<br /><font class="litespeed-warning">
|
71 |
+
<?php echo sprintf( __( 'This option is bypassed because %1$s option is %2$s.', 'litespeed-cache' ), '<code>' . Lang::title( Base::O_OPTM_CSS_COMB ) . '</code>', '<code>' . __( 'OFF', 'litespeed-cache' ) . '</code>' ); ?>
|
72 |
+
</font>
|
73 |
+
<?php endif; ?>
|
74 |
+
|
75 |
</div>
|
76 |
|
77 |
<div class="litespeed-desc litespeed-left20">
|
122 |
</td>
|
123 |
</tr>
|
124 |
|
125 |
+
<tr>
|
126 |
+
<th class="litespeed-padding-left">
|
127 |
+
<?php $id = Base::O_OPTM_UCSS_INLINE; ?>
|
128 |
+
<?php $this->title( $id ); ?>
|
129 |
+
</th>
|
130 |
+
<td>
|
131 |
+
<?php $this->build_switch( $id ); ?>
|
132 |
+
<div class="litespeed-desc">
|
133 |
+
<?php echo sprintf( __( 'Inline UCSS to reduce the extra CSS file loading. This option will not be automatically turned on for %1$s pages. To use it on %1$s pages, please set it to ON.', 'litespeed-cache' ), '<code>' . Lang::title( Base::O_GUEST ) . '</code>' ); ?>
|
134 |
+
<br /><font class="litespeed-info">
|
135 |
+
<?php echo sprintf( __( 'This option will automatically bypass %s option.', 'litespeed-cache' ), '<code>' . Lang::title( Base::O_OPTM_CSS_ASYNC ) . '</code>' ); ?>
|
136 |
+
</font>
|
137 |
+
</div>
|
138 |
+
</td>
|
139 |
+
</tr>
|
140 |
+
|
141 |
<tr>
|
142 |
<th>
|
143 |
<?php $id = Base::O_OPTM_CSS_COMB_EXT_INL; ?>
|
189 |
<?php echo sprintf( __( 'Elements with attribute %s in HTML code will be excluded.', 'litespeed-cache' ), '<code>data-no-async="1"</code>' ); ?>
|
190 |
</font>
|
191 |
|
192 |
+
<?php if ( $this->conf( Base::O_OPTM_CSS_ASYNC ) && $this->conf( Base::O_OPTM_CSS_COMB ) && $this->conf( Base::O_OPTM_UCSS ) && $this->conf( Base::O_OPTM_UCSS_INLINE ) ) : ?>
|
193 |
+
<br /><font class="litespeed-warning">
|
194 |
+
<?php echo sprintf( __( 'This option is bypassed due to %s option.', 'litespeed-cache' ), '<code>' . Lang::title( Base::O_OPTM_UCSS_INLINE ) . '</code>' ); ?>
|
195 |
+
</font>
|
196 |
+
<?php endif; ?>
|
197 |
+
|
198 |
</div>
|
199 |
|
200 |
<div class="litespeed-desc litespeed-left20">
|
tpl/page_optm/settings_tuning.tpl.php
CHANGED
@@ -86,6 +86,25 @@ ksort( $roles );
|
|
86 |
</td>
|
87 |
</tr>
|
88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
<tr>
|
90 |
<th>
|
91 |
<?php $id = Base::O_OPTM_CCSS_SEP_POSTTYPE; ?>
|
86 |
</td>
|
87 |
</tr>
|
88 |
|
89 |
+
<tr>
|
90 |
+
<th>
|
91 |
+
<?php $id = Base::O_OPTM_UCSS_EXC; ?>
|
92 |
+
<?php $this->title( $id ); ?>
|
93 |
+
</th>
|
94 |
+
<td>
|
95 |
+
<?php $this->build_textarea( $id ); ?>
|
96 |
+
<div class="litespeed-desc">
|
97 |
+
<?php echo __( 'Listed URI will not generate UCSS.', 'litespeed-cache' ); ?>
|
98 |
+
<?php Doc::full_or_partial_url(); ?>
|
99 |
+
<?php Doc::one_per_line(); ?>
|
100 |
+
<br /><span class="litespeed-success">
|
101 |
+
<?php echo __( 'API', 'litespeed-cache' ); ?>:
|
102 |
+
<?php echo sprintf( __( 'Filter %s is supported.', 'litespeed-cache' ), '<code>litespeed_ucss_exc</code>' ); ?>
|
103 |
+
</span>
|
104 |
+
</div>
|
105 |
+
</td>
|
106 |
+
</tr>
|
107 |
+
|
108 |
<tr>
|
109 |
<th>
|
110 |
<?php $id = Base::O_OPTM_CCSS_SEP_POSTTYPE; ?>
|
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.3',
|
8 |
'4.2',
|
9 |
'4.1',
|
4 |
|
5 |
// Existing public version list
|
6 |
$v_list = array(
|
7 |
+
'4.4',
|
8 |
'4.3',
|
9 |
'4.2',
|
10 |
'4.1',
|