LiteSpeed Cache - Version 4.4.3

Version Description

  • Oct 13 2021 =
  • Media Fixed an issue where WebP is served erroneously under Guest Mode on older versions of Safari. (hash73)
  • Media Reverted regex change to fix Lazy Load Image Parent Class Name Excludes failure. (thpstock)
  • Purge Disabled Purge Delay in the optimization process by default.
  • Conf Dropped .htaccess Path Settings options for security concern. (WP)
  • Conf Dropped CSS HTTP/2 Push/JS HTTP/2 Push options. (Kevin)
  • Conf Set Guest Optimization default to OFF.
  • Conf Set CCSS Per URL default to OFF to avoid consuming more quota than intended after upgrade to v4. (n111)
  • Object Fixed an issue with Object Cache warnings during upgrade, when Guest Mode is enabled.
  • Cloud Fixed an issue with PHP notices when inquiring about quota usage for a service not currently in use.
  • GUI Added GO detail warning. (n111)
  • GUI Moved "quota wil be still in use" warning from Guest Mode to Guest Optimization section.
  • API Added LITESPEED_CFG_HTACCESS PHP Constant to specify .htaccess path.
  • API Added litespeed_qs_forbidden hook to bypass ?LSCWP_CTRL= query string. (minhduc)
  • API Added litespeed_delay_purge hook to delay the following Purge header until the next request.
  • API Added litespeed_wpconfig_readonly hook to disable WP_CACHE constant update based on the wp-config.php file. (#633545)
Download this release

Release Info

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

Code changes from version 4.4.2 to 4.4.3

data/const.default.ini CHANGED
@@ -23,7 +23,7 @@ server_ip = ''
23
  guest = false
24
 
25
  ; O_GUEST_OPTM
26
- guest_optm = true
27
 
28
  ; O_NEWS
29
  news = true
@@ -314,9 +314,6 @@ optm-ucss_whitelist = ''
314
  ; O_OPTM_UCSS_EXC
315
  optm-ucss_exc = ''
316
 
317
- ; O_OPTM_CSS_HTTP2
318
- optm-css_http2 = false
319
-
320
  optm-css_exc = ''
321
 
322
  ; O_OPTM_JS_MIN
@@ -328,9 +325,6 @@ optm-js_comb = false
328
  ; O_OPTM_JS_COMB_EXT_INL
329
  optm-js_comb_ext_inl = true
330
 
331
- ; O_OPTM_JS_HTTP2
332
- optm-js_http2 = false
333
-
334
  optm-js_exc = 'jquery.js
335
  jquery.min.js'
336
 
@@ -347,7 +341,7 @@ optm-ggfonts_rm = false
347
  optm-css_async = false
348
 
349
  ; O_OPTM_CCSS_PER_URL
350
- optm-ccss_per_url = true
351
 
352
  ; O_OPTM_CSS_ASYNC_INLINE
353
  optm-css_async_inline = true
@@ -604,12 +598,6 @@ crawler-cookies = ''
604
  ;; -------------- Misc ----------------- ;;
605
  ;; -------------------------------------------------- ;;
606
 
607
- ; O_MISC_HTACCESS_FRONT
608
- misc-htaccess_front = ''
609
-
610
- ; O_MISC_HTACCESS_BACK
611
- misc-htaccess_back = ''
612
-
613
  ; O_MISC_HEARTBEAT_FRONT
614
  misc-heartbeat_front = false
615
 
23
  guest = false
24
 
25
  ; O_GUEST_OPTM
26
+ guest_optm = false
27
 
28
  ; O_NEWS
29
  news = true
314
  ; O_OPTM_UCSS_EXC
315
  optm-ucss_exc = ''
316
 
 
 
 
317
  optm-css_exc = ''
318
 
319
  ; O_OPTM_JS_MIN
325
  ; O_OPTM_JS_COMB_EXT_INL
326
  optm-js_comb_ext_inl = true
327
 
 
 
 
328
  optm-js_exc = 'jquery.js
329
  jquery.min.js'
330
 
341
  optm-css_async = false
342
 
343
  ; O_OPTM_CCSS_PER_URL
344
+ optm-ccss_per_url = false
345
 
346
  ; O_OPTM_CSS_ASYNC_INLINE
347
  optm-css_async_inline = true
598
  ;; -------------- Misc ----------------- ;;
599
  ;; -------------------------------------------------- ;;
600
 
 
 
 
 
 
 
601
  ; O_MISC_HEARTBEAT_FRONT
602
  misc-heartbeat_front = false
603
 
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.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"
@@ -28,11 +28,11 @@ msgstr ""
28
  msgid "Purged!"
29
  msgstr ""
30
 
31
- #: src/activation.cls.php:491 src/activation.cls.php:496
32
  msgid "Failed to upgrade."
33
  msgstr ""
34
 
35
- #: src/activation.cls.php:500
36
  msgid "Upgraded successfully."
37
  msgstr ""
38
 
@@ -66,7 +66,7 @@ msgstr ""
66
  msgid "Database"
67
  msgstr ""
68
 
69
- #: src/admin-display.cls.php:129 src/lang.cls.php:213
70
  msgid "Crawler"
71
  msgstr ""
72
 
@@ -106,7 +106,7 @@ msgstr ""
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
@@ -117,7 +117,7 @@ msgstr ""
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"
@@ -200,7 +200,7 @@ 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
@@ -208,6 +208,7 @@ msgstr ""
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
 
@@ -360,11 +361,11 @@ msgstr ""
360
  msgid "Changed setting successfully."
361
  msgstr ""
362
 
363
- #: src/core.cls.php:278
364
  msgid "Notified LiteSpeed Web Server to purge everything."
365
  msgstr ""
366
 
367
- #: src/core.cls.php:283
368
  msgid "Notified LiteSpeed Web Server to purge the list."
369
  msgstr ""
370
 
@@ -396,15 +397,15 @@ msgstr ""
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,7 +423,7 @@ msgid ""
422
  "errors."
423
  msgstr ""
424
 
425
- #: src/data.upgrade.func.php:83 src/lang.cls.php:116
426
  msgid "JS Combine"
427
  msgstr ""
428
 
@@ -767,7 +768,7 @@ msgstr ""
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 ""
@@ -815,20 +816,16 @@ msgstr ""
815
  msgid "Update %s now"
816
  msgstr ""
817
 
818
- #: src/htaccess.cls.php:352
819
  msgid "Mobile Agent Rules"
820
  msgstr ""
821
 
822
- #: src/htaccess.cls.php:811
823
  msgid ""
824
  "<p>Please add/replace the following codes into the beginning of %1$s:</p> "
825
  "%2$s"
826
  msgstr ""
827
 
828
- #: src/htaccess.cls.php:878
829
- msgid "File Saved."
830
- msgstr ""
831
-
832
  #: src/img-optm.cls.php:148
833
  msgid "No new image gathered."
834
  msgstr ""
@@ -1214,459 +1211,443 @@ 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
 
@@ -1767,71 +1748,71 @@ msgstr ""
1767
  msgid "LQIP image preview for size %s"
1768
  msgstr ""
1769
 
1770
- #: src/purge.cls.php:181
1771
  msgid "Purged all caches successfully."
1772
  msgstr ""
1773
 
1774
- #: src/purge.cls.php:200
1775
  msgid "Notified LiteSpeed Web Server to purge all LSCache entries."
1776
  msgstr ""
1777
 
1778
- #: src/purge.cls.php:219
1779
  msgid "Cleaned all Critical CSS files."
1780
  msgstr ""
1781
 
1782
- #: src/purge.cls.php:238
1783
  msgid "Cleaned all Unique CSS files."
1784
  msgstr ""
1785
 
1786
- #: src/purge.cls.php:255
1787
  msgid "Cleaned all LQIP files."
1788
  msgstr ""
1789
 
1790
- #: src/purge.cls.php:272
1791
  msgid "Cleaned all Gravatar files."
1792
  msgstr ""
1793
 
1794
- #: src/purge.cls.php:302
1795
  msgid "Notified LiteSpeed Web Server to purge CSS/JS entries."
1796
  msgstr ""
1797
 
1798
- #: src/purge.cls.php:318
1799
  msgid "Opcode cache is not enabled."
1800
  msgstr ""
1801
 
1802
- #: src/purge.cls.php:330
1803
  msgid "Reset the entire opcode cache successfully."
1804
  msgstr ""
1805
 
1806
- #: src/purge.cls.php:358
1807
  msgid "Object cache is not enabled."
1808
  msgstr ""
1809
 
1810
- #: src/purge.cls.php:371
1811
  msgid "Purge all object caches successfully."
1812
  msgstr ""
1813
 
1814
- #: src/purge.cls.php:554
1815
  msgid "Notified LiteSpeed Web Server to purge the front page."
1816
  msgstr ""
1817
 
1818
- #: src/purge.cls.php:567
1819
  msgid "Notified LiteSpeed Web Server to purge all pages."
1820
  msgstr ""
1821
 
1822
- #: src/purge.cls.php:586
1823
  msgid "Notified LiteSpeed Web Server to purge error pages."
1824
  msgstr ""
1825
 
1826
- #: src/purge.cls.php:613
1827
  msgid "Purge category %s"
1828
  msgstr ""
1829
 
1830
- #: src/purge.cls.php:640
1831
  msgid "Purge tag %s"
1832
  msgstr ""
1833
 
1834
- #: src/purge.cls.php:671
1835
  msgid "Purge url %s"
1836
  msgstr ""
1837
 
@@ -1979,7 +1960,7 @@ 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,7 +1976,7 @@ msgid "New release %s is available now."
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,7 +2282,7 @@ msgstr ""
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 ""
@@ -3444,7 +3425,7 @@ msgid "Current closest Cloud server is %s.&#10;Click to redetect."
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?"
@@ -3502,7 +3483,7 @@ 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 ""
@@ -3779,9 +3760,9 @@ msgid "Link to QUIC.cloud"
3779
  msgstr ""
3780
 
3781
  #: tpl/general/settings.tpl.php:82 tpl/general/settings.tpl.php:93
3782
- #: tpl/general/settings.tpl.php:105 tpl/general/settings.tpl.php:154
3783
- #: tpl/general/settings.tpl.php:160 tpl/general/settings.tpl.php:166
3784
- #: tpl/general/settings.tpl.php:172 tpl/general/settings.tpl.php:189
3785
  msgid "Notice"
3786
  msgstr ""
3787
 
@@ -3859,44 +3840,52 @@ msgstr ""
3859
  msgid "This option enables maximum optimization for Guest Mode visitors."
3860
  msgstr ""
3861
 
3862
- #: tpl/general/settings.tpl.php:154
 
 
 
 
 
 
 
 
3863
  msgid "This option only works when turning %s on."
3864
  msgstr ""
3865
 
3866
- #: tpl/general/settings.tpl.php:160 tpl/general/settings.tpl.php:172
3867
  msgid "You need to turn %s on to get maximum result."
3868
  msgstr ""
3869
 
3870
- #: tpl/general/settings.tpl.php:166
3871
  msgid ""
3872
  "You need to turn %s on and finish all WebP generation to get maximum result."
3873
  msgstr ""
3874
 
3875
- #: tpl/general/settings.tpl.php:187
3876
  msgid ""
3877
  "Enter this site's IP address to allow cloud services directly call IP "
3878
  "instead of domain name. This eliminates the overhead of DNS and CDN lookups."
3879
  msgstr ""
3880
 
3881
- #: tpl/general/settings.tpl.php:188
3882
  msgid "Your server IP"
3883
  msgstr ""
3884
 
3885
- #: tpl/general/settings.tpl.php:188
3886
  msgid "Check my public IP from"
3887
  msgstr ""
3888
 
3889
- #: tpl/general/settings.tpl.php:189
3890
  msgid ""
3891
  "the auto-detected IP may not be accurate if you have an additional outgoing "
3892
  "IP set, or you have multiple IPs configured on your server."
3893
  msgstr ""
3894
 
3895
- #: tpl/general/settings.tpl.php:190
3896
  msgid "Please make sure this IP is the correct one for visiting your site."
3897
  msgstr ""
3898
 
3899
- #: tpl/general/settings.tpl.php:205
3900
  msgid ""
3901
  "Turn this option ON to show latest news automatically, including hotfixes, "
3902
  "new releases, available beta versions, and promotions."
@@ -3920,10 +3909,6 @@ msgid ""
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
-
3927
  #: tpl/general/settings_tuning.tpl.php:7
3928
  #: tpl/page_optm/settings_tuning.tpl.php:18
3929
  msgid "Tuning Settings"
@@ -4018,7 +4003,7 @@ 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.&#10; Click to redetect."
4024
  msgstr ""
@@ -4427,16 +4412,16 @@ msgstr ""
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
 
@@ -4458,75 +4443,69 @@ msgid ""
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 ""
4475
  "This can improve your speed score in services like Pingdom, GTmetrix and "
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
 
@@ -4602,7 +4581,7 @@ msgstr ""
4602
  msgid "Combine all local JS files into a single file."
4603
  msgstr ""
4604
 
4605
- #: tpl/page_optm/settings_js.tpl.php:37 tpl/page_optm/settings_js.tpl.php:83
4606
  msgid ""
4607
  "This option may result in a JS error or layout issue on frontend pages with "
4608
  "certain themes/plugins."
@@ -4621,21 +4600,15 @@ msgid ""
4621
  "should minimize potential errors caused by JS Combine."
4622
  msgstr ""
4623
 
4624
- #: tpl/page_optm/settings_js.tpl.php:65
4625
- msgid ""
4626
- "Pre-send internal JS files to the browser before they are requested. "
4627
- "(Requires the HTTP/2 protocol)"
4628
- msgstr ""
4629
-
4630
- #: tpl/page_optm/settings_js.tpl.php:76
4631
  msgid "Deferred"
4632
  msgstr ""
4633
 
4634
- #: tpl/page_optm/settings_js.tpl.php:76
4635
  msgid "Delayed"
4636
  msgstr ""
4637
 
4638
- #: tpl/page_optm/settings_js.tpl.php:78
4639
  msgid ""
4640
  "Deferring until page is parsed or delaying till interaction can help reduce "
4641
  "resource contention and improve performance causing a lower FID (Core Web "
@@ -4939,117 +4912,101 @@ msgstr ""
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."
4997
  msgstr ""
4998
 
4999
- #: tpl/toolbox/edit_htaccess.tpl.php:38
5000
- msgid "LiteSpeed Cache Edit .htaccess"
5001
- msgstr ""
5002
-
5003
- #: tpl/toolbox/edit_htaccess.tpl.php:43
5004
- msgid "This page is meant for advanced users."
5005
- msgstr ""
5006
-
5007
- #: tpl/toolbox/edit_htaccess.tpl.php:45
5008
- msgid "Any changes made to the .htaccess file may break the site."
5009
  msgstr ""
5010
 
5011
- #: tpl/toolbox/edit_htaccess.tpl.php:46
5012
- msgid "Please consult the host/server admin before making any changes."
5013
  msgstr ""
5014
 
5015
- #: tpl/toolbox/edit_htaccess.tpl.php:53
5016
- msgid ".htaccess Path Settings"
5017
  msgstr ""
5018
 
5019
- #: tpl/toolbox/edit_htaccess.tpl.php:65
5020
- msgid "Specify the frontend .htaccess path."
5021
  msgstr ""
5022
 
5023
- #: tpl/toolbox/edit_htaccess.tpl.php:66 tpl/toolbox/edit_htaccess.tpl.php:81
5024
- msgid "Leave empty to auto detect"
5025
  msgstr ""
5026
 
5027
- #: tpl/toolbox/edit_htaccess.tpl.php:80
5028
- msgid "Specify the backend .htaccess path."
5029
  msgstr ""
5030
 
5031
- #: tpl/toolbox/edit_htaccess.tpl.php:91
5032
- msgid "File editing is disabled in configuration."
5033
  msgstr ""
5034
 
5035
- #: tpl/toolbox/edit_htaccess.tpl.php:97
5036
  msgid "Current %s Contents"
5037
  msgstr ""
5038
 
5039
- #: tpl/toolbox/edit_htaccess.tpl.php:99
5040
- msgid "DO NOT EDIT ANYTHING WITHIN %s"
5041
- msgstr ""
5042
-
5043
- #: tpl/toolbox/edit_htaccess.tpl.php:106
5044
- msgid "Save .htaccess"
5045
- msgstr ""
5046
-
5047
  #: tpl/toolbox/entry.tpl.php:10
5048
  msgid "Import / Export"
5049
  msgstr ""
5050
 
5051
  #: tpl/toolbox/entry.tpl.php:14
5052
- msgid "Edit .htaccess"
5053
  msgstr ""
5054
 
5055
  #: tpl/toolbox/entry.tpl.php:18
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.3\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
7
+ "POT-Creation-Date: 2021-10-11 17:31:14+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
28
  msgid "Purged!"
29
  msgstr ""
30
 
31
+ #: src/activation.cls.php:495 src/activation.cls.php:500
32
  msgid "Failed to upgrade."
33
  msgstr ""
34
 
35
+ #: src/activation.cls.php:504
36
  msgid "Upgraded successfully."
37
  msgstr ""
38
 
66
  msgid "Database"
67
  msgstr ""
68
 
69
+ #: src/admin-display.cls.php:129 src/lang.cls.php:209
70
  msgid "Crawler"
71
  msgstr ""
72
 
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:173
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
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:63
121
  #: tpl/page_optm/settings_media.tpl.php:162
122
  #: tpl/toolbox/settings-debug.tpl.php:34
123
  msgid "OFF"
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:175
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
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
+ #: tpl/toolbox/edit_htaccess.tpl.php:54 tpl/toolbox/edit_htaccess.tpl.php:71
212
  msgid "API"
213
  msgstr ""
214
 
361
  msgid "Changed setting successfully."
362
  msgstr ""
363
 
364
+ #: src/core.cls.php:283
365
  msgid "Notified LiteSpeed Web Server to purge everything."
366
  msgstr ""
367
 
368
+ #: src/core.cls.php:288
369
  msgid "Notified LiteSpeed Web Server to purge the list."
370
  msgstr ""
371
 
397
  msgid "Previously existed in blacklist"
398
  msgstr ""
399
 
400
+ #: src/css.cls.php:60 src/root.cls.php:176
401
  msgid "Queue cleared successfully."
402
  msgstr ""
403
 
404
+ #: src/css.cls.php:581
405
  msgid "%1$s %2$s files left in queue"
406
  msgstr ""
407
 
408
+ #: src/css.cls.php:582
409
  msgid "Cancel"
410
  msgstr ""
411
 
423
  "errors."
424
  msgstr ""
425
 
426
+ #: src/data.upgrade.func.php:83 src/lang.cls.php:115
427
  msgid "JS Combine"
428
  msgstr ""
429
 
768
  msgid "LQIP Cache"
769
  msgstr ""
770
 
771
+ #: src/gui.cls.php:536 src/gui.cls.php:687 src/lang.cls.php:142
772
  #: tpl/toolbox/purge.tpl.php:97
773
  msgid "Gravatar Cache"
774
  msgstr ""
816
  msgid "Update %s now"
817
  msgstr ""
818
 
819
+ #: src/htaccess.cls.php:326
820
  msgid "Mobile Agent Rules"
821
  msgstr ""
822
 
823
+ #: src/htaccess.cls.php:785
824
  msgid ""
825
  "<p>Please add/replace the following codes into the beginning of %1$s:</p> "
826
  "%2$s"
827
  msgstr ""
828
 
 
 
 
 
829
  #: src/img-optm.cls.php:148
830
  msgid "No new image gathered."
831
  msgstr ""
1211
  msgstr ""
1212
 
1213
  #: src/lang.cls.php:114
 
 
 
 
1214
  msgid "JS Minify"
1215
  msgstr ""
1216
 
1217
+ #: src/lang.cls.php:116
1218
  msgid "JS Combine External and Inline"
1219
  msgstr ""
1220
 
1221
+ #: src/lang.cls.php:117
 
 
 
 
1222
  msgid "HTML Minify"
1223
  msgstr ""
1224
 
1225
+ #: src/lang.cls.php:118
1226
  msgid "HTML Lazy Load Selectors"
1227
  msgstr ""
1228
 
1229
+ #: src/lang.cls.php:119 tpl/page_optm/settings_tuning.tpl.php:145
1230
  msgid "Load CSS Asynchronously"
1231
  msgstr ""
1232
 
1233
+ #: src/lang.cls.php:120
1234
  msgid "CCSS Per URL"
1235
  msgstr ""
1236
 
1237
+ #: src/lang.cls.php:121
1238
  msgid "Inline CSS Async Lib"
1239
  msgstr ""
1240
 
1241
+ #: src/lang.cls.php:122
1242
  msgid "Font Display Optimization"
1243
  msgstr ""
1244
 
1245
+ #: src/lang.cls.php:123
1246
  msgid "Load JS Deferred"
1247
  msgstr ""
1248
 
1249
+ #: src/lang.cls.php:124
1250
  msgid "DNS Prefetch"
1251
  msgstr ""
1252
 
1253
+ #: src/lang.cls.php:125
1254
  msgid "DNS Prefetch Control"
1255
  msgstr ""
1256
 
1257
+ #: src/lang.cls.php:126
1258
  msgid "CSS Excludes"
1259
  msgstr ""
1260
 
1261
+ #: src/lang.cls.php:127
1262
  msgid "JS Excludes"
1263
  msgstr ""
1264
 
1265
+ #: src/lang.cls.php:128
1266
  msgid "Remove Query Strings"
1267
  msgstr ""
1268
 
1269
+ #: src/lang.cls.php:129
1270
  msgid "Load Google Fonts Asynchronously"
1271
  msgstr ""
1272
 
1273
+ #: src/lang.cls.php:130
1274
  msgid "Remove Google Fonts"
1275
  msgstr ""
1276
 
1277
+ #: src/lang.cls.php:131
1278
  msgid "Critical CSS Rules"
1279
  msgstr ""
1280
 
1281
+ #: src/lang.cls.php:132
1282
  msgid "Separate CCSS Cache Post Types"
1283
  msgstr ""
1284
 
1285
+ #: src/lang.cls.php:133
1286
  msgid "Separate CCSS Cache URIs"
1287
  msgstr ""
1288
 
1289
+ #: src/lang.cls.php:134
1290
  msgid "JS Deferred Excludes"
1291
  msgstr ""
1292
 
1293
+ #: src/lang.cls.php:135
1294
  msgid "Guest Mode JS Excludes"
1295
  msgstr ""
1296
 
1297
+ #: src/lang.cls.php:136
1298
  msgid "Remove WordPress Emoji"
1299
  msgstr ""
1300
 
1301
+ #: src/lang.cls.php:137
1302
  msgid "Remove Noscript Tags"
1303
  msgstr ""
1304
 
1305
+ #: src/lang.cls.php:138
1306
  msgid "URI Excludes"
1307
  msgstr ""
1308
 
1309
+ #: src/lang.cls.php:139
1310
  msgid "Optimize for Guests Only"
1311
  msgstr ""
1312
 
1313
+ #: src/lang.cls.php:140
1314
  msgid "Role Excludes"
1315
  msgstr ""
1316
 
1317
+ #: src/lang.cls.php:143
1318
  msgid "Gravatar Cache Cron"
1319
  msgstr ""
1320
 
1321
+ #: src/lang.cls.php:144
1322
  msgid "Gravatar Cache TTL"
1323
  msgstr ""
1324
 
1325
+ #: src/lang.cls.php:146
1326
  msgid "Lazy Load Images"
1327
  msgstr ""
1328
 
1329
+ #: src/lang.cls.php:147
1330
  msgid "Lazy Load Image Excludes"
1331
  msgstr ""
1332
 
1333
+ #: src/lang.cls.php:148
1334
  msgid "Lazy Load Image Class Name Excludes"
1335
  msgstr ""
1336
 
1337
+ #: src/lang.cls.php:149
1338
  msgid "Lazy Load Image Parent Class Name Excludes"
1339
  msgstr ""
1340
 
1341
+ #: src/lang.cls.php:150
1342
  msgid "Lazy Load Iframe Class Name Excludes"
1343
  msgstr ""
1344
 
1345
+ #: src/lang.cls.php:151
1346
  msgid "Lazy Load Iframe Parent Class Name Excludes"
1347
  msgstr ""
1348
 
1349
+ #: src/lang.cls.php:152
1350
  msgid "Lazy Load URI Excludes"
1351
  msgstr ""
1352
 
1353
+ #: src/lang.cls.php:153
1354
  msgid "LQIP Excludes"
1355
  msgstr ""
1356
 
1357
+ #: src/lang.cls.php:154
1358
  msgid "Basic Image Placeholder"
1359
  msgstr ""
1360
 
1361
+ #: src/lang.cls.php:155
1362
  msgid "Responsive Placeholder"
1363
  msgstr ""
1364
 
1365
+ #: src/lang.cls.php:156
1366
  msgid "Responsive Placeholder Color"
1367
  msgstr ""
1368
 
1369
+ #: src/lang.cls.php:157
1370
  msgid "Responsive Placeholder SVG"
1371
  msgstr ""
1372
 
1373
+ #: src/lang.cls.php:158
1374
  msgid "LQIP Cloud Generator"
1375
  msgstr ""
1376
 
1377
+ #: src/lang.cls.php:159
1378
  msgid "LQIP Quality"
1379
  msgstr ""
1380
 
1381
+ #: src/lang.cls.php:160
1382
  msgid "LQIP Minimum Dimensions"
1383
  msgstr ""
1384
 
1385
+ #: src/lang.cls.php:162
1386
  msgid "Generate LQIP In Background"
1387
  msgstr ""
1388
 
1389
+ #: src/lang.cls.php:163
1390
  msgid "Lazy Load Iframes"
1391
  msgstr ""
1392
 
1393
+ #: src/lang.cls.php:164
1394
  msgid "Add Missing Sizes"
1395
  msgstr ""
1396
 
1397
+ #: src/lang.cls.php:165
1398
  msgid "Inline Lazy Load Images Library"
1399
  msgstr ""
1400
 
1401
+ #: src/lang.cls.php:166
1402
  msgid "Auto Request Cron"
1403
  msgstr ""
1404
 
1405
+ #: src/lang.cls.php:167
1406
  msgid "Auto Pull Cron"
1407
  msgstr ""
1408
 
1409
+ #: src/lang.cls.php:168
1410
  msgid "Optimize Original Images"
1411
  msgstr ""
1412
 
1413
+ #: src/lang.cls.php:169
1414
  msgid "Remove Original Backups"
1415
  msgstr ""
1416
 
1417
+ #: src/lang.cls.php:170
1418
  msgid "Create WebP Versions"
1419
  msgstr ""
1420
 
1421
+ #: src/lang.cls.php:171
1422
  msgid "Optimize Losslessly"
1423
  msgstr ""
1424
 
1425
+ #: src/lang.cls.php:172
1426
  msgid "Preserve EXIF/XMP data"
1427
  msgstr ""
1428
 
1429
+ #: src/lang.cls.php:173
1430
  msgid "WebP Attribute To Replace"
1431
  msgstr ""
1432
 
1433
+ #: src/lang.cls.php:174
1434
  msgid "WebP For Extra srcset"
1435
  msgstr ""
1436
 
1437
+ #: src/lang.cls.php:175
1438
  msgid "WordPress Image Quality Control"
1439
  msgstr ""
1440
 
1441
+ #: src/lang.cls.php:176 tpl/esi_widget_edit.php:36
1442
  msgid "Enable ESI"
1443
  msgstr ""
1444
 
1445
+ #: src/lang.cls.php:177
1446
  msgid "Cache Admin Bar"
1447
  msgstr ""
1448
 
1449
+ #: src/lang.cls.php:178
1450
  msgid "Cache Comment Form"
1451
  msgstr ""
1452
 
1453
+ #: src/lang.cls.php:179
1454
  msgid "ESI Nonces"
1455
  msgstr ""
1456
 
1457
+ #: src/lang.cls.php:180 tpl/page_optm/settings_css.tpl.php:109
1458
+ #: tpl/page_optm/settings_css.tpl.php:219
1459
  msgid "Vary Group"
1460
  msgstr ""
1461
 
1462
+ #: src/lang.cls.php:181
1463
  msgid "Purge All Hooks"
1464
  msgstr ""
1465
 
1466
+ #: src/lang.cls.php:182
1467
  msgid "Improve HTTP/HTTPS Compatibility"
1468
  msgstr ""
1469
 
1470
+ #: src/lang.cls.php:183
1471
  msgid "Instant Click"
1472
  msgstr ""
1473
 
1474
+ #: src/lang.cls.php:184
1475
  msgid "Do Not Cache Cookies"
1476
  msgstr ""
1477
 
1478
+ #: src/lang.cls.php:185
1479
  msgid "Do Not Cache User Agents"
1480
  msgstr ""
1481
 
1482
+ #: src/lang.cls.php:186
1483
  msgid "Login Cookie"
1484
  msgstr ""
1485
 
1486
+ #: src/lang.cls.php:187
1487
  msgid "Image WebP Replacement"
1488
  msgstr ""
1489
 
1490
+ #: src/lang.cls.php:189
 
 
 
 
 
 
 
 
1491
  msgid "Frontend Heartbeat Control"
1492
  msgstr ""
1493
 
1494
+ #: src/lang.cls.php:190
1495
  msgid "Frontend Heartbeat TTL"
1496
  msgstr ""
1497
 
1498
+ #: src/lang.cls.php:191
1499
  msgid "Backend Heartbeat Control"
1500
  msgstr ""
1501
 
1502
+ #: src/lang.cls.php:192
1503
  msgid "Backend Heartbeat TTL"
1504
  msgstr ""
1505
 
1506
+ #: src/lang.cls.php:193
1507
  msgid "Editor Heartbeat"
1508
  msgstr ""
1509
 
1510
+ #: src/lang.cls.php:194
1511
  msgid "Editor Heartbeat TTL"
1512
  msgstr ""
1513
 
1514
+ #: src/lang.cls.php:196
1515
  msgid "QUIC.cloud CDN"
1516
  msgstr ""
1517
 
1518
+ #: src/lang.cls.php:197
1519
  msgid "Use CDN Mapping"
1520
  msgstr ""
1521
 
1522
+ #: src/lang.cls.php:198
1523
  msgid "CDN URL"
1524
  msgstr ""
1525
 
1526
+ #: src/lang.cls.php:199
1527
  msgid "Include Images"
1528
  msgstr ""
1529
 
1530
+ #: src/lang.cls.php:200
1531
  msgid "Include CSS"
1532
  msgstr ""
1533
 
1534
+ #: src/lang.cls.php:201
1535
  msgid "Include JS"
1536
  msgstr ""
1537
 
1538
+ #: src/lang.cls.php:202 tpl/cdn/settings.tpl.php:102
1539
  msgid "Include File Types"
1540
  msgstr ""
1541
 
1542
+ #: src/lang.cls.php:203
1543
  msgid "HTML Attribute To Replace"
1544
  msgstr ""
1545
 
1546
+ #: src/lang.cls.php:204
1547
  msgid "Original URLs"
1548
  msgstr ""
1549
 
1550
+ #: src/lang.cls.php:205
1551
  msgid "Included Directories"
1552
  msgstr ""
1553
 
1554
+ #: src/lang.cls.php:206
1555
  msgid "Exclude Path"
1556
  msgstr ""
1557
 
1558
+ #: src/lang.cls.php:207
1559
  msgid "Cloudflare API"
1560
  msgstr ""
1561
 
1562
+ #: src/lang.cls.php:210
1563
  msgid "Delay"
1564
  msgstr ""
1565
 
1566
+ #: src/lang.cls.php:211
1567
  msgid "Run Duration"
1568
  msgstr ""
1569
 
1570
+ #: src/lang.cls.php:212
1571
  msgid "Interval Between Runs"
1572
  msgstr ""
1573
 
1574
+ #: src/lang.cls.php:213
1575
  msgid "Crawl Interval"
1576
  msgstr ""
1577
 
1578
+ #: src/lang.cls.php:214
1579
  msgid "Threads"
1580
  msgstr ""
1581
 
1582
+ #: src/lang.cls.php:215
1583
  msgid "Timeout"
1584
  msgstr ""
1585
 
1586
+ #: src/lang.cls.php:216
1587
  msgid "Server Load Limit"
1588
  msgstr ""
1589
 
1590
+ #: src/lang.cls.php:217
1591
  msgid "Role Simulation"
1592
  msgstr ""
1593
 
1594
+ #: src/lang.cls.php:218
1595
  msgid "Cookie Simulation"
1596
  msgstr ""
1597
 
1598
+ #: src/lang.cls.php:219
1599
  msgid "Custom Sitemap"
1600
  msgstr ""
1601
 
1602
+ #: src/lang.cls.php:220
1603
  msgid "Drop Domain from Sitemap"
1604
  msgstr ""
1605
 
1606
+ #: src/lang.cls.php:221
1607
  msgid "Sitemap Timeout"
1608
  msgstr ""
1609
 
1610
+ #: src/lang.cls.php:223 tpl/inc/disabled_all.php:5
1611
  msgid "Disable All Features"
1612
  msgstr ""
1613
 
1614
+ #: src/lang.cls.php:224 tpl/toolbox/log_viewer.tpl.php:7
1615
  msgid "Debug Log"
1616
  msgstr ""
1617
 
1618
+ #: src/lang.cls.php:225
1619
  msgid "Admin IPs"
1620
  msgstr ""
1621
 
1622
+ #: src/lang.cls.php:226
1623
  msgid "Debug Level"
1624
  msgstr ""
1625
 
1626
+ #: src/lang.cls.php:227
1627
  msgid "Log File Size Limit"
1628
  msgstr ""
1629
 
1630
+ #: src/lang.cls.php:228
1631
  msgid "Log Cookies"
1632
  msgstr ""
1633
 
1634
+ #: src/lang.cls.php:229
1635
  msgid "Collapse Query Strings"
1636
  msgstr ""
1637
 
1638
+ #: src/lang.cls.php:230
1639
  msgid "Debug URI Includes"
1640
  msgstr ""
1641
 
1642
+ #: src/lang.cls.php:231
1643
  msgid "Debug URI Excludes"
1644
  msgstr ""
1645
 
1646
+ #: src/lang.cls.php:233
1647
  msgid "Revisions Max Number"
1648
  msgstr ""
1649
 
1650
+ #: src/lang.cls.php:234
1651
  msgid "Revisions Max Age"
1652
  msgstr ""
1653
 
1748
  msgid "LQIP image preview for size %s"
1749
  msgstr ""
1750
 
1751
+ #: src/purge.cls.php:184
1752
  msgid "Purged all caches successfully."
1753
  msgstr ""
1754
 
1755
+ #: src/purge.cls.php:203
1756
  msgid "Notified LiteSpeed Web Server to purge all LSCache entries."
1757
  msgstr ""
1758
 
1759
+ #: src/purge.cls.php:222
1760
  msgid "Cleaned all Critical CSS files."
1761
  msgstr ""
1762
 
1763
+ #: src/purge.cls.php:241
1764
  msgid "Cleaned all Unique CSS files."
1765
  msgstr ""
1766
 
1767
+ #: src/purge.cls.php:258
1768
  msgid "Cleaned all LQIP files."
1769
  msgstr ""
1770
 
1771
+ #: src/purge.cls.php:275
1772
  msgid "Cleaned all Gravatar files."
1773
  msgstr ""
1774
 
1775
+ #: src/purge.cls.php:305
1776
  msgid "Notified LiteSpeed Web Server to purge CSS/JS entries."
1777
  msgstr ""
1778
 
1779
+ #: src/purge.cls.php:321
1780
  msgid "Opcode cache is not enabled."
1781
  msgstr ""
1782
 
1783
+ #: src/purge.cls.php:333
1784
  msgid "Reset the entire opcode cache successfully."
1785
  msgstr ""
1786
 
1787
+ #: src/purge.cls.php:361
1788
  msgid "Object cache is not enabled."
1789
  msgstr ""
1790
 
1791
+ #: src/purge.cls.php:374
1792
  msgid "Purge all object caches successfully."
1793
  msgstr ""
1794
 
1795
+ #: src/purge.cls.php:567
1796
  msgid "Notified LiteSpeed Web Server to purge the front page."
1797
  msgstr ""
1798
 
1799
+ #: src/purge.cls.php:580
1800
  msgid "Notified LiteSpeed Web Server to purge all pages."
1801
  msgstr ""
1802
 
1803
+ #: src/purge.cls.php:599
1804
  msgid "Notified LiteSpeed Web Server to purge error pages."
1805
  msgstr ""
1806
 
1807
+ #: src/purge.cls.php:626
1808
  msgid "Purge category %s"
1809
  msgstr ""
1810
 
1811
+ #: src/purge.cls.php:653
1812
  msgid "Purge tag %s"
1813
  msgstr ""
1814
 
1815
+ #: src/purge.cls.php:684
1816
  msgid "Purge url %s"
1817
  msgstr ""
1818
 
1960
  msgid "Dismiss this notice"
1961
  msgstr ""
1962
 
1963
+ #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 4.4.3) #-#-#-#-#
1964
  #. Plugin Name of the plugin/theme
1965
  #: tpl/banner/new_version.php:59 tpl/banner/new_version_dev.tpl.php:12
1966
  #: tpl/cache/more_settings_tip.tpl.php:15 tpl/inc/admin_footer.php:8
1976
  msgstr ""
1977
 
1978
  #: tpl/banner/new_version.php:71 tpl/banner/new_version_dev.tpl.php:24
1979
+ #: tpl/toolbox/beta_test.tpl.php:57
1980
  msgid "Upgrade"
1981
  msgstr ""
1982
 
2282
  #: tpl/cache/settings-esi.tpl.php:35 tpl/cdn/manage.tpl.php:21
2283
  #: tpl/crawler/summary.tpl.php:48 tpl/inc/check_cache_disabled.php:31
2284
  #: tpl/inc/check_if_network_disable_all.php:18
2285
+ #: tpl/page_optm/settings_css.tpl.php:59 tpl/page_optm/settings_css.tpl.php:164
2286
  #: tpl/page_optm/settings_localization.tpl.php:11
2287
  msgid "WARNING"
2288
  msgstr ""
3425
  msgstr ""
3426
 
3427
  #: tpl/dash/dashboard.tpl.php:227 tpl/img_optm/summary.tpl.php:57
3428
+ #: tpl/page_optm/settings_css.tpl.php:90 tpl/page_optm/settings_css.tpl.php:200
3429
  #: tpl/page_optm/settings_media.tpl.php:176
3430
  msgid ""
3431
  "Are you sure you want to redetect the closest cloud server for this service?"
3483
 
3484
  #: tpl/dash/dashboard.tpl.php:437 tpl/dash/dashboard.tpl.php:470
3485
  #: tpl/dash/dashboard.tpl.php:503 tpl/page_optm/settings_css.tpl.php:81
3486
+ #: tpl/page_optm/settings_css.tpl.php:191
3487
  #: tpl/page_optm/settings_media.tpl.php:170
3488
  msgid "Last generated"
3489
  msgstr ""
3760
  msgstr ""
3761
 
3762
  #: tpl/general/settings.tpl.php:82 tpl/general/settings.tpl.php:93
3763
+ #: tpl/general/settings.tpl.php:105 tpl/general/settings.tpl.php:172
3764
+ #: tpl/general/settings.tpl.php:178 tpl/general/settings.tpl.php:184
3765
+ #: tpl/general/settings.tpl.php:190 tpl/general/settings.tpl.php:207
3766
  msgid "Notice"
3767
  msgstr ""
3768
 
3840
  msgid "This option enables maximum optimization for Guest Mode visitors."
3841
  msgstr ""
3842
 
3843
+ #: tpl/general/settings.tpl.php:151
3844
+ msgid "Please read all warnings before enabling this option."
3845
+ msgstr ""
3846
+
3847
+ #: tpl/general/settings.tpl.php:165
3848
+ msgid "Your %1s quota on %2s will still be in use."
3849
+ msgstr ""
3850
+
3851
+ #: tpl/general/settings.tpl.php:172
3852
  msgid "This option only works when turning %s on."
3853
  msgstr ""
3854
 
3855
+ #: tpl/general/settings.tpl.php:178 tpl/general/settings.tpl.php:190
3856
  msgid "You need to turn %s on to get maximum result."
3857
  msgstr ""
3858
 
3859
+ #: tpl/general/settings.tpl.php:184
3860
  msgid ""
3861
  "You need to turn %s on and finish all WebP generation to get maximum result."
3862
  msgstr ""
3863
 
3864
+ #: tpl/general/settings.tpl.php:205
3865
  msgid ""
3866
  "Enter this site's IP address to allow cloud services directly call IP "
3867
  "instead of domain name. This eliminates the overhead of DNS and CDN lookups."
3868
  msgstr ""
3869
 
3870
+ #: tpl/general/settings.tpl.php:206
3871
  msgid "Your server IP"
3872
  msgstr ""
3873
 
3874
+ #: tpl/general/settings.tpl.php:206
3875
  msgid "Check my public IP from"
3876
  msgstr ""
3877
 
3878
+ #: tpl/general/settings.tpl.php:207
3879
  msgid ""
3880
  "the auto-detected IP may not be accurate if you have an additional outgoing "
3881
  "IP set, or you have multiple IPs configured on your server."
3882
  msgstr ""
3883
 
3884
+ #: tpl/general/settings.tpl.php:208
3885
  msgid "Please make sure this IP is the correct one for visiting your site."
3886
  msgstr ""
3887
 
3888
+ #: tpl/general/settings.tpl.php:223
3889
  msgid ""
3890
  "Turn this option ON to show latest news automatically, including hotfixes, "
3891
  "new releases, available beta versions, and promotions."
3909
  "or tablet visitors."
3910
  msgstr ""
3911
 
 
 
 
 
3912
  #: tpl/general/settings_tuning.tpl.php:7
3913
  #: tpl/page_optm/settings_tuning.tpl.php:18
3914
  msgid "Tuning Settings"
4003
  msgstr ""
4004
 
4005
  #: tpl/img_optm/summary.tpl.php:57 tpl/page_optm/settings_css.tpl.php:90
4006
+ #: tpl/page_optm/settings_css.tpl.php:200
4007
  #: tpl/page_optm/settings_media.tpl.php:176
4008
  msgid "Current closest Cloud server is %s.&#10; Click to redetect."
4009
  msgstr ""
4412
  msgid "This option is bypassed because %1$s option is %2$s."
4413
  msgstr ""
4414
 
4415
+ #: tpl/page_optm/settings_css.tpl.php:84 tpl/page_optm/settings_css.tpl.php:194
4416
  msgid "Last requested cost"
4417
  msgstr ""
4418
 
4419
+ #: tpl/page_optm/settings_css.tpl.php:96 tpl/page_optm/settings_css.tpl.php:206
4420
  msgid "URL list in %s queue waiting for cron"
4421
  msgstr ""
4422
 
4423
  #: tpl/page_optm/settings_css.tpl.php:117
4424
+ #: tpl/page_optm/settings_css.tpl.php:227
4425
  msgid "Run %s Queue Manually"
4426
  msgstr ""
4427
 
4443
  "minimize potential errors caused by CSS Combine."
4444
  msgstr ""
4445
 
4446
+ #: tpl/page_optm/settings_css.tpl.php:168
 
 
 
 
 
 
4447
  msgid "Optimize CSS delivery."
4448
  msgstr ""
4449
 
4450
+ #: tpl/page_optm/settings_css.tpl.php:169
4451
+ #: tpl/page_optm/settings_html.tpl.php:129 tpl/page_optm/settings_js.tpl.php:67
4452
  #: tpl/page_optm/settings_media.tpl.php:243
4453
  msgid ""
4454
  "This can improve your speed score in services like Pingdom, GTmetrix and "
4455
  "PageSpeed."
4456
  msgstr ""
4457
 
4458
+ #: tpl/page_optm/settings_css.tpl.php:170
4459
  msgid ""
4460
  "Use QUIC.cloud online service to generate critical CSS and load remaining "
4461
  "CSS asynchronously."
4462
  msgstr ""
4463
 
4464
+ #: tpl/page_optm/settings_css.tpl.php:172
4465
  msgid ""
4466
  "Automatic generation of critical CSS is in the background via a cron-based "
4467
  "queue."
4468
  msgstr ""
4469
 
4470
+ #: tpl/page_optm/settings_css.tpl.php:173
4471
  msgid ""
4472
  "When this option is turned %s, it will also load Google Fonts asynchronously."
4473
  msgstr ""
4474
 
4475
+ #: tpl/page_optm/settings_css.tpl.php:176
4476
  msgid "Elements with attribute %s in HTML code will be excluded."
4477
  msgstr ""
4478
 
4479
+ #: tpl/page_optm/settings_css.tpl.php:181
4480
  msgid "This option is bypassed due to %s option."
4481
  msgstr ""
4482
 
4483
+ #: tpl/page_optm/settings_css.tpl.php:242
4484
  msgid ""
4485
  "Disable this option to generate CCSS per Post Type instead of per page. This "
4486
  "can save significant CCSS quota, however it may result in incorrect CSS "
4487
  "styling if your site uses a page builder."
4488
  msgstr ""
4489
 
4490
+ #: tpl/page_optm/settings_css.tpl.php:255
4491
  msgid "This will inline the asynchronous CSS library to avoid render blocking."
4492
  msgstr ""
4493
 
4494
+ #: tpl/page_optm/settings_css.tpl.php:266
4495
  msgid "Default"
4496
  msgstr ""
4497
 
4498
+ #: tpl/page_optm/settings_css.tpl.php:268
4499
  msgid ""
4500
  "Set this to append %1$s to all %2$s rules before caching CSS to specify how "
4501
  "fonts should be displayed while being downloaded."
4502
  msgstr ""
4503
 
4504
+ #: tpl/page_optm/settings_css.tpl.php:269
4505
  msgid "%s is recommended."
4506
  msgstr ""
4507
 
4508
+ #: tpl/page_optm/settings_css.tpl.php:269
4509
  msgid "Swap"
4510
  msgstr ""
4511
 
4581
  msgid "Combine all local JS files into a single file."
4582
  msgstr ""
4583
 
4584
+ #: tpl/page_optm/settings_js.tpl.php:37 tpl/page_optm/settings_js.tpl.php:70
4585
  msgid ""
4586
  "This option may result in a JS error or layout issue on frontend pages with "
4587
  "certain themes/plugins."
4600
  "should minimize potential errors caused by JS Combine."
4601
  msgstr ""
4602
 
4603
+ #: tpl/page_optm/settings_js.tpl.php:63
 
 
 
 
 
 
4604
  msgid "Deferred"
4605
  msgstr ""
4606
 
4607
+ #: tpl/page_optm/settings_js.tpl.php:63
4608
  msgid "Delayed"
4609
  msgstr ""
4610
 
4611
+ #: tpl/page_optm/settings_js.tpl.php:65
4612
  msgid ""
4613
  "Deferring until page is parsed or delaying till interaction can help reduce "
4614
  "resource contention and improve performance causing a lower FID (Core Web "
4912
  msgid "Selected roles will be excluded from all optimizations."
4913
  msgstr ""
4914
 
4915
+ #: tpl/toolbox/beta_test.tpl.php:20
4916
  msgid "Try GitHub Version"
4917
  msgstr ""
4918
 
4919
+ #: tpl/toolbox/beta_test.tpl.php:24
4920
  msgid ""
4921
  "Use this section to switch plugin versions. To beta test a GitHub commit, "
4922
  "enter the commit URL in the field below."
4923
  msgstr ""
4924
 
4925
+ #: tpl/toolbox/beta_test.tpl.php:25
4926
  msgid "Example"
4927
  msgstr ""
4928
 
4929
+ #: tpl/toolbox/beta_test.tpl.php:29
4930
  msgid "Use latest GitHub Dev commit"
4931
  msgstr ""
4932
 
4933
+ #: tpl/toolbox/beta_test.tpl.php:31
4934
  msgid "Use latest GitHub Master commit"
4935
  msgstr ""
4936
 
4937
+ #: tpl/toolbox/beta_test.tpl.php:33 tpl/toolbox/beta_test.tpl.php:49
4938
  msgid "Use latest WordPress release version"
4939
  msgstr ""
4940
 
4941
+ #: tpl/toolbox/beta_test.tpl.php:33
4942
  msgid "OR"
4943
  msgstr ""
4944
 
4945
+ #: tpl/toolbox/beta_test.tpl.php:44
4946
  msgid ""
4947
  "Downgrade not recommended. May cause fatal error due to refactored code."
4948
  msgstr ""
4949
 
4950
+ #: tpl/toolbox/beta_test.tpl.php:48
4951
  msgid ""
4952
  "Press the %s button to use the most recent GitHub commit. Master is for "
4953
  "release candidate & Dev is for experimental testing."
4954
  msgstr ""
4955
 
4956
+ #: tpl/toolbox/beta_test.tpl.php:48
4957
  msgid "Use latest GitHub Dev/Master commit"
4958
  msgstr ""
4959
 
4960
+ #: tpl/toolbox/beta_test.tpl.php:49
4961
  msgid ""
4962
  "Press the %s button to stop beta testing and go back to the current release "
4963
  "from the WordPress Plugin Directory."
4964
  msgstr ""
4965
 
4966
+ #: tpl/toolbox/beta_test.tpl.php:54
4967
  msgid ""
4968
  "In order to avoid an upgrade error, you must be using %1$s or later before "
4969
  "you can upgrade to %2$s versions."
4970
  msgstr ""
4971
 
4972
+ #: tpl/toolbox/edit_htaccess.tpl.php:36
4973
+ msgid "LiteSpeed Cache View .htaccess"
 
 
 
 
 
 
 
 
4974
  msgstr ""
4975
 
4976
+ #: tpl/toolbox/edit_htaccess.tpl.php:41
4977
+ msgid ".htaccess Path"
4978
  msgstr ""
4979
 
4980
+ #: tpl/toolbox/edit_htaccess.tpl.php:47
4981
+ msgid "Frontend .htaccess Path"
4982
  msgstr ""
4983
 
4984
+ #: tpl/toolbox/edit_htaccess.tpl.php:52 tpl/toolbox/edit_htaccess.tpl.php:69
4985
+ msgid "Default path is"
4986
  msgstr ""
4987
 
4988
+ #: tpl/toolbox/edit_htaccess.tpl.php:55 tpl/toolbox/edit_htaccess.tpl.php:72
4989
+ msgid "PHP Constant %s is supported."
4990
  msgstr ""
4991
 
4992
+ #: tpl/toolbox/edit_htaccess.tpl.php:56 tpl/toolbox/edit_htaccess.tpl.php:73
4993
+ msgid "You can use this code %1$s in %2$s to specify the htaccess file path."
4994
  msgstr ""
4995
 
4996
+ #: tpl/toolbox/edit_htaccess.tpl.php:64
4997
+ msgid "Backend .htaccess Path"
4998
  msgstr ""
4999
 
5000
+ #: tpl/toolbox/edit_htaccess.tpl.php:82
5001
  msgid "Current %s Contents"
5002
  msgstr ""
5003
 
 
 
 
 
 
 
 
 
5004
  #: tpl/toolbox/entry.tpl.php:10
5005
  msgid "Import / Export"
5006
  msgstr ""
5007
 
5008
  #: tpl/toolbox/entry.tpl.php:14
5009
+ msgid "View .htaccess"
5010
  msgstr ""
5011
 
5012
  #: tpl/toolbox/entry.tpl.php:18
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.4.2
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.4.2' );
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.3
7
  * Author: LiteSpeed Technologies
8
  * Author URI: https://www.litespeedtech.com
9
  * License: GPLv3
33
  return;
34
  }
35
 
36
+ ! defined( 'LSCWP_V' ) && define( 'LSCWP_V', '4.4.3' );
37
 
38
  ! defined( 'LSCWP_CONTENT_DIR' ) && define( 'LSCWP_CONTENT_DIR', WP_CONTENT_DIR ) ;
39
  ! defined( 'LSCWP_DIR' ) && define( 'LSCWP_DIR', __DIR__ . '/' ) ;// Full absolute path '/var/www/html/***/wp-content/plugins/litespeed-cache/' or MU
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: LiteSpeedTech
3
  Tags: caching, optimize, performance, pagespeed, core web vitals, seo, speed, image optimize, compress, object cache, redis, memcached, database cleaner
4
  Requires at least: 4.0
5
- Tested up to: 5.7.2
6
- Stable tag: 4.4.2
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl.html
9
 
@@ -70,7 +70,7 @@ LiteSpeed Cache for WordPress is compatible with ClassicPress.
70
  * HTTP/2 support
71
  * [HTTP/3 & QUIC](https://www.litespeedtech.com/http3-faq) support
72
  * ESI (Edge Side Includes) support<sup>*</sup>
73
- * Widgets and Shortcodes as ESI blocks<sup>*</sup> (requires Classic Widgets plugin with WP 5.8 currently)
74
 
75
  <sup>*</sup> Feature not available in OpenLiteSpeed
76
 
@@ -249,6 +249,23 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The
249
 
250
  == Changelog ==
251
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
252
  = 4.4.2 - Sep 23 2021 =
253
  * **Purge** In order to clear pages containing 404 CSS/JS, the purge header will always be sent even in cases where purge must be delayed.
254
  * 🐞**Purge** Fixed a potential PHP warning caused when generating different optimized filenames.
2
  Contributors: LiteSpeedTech
3
  Tags: caching, optimize, performance, pagespeed, core web vitals, seo, speed, image optimize, compress, object cache, redis, memcached, database cleaner
4
  Requires at least: 4.0
5
+ Tested up to: 5.8.1
6
+ Stable tag: 4.4.3
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl.html
9
 
70
  * HTTP/2 support
71
  * [HTTP/3 & QUIC](https://www.litespeedtech.com/http3-faq) support
72
  * ESI (Edge Side Includes) support<sup>*</sup>
73
+ * Widgets and Shortcodes as ESI blocks<sup>*</sup> (requires Classic Widgets plugin for WP 5.8+)
74
 
75
  <sup>*</sup> Feature not available in OpenLiteSpeed
76
 
249
 
250
  == Changelog ==
251
 
252
+ = 4.4.3 - Oct 13 2021 =
253
+ * 🐞**Media** Fixed an issue where WebP is served erroneously under Guest Mode on older versions of Safari. (hash73)
254
+ * 🐞**Media** Reverted regex change to fix `Lazy Load Image Parent Class Name Excludes` failure. (thpstock)
255
+ * **Purge** Disabled `Purge Delay` in the optimization process by default.
256
+ * **Conf** Dropped `.htaccess Path Settings` options for security concern. (WP)
257
+ * **Conf** Dropped `CSS HTTP/2 Push`/`JS HTTP/2 Push` options. (Kevin)
258
+ * **Conf** Set `Guest Optimization` default to OFF.
259
+ * **Conf** Set `CCSS Per URL` default to OFF to avoid consuming more quota than intended after upgrade to v4. (n111)
260
+ * **Object** Fixed an issue with Object Cache warnings during upgrade, when Guest Mode is enabled.
261
+ * ☁️**Cloud** Fixed an issue with PHP notices when inquiring about quota usage for a service not currently in use.
262
+ * **GUI** Added GO detail warning. (n111)
263
+ * **GUI** Moved "quota wil be still in use" warning from Guest Mode to Guest Optimization section.
264
+ * **API** Added `LITESPEED_CFG_HTACCESS` PHP Constant to specify .htaccess path.
265
+ * **API** Added `litespeed_qs_forbidden` hook to bypass `?LSCWP_CTRL=` query string. (minhduc)
266
+ * **API** Added `litespeed_delay_purge` hook to delay the following Purge header until the next request.
267
+ * **API** Added `litespeed_wpconfig_readonly` hook to disable `WP_CACHE` constant update based on the wp-config.php file. (#633545)
268
+
269
  = 4.4.2 - Sep 23 2021 =
270
  * **Purge** In order to clear pages containing 404 CSS/JS, the purge header will always be sent even in cases where purge must be delayed.
271
  * 🐞**Purge** Fixed a potential PHP warning caused when generating different optimized filenames.
src/activation.cls.php CHANGED
@@ -396,6 +396,10 @@ class Activation extends Base {
396
  return false;
397
  }
398
 
 
 
 
 
399
  /**
400
  * Follow WP's logic to locate wp-config file
401
  * @see wp-load.php
396
  return false;
397
  }
398
 
399
+ if ( apply_filters( 'litespeed_wpconfig_readonly', false ) ) {
400
+ throw new \Exception( 'wp-config file is forbidden to modify due to API hook: litespeed_wpconfig_readonly' );
401
+ }
402
+
403
  /**
404
  * Follow WP's logic to locate wp-config file
405
  * @see wp-load.php
src/admin.cls.php CHANGED
@@ -119,12 +119,6 @@ class Admin extends Root {
119
  private function _proceed_admin_action() {
120
  // handle actions
121
  switch ( Router::get_action() ) {
122
-
123
- // Save htaccess
124
- case Router::ACTION_SAVE_HTACCESS:
125
- $this->cls( 'Htaccess' )->htaccess_editor_save();
126
- break;
127
-
128
  case Router::ACTION_SAVE_SETTINGS:
129
  $this->cls( 'Admin_Settings' )->save( $_POST );
130
  break;
119
  private function _proceed_admin_action() {
120
  // handle actions
121
  switch ( Router::get_action() ) {
 
 
 
 
 
 
122
  case Router::ACTION_SAVE_SETTINGS:
123
  $this->cls( 'Admin_Settings' )->save( $_POST );
124
  break;
src/base.cls.php CHANGED
@@ -126,12 +126,10 @@ class Base extends Root {
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';
132
  const O_OPTM_JS_COMB = 'optm-js_comb';
133
  const O_OPTM_JS_COMB_EXT_INL = 'optm-js_comb_ext_inl';
134
- const O_OPTM_JS_HTTP2 = 'optm-js_http2';
135
  const O_OPTM_JS_EXC = 'optm-js_exc';
136
  const O_OPTM_HTML_MIN = 'optm-html_min';
137
  const O_OPTM_HTML_LAZY = 'optm-html_lazy';
@@ -239,8 +237,6 @@ class Base extends Root {
239
  ## -------------------------------------------------- ##
240
  ## -------------- Misc ----------------- ##
241
  ## -------------------------------------------------- ##
242
- const O_MISC_HTACCESS_FRONT = 'misc-htaccess_front';
243
- const O_MISC_HTACCESS_BACK = 'misc-htaccess_back';
244
  const O_MISC_HEARTBEAT_FRONT = 'misc-heartbeat_front';
245
  const O_MISC_HEARTBEAT_FRONT_TTL = 'misc-heartbeat_front_ttl';
246
  const O_MISC_HEARTBEAT_BACK = 'misc-heartbeat_back';
@@ -410,12 +406,10 @@ class Base extends Root {
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,
416
  self::O_OPTM_JS_COMB => false,
417
  self::O_OPTM_JS_COMB_EXT_INL => false,
418
- self::O_OPTM_JS_HTTP2 => false,
419
  self::O_OPTM_JS_EXC => array(),
420
  self::O_OPTM_HTML_MIN => false,
421
  self::O_OPTM_HTML_LAZY => array(),
@@ -511,8 +505,6 @@ class Base extends Root {
511
  self::O_CRAWLER_COOKIES => array(),
512
 
513
  // Misc
514
- self::O_MISC_HTACCESS_FRONT => '',
515
- self::O_MISC_HTACCESS_BACK => '',
516
  self::O_MISC_HEARTBEAT_FRONT => false,
517
  self::O_MISC_HEARTBEAT_FRONT_TTL => 0,
518
  self::O_MISC_HEARTBEAT_BACK => false,
@@ -582,9 +574,6 @@ class Base extends Root {
582
 
583
  self::O_IMG_OPTM_WEBP_REPLACE => false,
584
 
585
- self::O_MISC_HTACCESS_FRONT => '',
586
- self::O_MISC_HTACCESS_BACK => '',
587
-
588
  );
589
 
590
  // NOTE: all the val of following items will be int while not bool
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_EXC = 'optm-css_exc';
130
  const O_OPTM_JS_MIN = 'optm-js_min';
131
  const O_OPTM_JS_COMB = 'optm-js_comb';
132
  const O_OPTM_JS_COMB_EXT_INL = 'optm-js_comb_ext_inl';
 
133
  const O_OPTM_JS_EXC = 'optm-js_exc';
134
  const O_OPTM_HTML_MIN = 'optm-html_min';
135
  const O_OPTM_HTML_LAZY = 'optm-html_lazy';
237
  ## -------------------------------------------------- ##
238
  ## -------------- Misc ----------------- ##
239
  ## -------------------------------------------------- ##
 
 
240
  const O_MISC_HEARTBEAT_FRONT = 'misc-heartbeat_front';
241
  const O_MISC_HEARTBEAT_FRONT_TTL = 'misc-heartbeat_front_ttl';
242
  const O_MISC_HEARTBEAT_BACK = 'misc-heartbeat_back';
406
  self::O_OPTM_UCSS_INLINE => false,
407
  self::O_OPTM_UCSS_WHITELIST => array(),
408
  self::O_OPTM_UCSS_EXC => array(),
 
409
  self::O_OPTM_CSS_EXC => array(),
410
  self::O_OPTM_JS_MIN => false,
411
  self::O_OPTM_JS_COMB => false,
412
  self::O_OPTM_JS_COMB_EXT_INL => false,
 
413
  self::O_OPTM_JS_EXC => array(),
414
  self::O_OPTM_HTML_MIN => false,
415
  self::O_OPTM_HTML_LAZY => array(),
505
  self::O_CRAWLER_COOKIES => array(),
506
 
507
  // Misc
 
 
508
  self::O_MISC_HEARTBEAT_FRONT => false,
509
  self::O_MISC_HEARTBEAT_FRONT_TTL => 0,
510
  self::O_MISC_HEARTBEAT_BACK => false,
574
 
575
  self::O_IMG_OPTM_WEBP_REPLACE => false,
576
 
 
 
 
577
  );
578
 
579
  // NOTE: all the val of following items will be int while not bool
src/cloud.cls.php CHANGED
@@ -244,10 +244,10 @@ class Cloud extends Base {
244
  $service = self::SVC_PAGE_OPTM;
245
  }
246
 
247
- $usage = $this->_summary[ 'usage.' . $service ];
248
- if ( empty( $usage ) ) {
249
  return 0;
250
  }
 
251
 
252
  // Image optm is always free
253
  $allowance_max = 0;
244
  $service = self::SVC_PAGE_OPTM;
245
  }
246
 
247
+ if ( empty( $this->_summary[ 'usage.' . $service ] ) ) {
 
248
  return 0;
249
  }
250
+ $usage = $this->_summary[ 'usage.' . $service ];
251
 
252
  // Image optm is always free
253
  $allowance_max = 0;
src/core.cls.php CHANGED
@@ -159,7 +159,7 @@ class Core extends Root {
159
  * Check if is non optm simulator
160
  * @since 2.9
161
  */
162
- if ( ! empty( $_GET[ Router::ACTION ] ) && $_GET[ Router::ACTION ] == 'before_optm' ) {
163
  Debug2::debug( '[Core] ⛑️ bypass_optm due to QS CTRL' );
164
  ! defined( 'LITESPEED_NO_OPTM' ) && define( 'LITESPEED_NO_OPTM', true );
165
  }
159
  * Check if is non optm simulator
160
  * @since 2.9
161
  */
162
+ if ( ! empty( $_GET[ Router::ACTION ] ) && $_GET[ Router::ACTION ] == 'before_optm' && ! apply_filters( 'litespeed_qs_forbidden', false ) ) {
163
  Debug2::debug( '[Core] ⛑️ bypass_optm due to QS CTRL' );
164
  ! defined( 'LITESPEED_NO_OPTM' ) && define( 'LITESPEED_NO_OPTM', true );
165
  }
src/css.cls.php CHANGED
@@ -699,7 +699,7 @@ class CSS extends Base {
699
  }
700
 
701
  $con = Optimizer::minify_css( $con );
702
- if ( $is_webp ) {
703
  $con = $this->cls( 'Media' )->replace_background_webp( $con );
704
  }
705
 
699
  }
700
 
701
  $con = Optimizer::minify_css( $con );
702
+ if ( $is_webp && $this->cls( 'Media' )->webp_support() ) {
703
  $con = $this->cls( 'Media' )->replace_background_webp( $con );
704
  }
705
 
src/data.upgrade.func.php CHANGED
@@ -374,13 +374,13 @@ function litespeed_update_3_0( $ver ) {
374
  // 'css_inline_minify' => 'optm-css_inline_min',
375
  'css_combine' => 'optm-css_comb',
376
  // 'css_combined_priority' => 'optm-css_comb_priority',
377
- 'css_http2' => 'optm-css_http2',
378
  'css_exclude' => 'optm-css_exc',
379
  'js_minify' => 'optm-js_min',
380
  // 'js_inline_minify' => 'optm-js_inline_min',
381
  'js_combine' => 'optm-js_comb',
382
  // 'js_combined_priority' => 'optm-js_comb_priority',
383
- 'js_http2' => 'optm-js_http2',
384
  'js_exclude' => 'optm-js_exc',
385
  // 'optimize_ttl' => 'optm-ttl',
386
  'html_minify' => 'optm-html_min',
374
  // 'css_inline_minify' => 'optm-css_inline_min',
375
  'css_combine' => 'optm-css_comb',
376
  // 'css_combined_priority' => 'optm-css_comb_priority',
377
+ // 'css_http2' => 'optm-css_http2',
378
  'css_exclude' => 'optm-css_exc',
379
  'js_minify' => 'optm-js_min',
380
  // 'js_inline_minify' => 'optm-js_inline_min',
381
  'js_combine' => 'optm-js_comb',
382
  // 'js_combined_priority' => 'optm-js_comb_priority',
383
+ // 'js_http2' => 'optm-js_http2',
384
  'js_exclude' => 'optm-js_exc',
385
  // 'optimize_ttl' => 'optm-ttl',
386
  'html_minify' => 'optm-html_min',
src/htaccess.cls.php CHANGED
@@ -13,8 +13,6 @@ namespace LiteSpeed;
13
  defined( 'WPINC' ) || exit;
14
 
15
  class Htaccess extends Root {
16
- const EDITOR_TEXTAREA_NAME = 'lscwp_ht_editor';
17
-
18
  private $frontend_htaccess = null;
19
  private $_default_frontend_htaccess = null;
20
  private $backend_htaccess = null;
@@ -62,11 +60,11 @@ class Htaccess extends Root {
62
  $this->_default_frontend_htaccess = $this->frontend_htaccess;
63
  $this->_default_backend_htaccess = $this->backend_htaccess;
64
 
65
- $frontend_htaccess = $this->conf( Base::O_MISC_HTACCESS_FRONT );
66
  if ( $frontend_htaccess && substr( $frontend_htaccess, -10 ) === '/.htaccess' ) {
67
  $this->frontend_htaccess = $frontend_htaccess;
68
  }
69
- $backend_htaccess = $this->conf( Base::O_MISC_HTACCESS_BACK );
70
  if ( $backend_htaccess && substr( $backend_htaccess, -10 ) === '/.htaccess' ) {
71
  $this->backend_htaccess = $backend_htaccess;
72
  }
@@ -280,30 +278,6 @@ class Htaccess extends Root {
280
  return $content;
281
  }
282
 
283
- /**
284
- * Save the rules file changes.
285
- *
286
- * NOTE: will throw error if failed
287
- *
288
- * @since 1.0.4
289
- * @access public
290
- */
291
- public function htaccess_save( $content, $kind = 'frontend' ) {
292
- $path = $this->htaccess_path( $kind );
293
-
294
- if ( ! $this->writable( $kind ) ) {
295
- Error::t( 'HTA_W' );
296
- }
297
-
298
- $this->_htaccess_backup( $kind );
299
-
300
- // File put contents will truncate by default. Will create file if doesn't exist.
301
- $res = File::save( $path, $content, false, false, false );
302
- if ( $res !== true ) {
303
- throw new \Exception( $res );
304
- }
305
- }
306
-
307
  /**
308
  * Try to backup the .htaccess file if we didn't save one before.
309
  *
@@ -852,31 +826,5 @@ class Htaccess extends Root {
852
  $this->_insert_wrapper( false, 'backend', self::MARKER_NONLS );
853
  }
854
  }
855
-
856
- /**
857
- * Parses the .htaccess buffer when the admin saves changes in the edit .htaccess page.
858
- * Only admin can do this
859
- *
860
- * @since 1.0.4
861
- * @since 2.9 Used exception when saving
862
- * @access public
863
- */
864
- public function htaccess_editor_save() {
865
- if ( ! isset( $_POST[ self::EDITOR_TEXTAREA_NAME ] ) ) {
866
- return;
867
- }
868
-
869
- $content = Admin::cleanup_text($_POST[self::EDITOR_TEXTAREA_NAME]);
870
-
871
- try {
872
- $this->htaccess_save($content);
873
- } catch( \Exception $e ) {
874
- Admin_Display::error( $e->getMessage() );
875
- return;
876
- }
877
-
878
- Admin_Display::succeed( __( 'File Saved.', 'litespeed-cache' ) );
879
-
880
- }
881
  }
882
 
13
  defined( 'WPINC' ) || exit;
14
 
15
  class Htaccess extends Root {
 
 
16
  private $frontend_htaccess = null;
17
  private $_default_frontend_htaccess = null;
18
  private $backend_htaccess = null;
60
  $this->_default_frontend_htaccess = $this->frontend_htaccess;
61
  $this->_default_backend_htaccess = $this->backend_htaccess;
62
 
63
+ $frontend_htaccess = defined( 'LITESPEED_CFG_HTACCESS' ) ? LITESPEED_CFG_HTACCESS : false;
64
  if ( $frontend_htaccess && substr( $frontend_htaccess, -10 ) === '/.htaccess' ) {
65
  $this->frontend_htaccess = $frontend_htaccess;
66
  }
67
+ $backend_htaccess = defined( 'LITESPEED_CFG_HTACCESS_BACKEND' ) ? LITESPEED_CFG_HTACCESS_BACKEND : false;
68
  if ( $backend_htaccess && substr( $backend_htaccess, -10 ) === '/.htaccess' ) {
69
  $this->backend_htaccess = $backend_htaccess;
70
  }
278
  return $content;
279
  }
280
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
281
  /**
282
  * Try to backup the .htaccess file if we didn't save one before.
283
  *
826
  $this->_insert_wrapper( false, 'backend', self::MARKER_NONLS );
827
  }
828
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
829
  }
830
 
src/lang.cls.php CHANGED
@@ -111,11 +111,9 @@ class Lang extends Base {
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' ),
117
  self::O_OPTM_JS_COMB_EXT_INL => __( 'JS Combine External and Inline', 'litespeed-cache' ),
118
- self::O_OPTM_JS_HTTP2 => __( 'JS HTTP/2 Push', 'litespeed-cache' ),
119
  self::O_OPTM_HTML_MIN => __( 'HTML Minify', 'litespeed-cache' ),
120
  self::O_OPTM_HTML_LAZY => __( 'HTML Lazy Load Selectors', 'litespeed-cache' ),
121
  self::O_OPTM_CSS_ASYNC => __( 'Load CSS Asynchronously', 'litespeed-cache' ),
@@ -188,8 +186,6 @@ class Lang extends Base {
188
  self::O_CACHE_LOGIN_COOKIE => __( 'Login Cookie', 'litespeed-cache' ),
189
  self::O_IMG_OPTM_WEBP_REPLACE => __( 'Image WebP Replacement', 'litespeed-cache' ),
190
 
191
- self::O_MISC_HTACCESS_FRONT => __( 'Frontend .htaccess Path', 'litespeed-cache' ),
192
- self::O_MISC_HTACCESS_BACK => __( 'Backend .htaccess Path', 'litespeed-cache' ),
193
  self::O_MISC_HEARTBEAT_FRONT => __( 'Frontend Heartbeat Control', 'litespeed-cache' ),
194
  self::O_MISC_HEARTBEAT_FRONT_TTL => __( 'Frontend Heartbeat TTL', 'litespeed-cache' ),
195
  self::O_MISC_HEARTBEAT_BACK => __( 'Backend Heartbeat Control', '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_JS_MIN => __( 'JS Minify', 'litespeed-cache' ),
115
  self::O_OPTM_JS_COMB => __( 'JS Combine', 'litespeed-cache' ),
116
  self::O_OPTM_JS_COMB_EXT_INL => __( 'JS Combine External and Inline', 'litespeed-cache' ),
 
117
  self::O_OPTM_HTML_MIN => __( 'HTML Minify', 'litespeed-cache' ),
118
  self::O_OPTM_HTML_LAZY => __( 'HTML Lazy Load Selectors', 'litespeed-cache' ),
119
  self::O_OPTM_CSS_ASYNC => __( 'Load CSS Asynchronously', 'litespeed-cache' ),
186
  self::O_CACHE_LOGIN_COOKIE => __( 'Login Cookie', 'litespeed-cache' ),
187
  self::O_IMG_OPTM_WEBP_REPLACE => __( 'Image WebP Replacement', 'litespeed-cache' ),
188
 
 
 
189
  self::O_MISC_HEARTBEAT_FRONT => __( 'Frontend Heartbeat Control', 'litespeed-cache' ),
190
  self::O_MISC_HEARTBEAT_FRONT_TTL => __( 'Frontend Heartbeat TTL', 'litespeed-cache' ),
191
  self::O_MISC_HEARTBEAT_BACK => __( 'Backend Heartbeat Control', 'litespeed-cache' ),
src/media.cls.php CHANGED
@@ -550,7 +550,7 @@ class Media extends Root {
550
  if ( $parent_cls_exc ) {
551
  Debug2::debug2( '[Media] Lazyload Class excludes', $parent_cls_exc );
552
  foreach ( $parent_cls_exc as $v ) {
553
- $content = preg_replace( '#<(\w+) [^>]*class=(\'|")[^\2]*' . preg_quote( $v, '#' ) . '[^\2]*\2[^>]*>.*</\1>#sU', '', $content );
554
  }
555
  }
556
 
@@ -625,7 +625,7 @@ class Media extends Root {
625
 
626
  $attrs[ 'width' ] = $ori_width;
627
  $attrs[ 'height' ] = $ori_height;
628
- $new_html = preg_replace( '#(width|height)=(\'|")[^\2]*\2#', '', $match[ 0 ] );
629
  $new_html = str_replace( '<img ', '<img width="' . $attrs[ 'width' ] . '" height="' . $attrs[ 'height' ] . '" ', $new_html );
630
  Debug2::debug( '[Media] Add missing sizes ' . $attrs[ 'width' ] . 'x' . $attrs[ 'height' ] . ' to ' . $attrs[ 'src' ] );
631
  $this->content = str_replace( $match[ 0 ], $new_html, $this->content );
@@ -689,7 +689,7 @@ class Media extends Root {
689
  if ( $parent_cls_exc ) {
690
  Debug2::debug2( '[Media] Iframe Lazyload Class excludes', $parent_cls_exc );
691
  foreach ( $parent_cls_exc as $v ) {
692
- $content = preg_replace( '#<(\w+) [^>]*class=(\'|")[^\2]*' . preg_quote( $v, '#' ) . '[^\2]*\2[^>]*>.*</\1>#sU', '', $content );
693
  }
694
  }
695
 
@@ -753,10 +753,10 @@ class Media extends Root {
753
  $v = explode( '.', $v );
754
  $attr = preg_quote( $v[ 1 ], '#' );
755
  if ( $v[ 0 ] ) {
756
- $pattern = '#<' . preg_quote( $v[ 0 ], '#' ) . '([^>]+)' . $attr . '=(\'|")([^\2]+)\2#iU';
757
  }
758
  else {
759
- $pattern = '# ' . $attr . '=(\'|")([^\1]+)\1#iU';
760
  }
761
 
762
  preg_match_all( $pattern, $content, $matches );
@@ -792,12 +792,12 @@ class Media extends Root {
792
 
793
  // parse srcset
794
  // todo: should apply this to cdn too
795
- if ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE_SRCSET ) ) {
796
  $content = Utility::srcset_replace( $content, array( $this, 'replace_webp' ) );
797
  }
798
 
799
  // Replace background-image
800
- if ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) {
801
  $content = $this->replace_background_webp( $content );
802
  }
803
 
550
  if ( $parent_cls_exc ) {
551
  Debug2::debug2( '[Media] Lazyload Class excludes', $parent_cls_exc );
552
  foreach ( $parent_cls_exc as $v ) {
553
+ $content = preg_replace( '#<(\w+) [^>]*class=(\'|")[^\'"]*' . preg_quote( $v, '#' ) . '[^\'"]*\2[^>]*>.*</\1>#sU', '', $content );
554
  }
555
  }
556
 
625
 
626
  $attrs[ 'width' ] = $ori_width;
627
  $attrs[ 'height' ] = $ori_height;
628
+ $new_html = preg_replace( '#(width|height)=(["\'])[^\2]*\2#', '', $match[ 0 ] );
629
  $new_html = str_replace( '<img ', '<img width="' . $attrs[ 'width' ] . '" height="' . $attrs[ 'height' ] . '" ', $new_html );
630
  Debug2::debug( '[Media] Add missing sizes ' . $attrs[ 'width' ] . 'x' . $attrs[ 'height' ] . ' to ' . $attrs[ 'src' ] );
631
  $this->content = str_replace( $match[ 0 ], $new_html, $this->content );
689
  if ( $parent_cls_exc ) {
690
  Debug2::debug2( '[Media] Iframe Lazyload Class excludes', $parent_cls_exc );
691
  foreach ( $parent_cls_exc as $v ) {
692
+ $content = preg_replace( '#<(\w+) [^>]*class=(\'|")[^\'"]*' . preg_quote( $v, '#' ) . '[^\'"]*\2[^>]*>.*</\1>#sU', '', $content );
693
  }
694
  }
695
 
753
  $v = explode( '.', $v );
754
  $attr = preg_quote( $v[ 1 ], '#' );
755
  if ( $v[ 0 ] ) {
756
+ $pattern = '#<' . preg_quote( $v[ 0 ], '#' ) . '([^>]+)' . $attr . '=([\'"])(.+)\2#iU';
757
  }
758
  else {
759
+ $pattern = '# ' . $attr . '=([\'"])(.+)\1#iU';
760
  }
761
 
762
  preg_match_all( $pattern, $content, $matches );
792
 
793
  // parse srcset
794
  // todo: should apply this to cdn too
795
+ if ( ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE_SRCSET ) ) && $this->webp_support() ) {
796
  $content = Utility::srcset_replace( $content, array( $this, 'replace_webp' ) );
797
  }
798
 
799
  // Replace background-image
800
+ if ( ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) && $this->webp_support() ) {
801
  $content = $this->replace_background_webp( $content );
802
  }
803
 
src/object-cache.cls.php CHANGED
@@ -105,23 +105,29 @@ class Object_Cache extends Root {
105
  elseif ( defined( 'self::CONF_FILE' ) && file_exists( WP_CONTENT_DIR . '/' . self::CONF_FILE ) ) { // Get cfg from _data_file
106
  // Use self::const to avoid loading more classes
107
  $cfg = json_decode( file_get_contents( WP_CONTENT_DIR . '/' . self::CONF_FILE ), true );
108
- $this->_cfg_method = ! empty( $cfg[ self::O_OBJECT_KIND ] ) ? $cfg[ self::O_OBJECT_KIND ] : false;
109
- $this->_cfg_host = $cfg[ self::O_OBJECT_HOST ];
110
- $this->_cfg_port = $cfg[ self::O_OBJECT_PORT ];
111
- $this->_cfg_life = ! empty( $cfg[ self::O_OBJECT_LIFE ] ) ? $cfg[ self::O_OBJECT_LIFE ] : $this->_default_life;
112
- $this->_cfg_persistent = ! empty( $cfg[ self::O_OBJECT_PERSISTENT ] ) ? $cfg[ self::O_OBJECT_PERSISTENT ] : false;
113
- $this->_cfg_admin = ! empty( $cfg[ self::O_OBJECT_ADMIN ] ) ? $cfg[ self::O_OBJECT_ADMIN ] : false;
114
- $this->_cfg_transients = ! empty( $cfg[ self::O_OBJECT_TRANSIENTS ] ) ? $cfg[ self::O_OBJECT_TRANSIENTS ] : false;
115
- $this->_cfg_db = ! empty( $cfg[ self::O_OBJECT_DB_ID ] ) ? $cfg[ self::O_OBJECT_DB_ID ] : 0;
116
- $this->_cfg_user = ! empty( $cfg[ self::O_OBJECT_USER ] ) ? $cfg[ self::O_OBJECT_USER ] : '';
117
- $this->_cfg_pswd = ! empty( $cfg[ self::O_OBJECT_PSWD ] ) ? $cfg[ self::O_OBJECT_PSWD ] : '';
118
- $this->_global_groups = ! empty( $cfg[ self::O_OBJECT_GLOBAL_GROUPS ] ) ? $cfg[ self::O_OBJECT_GLOBAL_GROUPS ] : array();
119
- $this->_non_persistent_groups = ! empty( $cfg[ self::O_OBJECT_NON_PERSISTENT_GROUPS ] ) ? $cfg[ self::O_OBJECT_NON_PERSISTENT_GROUPS ] : array();
120
-
121
- if ( $this->_cfg_method ) {
122
- $this->_oc_driver = 'Redis';
 
 
 
123
  }
124
- $this->_cfg_enabled = class_exists( $this->_oc_driver ) && $this->_cfg_host;
 
 
 
125
  }
126
  else {
127
  $this->_cfg_enabled = false;
105
  elseif ( defined( 'self::CONF_FILE' ) && file_exists( WP_CONTENT_DIR . '/' . self::CONF_FILE ) ) { // Get cfg from _data_file
106
  // Use self::const to avoid loading more classes
107
  $cfg = json_decode( file_get_contents( WP_CONTENT_DIR . '/' . self::CONF_FILE ), true );
108
+ if ( ! empty( $cfg[ self::O_OBJECT_HOST ] ) ) {
109
+ $this->_cfg_method = ! empty( $cfg[ self::O_OBJECT_KIND ] ) ? $cfg[ self::O_OBJECT_KIND ] : false;
110
+ $this->_cfg_host = $cfg[ self::O_OBJECT_HOST ];
111
+ $this->_cfg_port = $cfg[ self::O_OBJECT_PORT ];
112
+ $this->_cfg_life = ! empty( $cfg[ self::O_OBJECT_LIFE ] ) ? $cfg[ self::O_OBJECT_LIFE ] : $this->_default_life;
113
+ $this->_cfg_persistent = ! empty( $cfg[ self::O_OBJECT_PERSISTENT ] ) ? $cfg[ self::O_OBJECT_PERSISTENT ] : false;
114
+ $this->_cfg_admin = ! empty( $cfg[ self::O_OBJECT_ADMIN ] ) ? $cfg[ self::O_OBJECT_ADMIN ] : false;
115
+ $this->_cfg_transients = ! empty( $cfg[ self::O_OBJECT_TRANSIENTS ] ) ? $cfg[ self::O_OBJECT_TRANSIENTS ] : false;
116
+ $this->_cfg_db = ! empty( $cfg[ self::O_OBJECT_DB_ID ] ) ? $cfg[ self::O_OBJECT_DB_ID ] : 0;
117
+ $this->_cfg_user = ! empty( $cfg[ self::O_OBJECT_USER ] ) ? $cfg[ self::O_OBJECT_USER ] : '';
118
+ $this->_cfg_pswd = ! empty( $cfg[ self::O_OBJECT_PSWD ] ) ? $cfg[ self::O_OBJECT_PSWD ] : '';
119
+ $this->_global_groups = ! empty( $cfg[ self::O_OBJECT_GLOBAL_GROUPS ] ) ? $cfg[ self::O_OBJECT_GLOBAL_GROUPS ] : array();
120
+ $this->_non_persistent_groups = ! empty( $cfg[ self::O_OBJECT_NON_PERSISTENT_GROUPS ] ) ? $cfg[ self::O_OBJECT_NON_PERSISTENT_GROUPS ] : array();
121
+
122
+ if ( $this->_cfg_method ) {
123
+ $this->_oc_driver = 'Redis';
124
+ }
125
+ $this->_cfg_enabled = class_exists( $this->_oc_driver ) && $this->_cfg_host;
126
  }
127
+ else {
128
+ $this->_cfg_enabled = false;
129
+ }
130
+
131
  }
132
  else {
133
  $this->_cfg_enabled = false;
src/optimize.cls.php CHANGED
@@ -17,10 +17,7 @@ class Optimize extends Base {
17
 
18
  private $content;
19
  private $content_ori;
20
- private $http2_headers = array();
21
 
22
- private $cfg_http2_css;
23
- private $cfg_http2_js;
24
  private $cfg_css_min;
25
  private $cfg_css_comb;
26
  private $cfg_js_min;
@@ -245,8 +242,6 @@ class Optimize extends Base {
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 );
251
  $this->cfg_css_comb = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_CSS_COMB );
252
  $this->cfg_js_min = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_JS_MIN );
@@ -276,13 +271,13 @@ class Optimize extends Base {
276
 
277
  // Parse css from content
278
  $src_list = false;
279
- if ( $this->cfg_css_min || $this->cfg_css_comb || $this->cfg_http2_css || $this->cfg_ggfonts_rm || $this->cfg_css_async || $this->cfg_ggfonts_async || $this->_conf_css_font_display ) {
280
  add_filter( 'litespeed_optimize_css_excludes', array( $this->cls( 'Data' ), 'load_css_exc' ) );
281
  list( $src_list, $html_list ) = $this->_parse_css();
282
  }
283
 
284
  // css optimizer
285
- if ( $this->cfg_css_min || $this->cfg_css_comb || $this->cfg_http2_css ) {
286
 
287
  if ( $src_list ) {
288
  // IF combine
@@ -313,9 +308,6 @@ class Optimize extends Base {
313
 
314
  // Move all css to top
315
  $this->content = str_replace( $html_list, '', $this->content );
316
-
317
- // Add to HTTP2
318
- $this->append_http2( $url );
319
  }
320
  }
321
  }
@@ -330,7 +322,6 @@ class Optimize extends Base {
330
  if ( ! empty( $src_info[ 'inl' ] ) ) {
331
  continue;
332
  }
333
- $this->append_http2( $src_info[ 'src' ] );
334
  }
335
  }
336
  }
@@ -348,7 +339,7 @@ class Optimize extends Base {
348
 
349
  // Parse js from buffer as needed
350
  $src_list = false;
351
- if ( $this->cfg_js_min || $this->cfg_js_comb || $this->cfg_http2_js || $this->cfg_js_defer ) {
352
  add_filter( 'litespeed_optimize_js_excludes', array( $this->cls( 'Data' ), 'load_js_exc' ) );
353
  list( $src_list, $html_list ) = $this->_parse_js();
354
  }
@@ -361,9 +352,6 @@ class Optimize extends Base {
361
  if ( $url ) {
362
  $this->html_foot .= $this->_build_js_tag( $url );
363
 
364
- // Add to HTTP2
365
- $this->append_http2( $url, 'js' );
366
-
367
  // Will move all JS to bottom combined one
368
  $this->content = str_replace( $html_list, '', $this->content );
369
  }
@@ -394,10 +382,6 @@ class Optimize extends Base {
394
  $this->content = str_replace( $html_list[ $k ], $deferred, $this->content );
395
  }
396
  }
397
- // HTTP2 push
398
- if ( $this->cfg_http2_js ) {
399
- $this->append_http2( $src_info[ 'src' ], 'js' );
400
- }
401
  }
402
  }
403
  }
@@ -419,7 +403,6 @@ class Optimize extends Base {
419
  else {
420
  $css_async_lib_url = LSWCP_PLUGIN_URL . self::LIB_FILE_CSS_ASYNC;
421
  $this->html_head .= $this->_build_js_tag( $css_async_lib_url, 'litespeed-css-async-lib' ); // Don't exclude it from defer for now
422
- $this->append_http2( $css_async_lib_url, 'js' ); // async lib will be http/2 pushed always
423
  }
424
  }
425
 
@@ -487,10 +470,6 @@ class Optimize extends Base {
487
  if ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_HTML_MIN ) ) {
488
  $this->content = $this->__optimizer->html_min( $this->content );
489
  }
490
-
491
- if ( $this->http2_headers ) {
492
- @header( 'Link: ' . implode( ',', $this->http2_headers ), false );
493
- }
494
  }
495
 
496
  /**
@@ -599,7 +578,6 @@ class Optimize extends Base {
599
 
600
  // default async, if js defer set use defer
601
  $html .= $this->_build_js_tag( $webfont_lib_url );
602
- $this->append_http2( $webfont_lib_url, 'js' ); // async lib will be http/2 pushed always
603
 
604
  // Put this in the very beginning for preconnect
605
  $this->html_head = $html . $this->html_head;
@@ -696,7 +674,7 @@ class Optimize extends Base {
696
  private function _src_queue_handler( $src_list, $html_list, $file_type = 'css' ) {
697
  $html_list_ori = $html_list;
698
 
699
- $can_webp = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE );
700
 
701
  $tag = $file_type == 'css' ? 'link' : 'script';
702
  foreach ( $src_list as $key => $src_info ) {
@@ -725,8 +703,6 @@ class Optimize extends Base {
725
  $url = $this->_build_single_hash_url( $src_info[ 'src' ], $file_type );
726
  if ( $url ) {
727
  $snippet = str_replace( $src_info[ 'src' ], $url, $html_list[ $key ] );
728
- // Add to HTTP2
729
- $this->append_http2( $url, $file_type );
730
  }
731
 
732
  // Handle css async load
@@ -856,25 +832,15 @@ class Optimize extends Base {
856
  }
857
  }
858
 
859
- if ( $is_internal ) {
860
- $this->append_http2( $attrs[ 'src' ], 'js' );
861
- }
862
-
863
  Debug2::debug2( '[Optm] _parse_js bypassed due to ' . ( $js_excluded ? 'js files excluded [hit] ' . $js_excluded : 'external js' ) );
864
  continue;
865
  }
866
 
867
  if ( strpos( $attrs[ 'src' ], '/localres/' ) !== false ) {
868
- if ( $is_internal ) {
869
- $this->append_http2( $attrs[ 'src' ], 'js' );
870
- }
871
  continue;
872
  }
873
 
874
  if ( strpos( $attrs[ 'src' ], 'instant_click' ) !== false ) {
875
- if ( $is_internal ) {
876
- $this->append_http2( $attrs[ 'src' ], 'js' );
877
- }
878
  continue;
879
  }
880
 
@@ -1194,36 +1160,4 @@ class Optimize extends Base {
1194
  return str_replace( '></script>', ' defer data-deferred="1"></script>', $ori );
1195
  }
1196
 
1197
- /**
1198
- * Append to HTTP2 header
1199
- *
1200
- * @since 1.2.2
1201
- * @access private
1202
- */
1203
- private function append_http2( $url, $file_type = 'css' ) {
1204
- if ( ! ( $file_type === 'css' ? $this->cfg_http2_css : $this->cfg_http2_js ) ) {
1205
- return;
1206
- }
1207
-
1208
- /**
1209
- * For CDN enabled ones, bypass http/2 push
1210
- * @since 1.6.2.1
1211
- */
1212
- if ( $this->cls( 'CDN' )->inc_type( $file_type ) ) {
1213
- return;
1214
- }
1215
-
1216
- /**
1217
- * Keep QS for constance by set 2nd param to true
1218
- * @since 1.6.2.1
1219
- */
1220
- $uri = Utility::url2uri( $url, true );
1221
-
1222
- if ( ! $uri ) {
1223
- return;
1224
- }
1225
-
1226
- $this->http2_headers[] = '<' . $uri . '>; rel=preload; as=' . ( $file_type === 'css' ? 'style' : 'script' );
1227
- }
1228
-
1229
  }
17
 
18
  private $content;
19
  private $content_ori;
 
20
 
 
 
21
  private $cfg_css_min;
22
  private $cfg_css_comb;
23
  private $cfg_js_min;
242
  global $wp;
243
  $this->_request_url = home_url( $wp->request );
244
 
 
 
245
  $this->cfg_css_min = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_CSS_MIN );
246
  $this->cfg_css_comb = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_CSS_COMB );
247
  $this->cfg_js_min = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_JS_MIN );
271
 
272
  // Parse css from content
273
  $src_list = false;
274
+ if ( $this->cfg_css_min || $this->cfg_css_comb || $this->cfg_ggfonts_rm || $this->cfg_css_async || $this->cfg_ggfonts_async || $this->_conf_css_font_display ) {
275
  add_filter( 'litespeed_optimize_css_excludes', array( $this->cls( 'Data' ), 'load_css_exc' ) );
276
  list( $src_list, $html_list ) = $this->_parse_css();
277
  }
278
 
279
  // css optimizer
280
+ if ( $this->cfg_css_min || $this->cfg_css_comb ) {
281
 
282
  if ( $src_list ) {
283
  // IF combine
308
 
309
  // Move all css to top
310
  $this->content = str_replace( $html_list, '', $this->content );
 
 
 
311
  }
312
  }
313
  }
322
  if ( ! empty( $src_info[ 'inl' ] ) ) {
323
  continue;
324
  }
 
325
  }
326
  }
327
  }
339
 
340
  // Parse js from buffer as needed
341
  $src_list = false;
342
+ if ( $this->cfg_js_min || $this->cfg_js_comb || $this->cfg_js_defer ) {
343
  add_filter( 'litespeed_optimize_js_excludes', array( $this->cls( 'Data' ), 'load_js_exc' ) );
344
  list( $src_list, $html_list ) = $this->_parse_js();
345
  }
352
  if ( $url ) {
353
  $this->html_foot .= $this->_build_js_tag( $url );
354
 
 
 
 
355
  // Will move all JS to bottom combined one
356
  $this->content = str_replace( $html_list, '', $this->content );
357
  }
382
  $this->content = str_replace( $html_list[ $k ], $deferred, $this->content );
383
  }
384
  }
 
 
 
 
385
  }
386
  }
387
  }
403
  else {
404
  $css_async_lib_url = LSWCP_PLUGIN_URL . self::LIB_FILE_CSS_ASYNC;
405
  $this->html_head .= $this->_build_js_tag( $css_async_lib_url, 'litespeed-css-async-lib' ); // Don't exclude it from defer for now
 
406
  }
407
  }
408
 
470
  if ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_HTML_MIN ) ) {
471
  $this->content = $this->__optimizer->html_min( $this->content );
472
  }
 
 
 
 
473
  }
474
 
475
  /**
578
 
579
  // default async, if js defer set use defer
580
  $html .= $this->_build_js_tag( $webfont_lib_url );
 
581
 
582
  // Put this in the very beginning for preconnect
583
  $this->html_head = $html . $this->html_head;
674
  private function _src_queue_handler( $src_list, $html_list, $file_type = 'css' ) {
675
  $html_list_ori = $html_list;
676
 
677
+ $can_webp = ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) && $this->cls( 'Media' )->webp_support();
678
 
679
  $tag = $file_type == 'css' ? 'link' : 'script';
680
  foreach ( $src_list as $key => $src_info ) {
703
  $url = $this->_build_single_hash_url( $src_info[ 'src' ], $file_type );
704
  if ( $url ) {
705
  $snippet = str_replace( $src_info[ 'src' ], $url, $html_list[ $key ] );
 
 
706
  }
707
 
708
  // Handle css async load
832
  }
833
  }
834
 
 
 
 
 
835
  Debug2::debug2( '[Optm] _parse_js bypassed due to ' . ( $js_excluded ? 'js files excluded [hit] ' . $js_excluded : 'external js' ) );
836
  continue;
837
  }
838
 
839
  if ( strpos( $attrs[ 'src' ], '/localres/' ) !== false ) {
 
 
 
840
  continue;
841
  }
842
 
843
  if ( strpos( $attrs[ 'src' ], 'instant_click' ) !== false ) {
 
 
 
844
  continue;
845
  }
846
 
1160
  return str_replace( '></script>', ' defer data-deferred="1"></script>', $ori );
1161
  }
1162
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1163
  }
src/optimizer.cls.php CHANGED
@@ -152,7 +152,7 @@ class Optimizer extends Root {
152
 
153
  $content = $this->cls( 'CDN' )->finalize( $content );
154
 
155
- if ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) {
156
  $content = $this->cls( 'Media' )->replace_background_webp( $content );
157
  }
158
 
152
 
153
  $content = $this->cls( 'CDN' )->finalize( $content );
154
 
155
+ if ( ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP_REPLACE ) ) && $this->cls( 'Media' )->webp_support() ) {
156
  $content = $this->cls( 'Media' )->replace_background_webp( $content );
157
  }
158
 
src/purge.cls.php CHANGED
@@ -418,13 +418,17 @@ class Purge extends Base {
418
 
419
  // Send purge header immediately
420
  $curr_built = $this->_build( $purge2 );
421
- @header( $curr_built );
422
- if ( defined( 'LITESPEED_DID_send_headers' ) || defined( 'LITESPEED_CLI' ) ) {
423
  // Can't send, already has output, need to save and wait for next run
424
  self::update_option( $purge2 ? self::DB_QUEUE2 : self::DB_QUEUE, $curr_built );
425
- Debug2::debug( '[Purge] Output existed, queue stored: ' . $curr_built );
426
  }
427
  else {
 
 
 
 
 
428
  Debug2::debug( $curr_built );
429
  }
430
 
418
 
419
  // Send purge header immediately
420
  $curr_built = $this->_build( $purge2 );
421
+ if ( defined( 'LITESPEED_CLI' ) ) {
 
422
  // Can't send, already has output, need to save and wait for next run
423
  self::update_option( $purge2 ? self::DB_QUEUE2 : self::DB_QUEUE, $curr_built );
424
+ Debug2::debug( '[Purge] CLI request, queue stored: ' . $curr_built );
425
  }
426
  else {
427
+ @header( $curr_built );
428
+ if ( defined( 'LITESPEED_DID_send_headers' ) && apply_filters( 'litespeed_delay_purge', false ) ) {
429
+ self::update_option( $purge2 ? self::DB_QUEUE2 : self::DB_QUEUE, $curr_built );
430
+ Debug2::debug( '[Purge] Output existed, queue stored: ' . $curr_built );
431
+ }
432
  Debug2::debug( $curr_built );
433
  }
434
 
src/router.cls.php CHANGED
@@ -14,7 +14,6 @@ class Router extends Base {
14
  const NONCE = 'LSCWP_NONCE';
15
  const ACTION = 'LSCWP_CTRL';
16
 
17
- const ACTION_SAVE_HTACCESS = 'save-htaccess';
18
  const ACTION_SAVE_SETTINGS_NETWORK = 'save-settings-network';
19
  const ACTION_DB_OPTM = 'db_optm';
20
  const ACTION_PLACEHOLDER = 'placeholder';
@@ -499,6 +498,11 @@ class Router extends Base {
499
  return;
500
  }
501
 
 
 
 
 
 
502
  $_is_public_action = true;
503
  }
504
 
@@ -512,13 +516,6 @@ class Router extends Base {
512
  $_can_option = current_user_can( 'manage_options' );
513
 
514
  switch ( $action ) {
515
- // Save htaccess
516
- case self::ACTION_SAVE_HTACCESS:
517
- if ( ( ! $_is_multisite && $_can_option ) || $_can_network_option ) {
518
- self::$_action = $action;
519
- }
520
- return;
521
-
522
  // Save network settings
523
  case self::ACTION_SAVE_SETTINGS_NETWORK:
524
  if ( $_can_network_option ) {
14
  const NONCE = 'LSCWP_NONCE';
15
  const ACTION = 'LSCWP_CTRL';
16
 
 
17
  const ACTION_SAVE_SETTINGS_NETWORK = 'save-settings-network';
18
  const ACTION_DB_OPTM = 'db_optm';
19
  const ACTION_PLACEHOLDER = 'placeholder';
498
  return;
499
  }
500
 
501
+ if ( apply_filters( 'litespeed_qs_forbidden', false ) ) {
502
+ Debug2::debug( '[Router] LSCWP_CTRL forbidden by hook litespeed_qs_forbidden' );
503
+ return;
504
+ }
505
+
506
  $_is_public_action = true;
507
  }
508
 
516
  $_can_option = current_user_can( 'manage_options' );
517
 
518
  switch ( $action ) {
 
 
 
 
 
 
 
519
  // Save network settings
520
  case self::ACTION_SAVE_SETTINGS_NETWORK:
521
  if ( $_can_network_option ) {
src/utility.cls.php CHANGED
@@ -304,7 +304,7 @@ class Utility extends Root {
304
  */
305
  public static function parse_attr( $str ) {
306
  $attrs = array();
307
- preg_match_all( '#([\w-]+)=(\'|")([^\2]*)\2#isU', $str, $matches, PREG_SET_ORDER );
308
  foreach ( $matches as $match ) {
309
  $attrs[ $match[ 1 ] ] = trim( $match[ 3 ] );
310
  }
304
  */
305
  public static function parse_attr( $str ) {
306
  $attrs = array();
307
+ preg_match_all( '#([\w-]+)=(["\'])([^\2]*)\2#isU', $str, $matches, PREG_SET_ORDER );
308
  foreach ( $matches as $match ) {
309
  $attrs[ $match[ 1 ] ] = trim( $match[ 3 ] );
310
  }
tpl/general/settings.tpl.php CHANGED
@@ -148,7 +148,25 @@ if ( ! $can_token ) {
148
  <?php $this->build_switch( $id ); ?>
149
  <div class="litespeed-desc">
150
  <?php echo __( 'This option enables maximum optimization for Guest Mode visitors.', 'litespeed-cache' ); ?>
151
- <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/general/#guest-optimization' ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  <?php if ( ! $this->conf( Base::O_GUEST ) ) : ?>
153
  <br /><font class="litespeed-warning litespeed-left10">
154
  ⚠️ <?php echo __( 'Notice', 'litespeed-cache' ); ?>: <?php echo sprintf( __( 'This option only works when turning %s on.', 'litespeed-cache' ), '<code>' . Lang::title( Base::O_GUEST ) . '</code>' ); ?>
148
  <?php $this->build_switch( $id ); ?>
149
  <div class="litespeed-desc">
150
  <?php echo __( 'This option enables maximum optimization for Guest Mode visitors.', 'litespeed-cache' ); ?>
151
+ <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/general/#guest-optimization', __( 'Please read all warnings before enabling this option.', 'litespeed-cache' ), false, 'litespeed-warning' ); ?>
152
+
153
+ <?php
154
+ $typeList = array();
155
+ if ( $this->conf( Base::O_GUEST ) && ! $this->conf( Base::O_OPTM_UCSS ) ) {
156
+ $typeList[] = 'UCSS';
157
+ }
158
+ if ( $this->conf( Base::O_GUEST ) && ! $this->conf( Base::O_OPTM_CSS_ASYNC ) ) {
159
+ $typeList[] = 'CCSS';
160
+ }
161
+ if ( ! empty( $typeList ) ) {
162
+ $theType = implode( '/', $typeList );
163
+ echo '<br />';
164
+ echo '<font class="litespeed-info">';
165
+ echo '⚠️ ' . sprintf( __( 'Your %1s quota on %2s will still be in use.', 'litespeed-cache' ), $theType, 'QUIC.cloud' );
166
+ echo '</font>';
167
+ }
168
+ ?>
169
+
170
  <?php if ( ! $this->conf( Base::O_GUEST ) ) : ?>
171
  <br /><font class="litespeed-warning litespeed-left10">
172
  ⚠️ <?php echo __( 'Notice', 'litespeed-cache' ); ?>: <?php echo sprintf( __( 'This option only works when turning %s on.', 'litespeed-cache' ), '<code>' . Lang::title( Base::O_GUEST ) . '</code>' ); ?>
tpl/general/settings_inc.guest.tpl.php CHANGED
@@ -15,22 +15,6 @@ defined( 'WPINC' ) || exit;
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 ) ) {
21
- $typeList[] = 'UCSS';
22
- }
23
- if ( $this->conf( Base::O_GUEST ) && ! $this->conf( Base::O_OPTM_CSS_ASYNC ) ) {
24
- $typeList[] = 'CCSS';
25
- }
26
- if ( ! empty( $typeList ) ) {
27
- $theType = implode( '/', $typeList );
28
- echo '<br />';
29
- echo '<font class="litespeed-info">';
30
- echo '⚠️ ' . sprintf( __( 'Your %1s quota on %2s will still be in use.', 'litespeed-cache' ), $theType, 'QUIC.cloud' );
31
- echo '</font>';
32
- }
33
- ?>
34
  </div>
35
  </td>
36
  </tr>
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
  </div>
19
  </td>
20
  </tr>
tpl/page_optm/settings_css.tpl.php CHANGED
@@ -151,19 +151,6 @@ $ucss_queue = $this->load_queue( 'ucss' );
151
  </td>
152
  </tr>
153
 
154
- <tr>
155
- <th>
156
- <?php $id = Base::O_OPTM_CSS_HTTP2; ?>
157
- <?php $this->title( $id ); ?>
158
- </th>
159
- <td>
160
- <?php $this->build_switch( $id ); ?>
161
- <div class="litespeed-desc">
162
- <?php echo __( 'Pre-send internal CSS files to the browser before they are requested. (Requires the HTTP/2 protocol)', 'litespeed-cache' ); ?>
163
- </div>
164
- </td>
165
- </tr>
166
-
167
  <tr>
168
  <th>
169
  <?php $id = Base::O_OPTM_CSS_ASYNC; ?>
151
  </td>
152
  </tr>
153
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  <tr>
155
  <th>
156
  <?php $id = Base::O_OPTM_CSS_ASYNC; ?>
tpl/page_optm/settings_js.tpl.php CHANGED
@@ -54,19 +54,6 @@ defined( 'WPINC' ) || exit;
54
  </td>
55
  </tr>
56
 
57
- <tr>
58
- <th>
59
- <?php $id = Base::O_OPTM_JS_HTTP2; ?>
60
- <?php $this->title( $id ); ?>
61
- </th>
62
- <td>
63
- <?php $this->build_switch( $id ); ?>
64
- <div class="litespeed-desc">
65
- <?php echo __( 'Pre-send internal JS files to the browser before they are requested. (Requires the HTTP/2 protocol)', 'litespeed-cache' ); ?>
66
- </div>
67
- </td>
68
- </tr>
69
-
70
  <tr>
71
  <th>
72
  <?php $id = Base::O_OPTM_JS_DEFER; ?>
54
  </td>
55
  </tr>
56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  <tr>
58
  <th>
59
  <?php $id = Base::O_OPTM_JS_DEFER; ?>
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.4.2',
8
  '4.4.1',
9
  '4.3',
4
 
5
  // Existing public version list
6
  $v_list = array(
7
+ '4.4.3',
8
  '4.4.2',
9
  '4.4.1',
10
  '4.3',
tpl/toolbox/edit_htaccess.tpl.php CHANGED
@@ -2,8 +2,6 @@
2
  namespace LiteSpeed;
3
  defined( 'WPINC' ) || exit;
4
 
5
- $readonly = Htaccess::cls()->writable() ? '' : 'readonly';
6
-
7
  $content = null;
8
  try {
9
  $content = Htaccess::cls()->htaccess_read();
@@ -35,75 +33,56 @@ if ( defined( 'LITESPEED_ON' ) ) {
35
  ?>
36
 
37
  <h3 class="litespeed-title">
38
- <?php echo __('LiteSpeed Cache Edit .htaccess', 'litespeed-cache'); ?>
39
  <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/toolbox/#edit-htaccess-tab' ); ?>
40
  </h3>
41
 
42
- <div class="litespeed-callout notice notice-error inline">
43
- <h4>🚨 <?php echo __('This page is meant for advanced users.', 'litespeed-cache'); ?></h4>
44
- <p>
45
- <?php echo __('Any changes made to the .htaccess file may break the site.', 'litespeed-cache'); ?>
46
- <?php echo __('Please consult the host/server admin before making any changes.', 'litespeed-cache'); ?>
47
- </p>
48
- </div>
49
-
50
- <?php $this->form_action( $this->_is_network_admin ? Router::ACTION_SAVE_SETTINGS_NETWORK : false ); ?>
51
-
52
  <h3 class="litespeed-title-short">
53
- <?php echo __( '.htaccess Path Settings', 'litespeed-cache' ); ?>
54
  </h3>
55
 
56
  <table class="wp-list-table striped litespeed-table"><tbody>
57
  <tr>
58
  <th>
59
- <?php $id = Base::O_MISC_HTACCESS_FRONT; ?>
60
- <?php $this->title( $id ); ?>
61
  </th>
62
  <td>
63
- <?php $this->build_input( $id, 'litespeed-input-long' ); ?>
64
  <div class="litespeed-desc">
65
- <?php echo __( 'Specify the frontend .htaccess path.', 'litespeed-cache' ); ?>
66
- <?php echo __( 'Leave empty to auto detect', 'litespeed-cache' ); ?>: <code><?php echo Htaccess::get_frontend_htaccess( true ); ?></code>
67
- <?php $this->_validate_htaccess_path( $id ); ?>
 
 
 
68
  </div>
69
  </td>
70
  </tr>
71
 
72
  <tr>
73
  <th>
74
- <?php $id = Base::O_MISC_HTACCESS_BACK; ?>
75
- <?php $this->title( $id ); ?>
76
  </th>
77
  <td>
78
- <?php $this->build_input( $id, 'litespeed-input-long' ); ?>
79
  <div class="litespeed-desc">
80
- <?php echo __( 'Specify the backend .htaccess path.', 'litespeed-cache' ); ?>
81
- <?php echo __( 'Leave empty to auto detect', 'litespeed-cache' ); ?>: <code><?php echo Htaccess::get_backend_htaccess( true ); ?></code>
82
- <?php $this->_validate_htaccess_path( $id ); ?>
 
 
 
83
  </div>
84
  </td>
85
  </tr>
86
  </tbody></table>
87
 
88
- <?php $this->form_end( $this->_is_network_admin ); ?>
89
-
90
- <?php if ( defined( 'DISALLOW_FILE_EDIT' ) && DISALLOW_FILE_EDIT ) : ?>
91
- <div class="litespeed-h3"><?php echo __('File editing is disabled in configuration.', 'litespeed-cache'); ?></div>
92
-
93
- <?php elseif( $content !== null ) : ?>
94
-
95
- <?php $this->form_action( Router::ACTION_SAVE_HTACCESS ); ?>
96
 
97
  <h3 class="litespeed-title"><?php echo sprintf(__('Current %s Contents', 'litespeed-cache'), '.htaccess'); ?></h3>
98
 
99
- <p><span class="attention"><?php echo sprintf(__('DO NOT EDIT ANYTHING WITHIN %s', 'litespeed-cache'), '<code>' . Htaccess::LS_MODULE_DONOTEDIT . '</code>' ); ?></span></p>
100
-
101
  <h4><?php echo $htaccess_path; ?></h4>
102
 
103
- <textarea name="<?php echo Htaccess::EDITOR_TEXTAREA_NAME; ?>" wrap="off" rows="50" class="large-text"
104
- <?php echo $readonly; ?>
105
- ><?php echo esc_textarea($content); ?></textarea>
106
- <p><button type="submit" class="button button-primary"><?php echo __('Save .htaccess', 'litespeed-cache'); ?></button></p>
107
- </form>
108
 
109
  <?php endif; ?>
2
  namespace LiteSpeed;
3
  defined( 'WPINC' ) || exit;
4
 
 
 
5
  $content = null;
6
  try {
7
  $content = Htaccess::cls()->htaccess_read();
33
  ?>
34
 
35
  <h3 class="litespeed-title">
36
+ <?php echo __('LiteSpeed Cache View .htaccess', 'litespeed-cache'); ?>
37
  <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/toolbox/#edit-htaccess-tab' ); ?>
38
  </h3>
39
 
 
 
 
 
 
 
 
 
 
 
40
  <h3 class="litespeed-title-short">
41
+ <?php echo __( '.htaccess Path', 'litespeed-cache' ); ?>
42
  </h3>
43
 
44
  <table class="wp-list-table striped litespeed-table"><tbody>
45
  <tr>
46
  <th>
47
+ <?php echo __( 'Frontend .htaccess Path', 'litespeed-cache' ); ?>
 
48
  </th>
49
  <td>
50
+ <code><?php echo $htaccess_path; ?></code>
51
  <div class="litespeed-desc">
52
+ <?php echo __( 'Default path is', 'litespeed-cache' ); ?>: <code><?php echo Htaccess::get_frontend_htaccess( true ); ?></code>
53
+ <br /><font class="litespeed-success">
54
+ <?php echo __( 'API', 'litespeed-cache' ); ?>:
55
+ <?php echo sprintf( __( 'PHP Constant %s is supported.', 'litespeed-cache' ), '<code>LITESPEED_CFG_HTACCESS</code>' ); ?>
56
+ <?php echo sprintf( __( 'You can use this code %1$s in %2$s to specify the htaccess file path.', 'litespeed-cache' ), '<code>defined("LITESPEED_CFG_HTACCESS") || define("LITESPEED_CFG_HTACCESS", "your path on server");</code>', '<code>wp-config.php</code>' ); ?>
57
+ </font>
58
  </div>
59
  </td>
60
  </tr>
61
 
62
  <tr>
63
  <th>
64
+ <?php echo __( 'Backend .htaccess Path', 'litespeed-cache' ); ?>
 
65
  </th>
66
  <td>
67
+ <?php echo Htaccess::get_backend_htaccess(); ?>
68
  <div class="litespeed-desc">
69
+ <?php echo __( 'Default path is', 'litespeed-cache' ); ?>: <code><?php echo Htaccess::get_backend_htaccess( true ); ?></code>
70
+ <br /><font class="litespeed-success">
71
+ <?php echo __( 'API', 'litespeed-cache' ); ?>:
72
+ <?php echo sprintf( __( 'PHP Constant %s is supported.', 'litespeed-cache' ), '<code>LITESPEED_CFG_HTACCESS_BACKEND</code>' ); ?>
73
+ <?php echo sprintf( __( 'You can use this code %1$s in %2$s to specify the htaccess file path.', 'litespeed-cache' ), '<code>defined("LITESPEED_CFG_HTACCESS_BACKEND") || define("LITESPEED_CFG_HTACCESS_BACKEND", "your path on server");</code>', '<code>wp-config.php</code>' ); ?>
74
+ </font>
75
  </div>
76
  </td>
77
  </tr>
78
  </tbody></table>
79
 
80
+ <?php if( $content !== null ) : ?>
 
 
 
 
 
 
 
81
 
82
  <h3 class="litespeed-title"><?php echo sprintf(__('Current %s Contents', 'litespeed-cache'), '.htaccess'); ?></h3>
83
 
 
 
84
  <h4><?php echo $htaccess_path; ?></h4>
85
 
86
+ <textarea readonly wrap="off" rows="50" class="large-text"><?php echo esc_textarea($content); ?></textarea>
 
 
 
 
87
 
88
  <?php endif; ?>
tpl/toolbox/entry.tpl.php CHANGED
@@ -11,7 +11,7 @@ if ( ! $this->_is_network_admin ) {
11
  }
12
 
13
  if ( ! $this->_is_multisite || $this->_is_network_admin ) {
14
- $menu_list[ 'edit_htaccess' ] = __( 'Edit .htaccess', 'litespeed-cache' );
15
  }
16
 
17
  if ( ! $this->_is_network_admin ) {
11
  }
12
 
13
  if ( ! $this->_is_multisite || $this->_is_network_admin ) {
14
+ $menu_list[ 'edit_htaccess' ] = __( 'View .htaccess', 'litespeed-cache' );
15
  }
16
 
17
  if ( ! $this->_is_network_admin ) {