Changeset 2954001
- Timestamp:
- 08/15/2023 06:49:53 PM (2 years ago)
- Location:
- litespeed-cache
- Files:
-
- 330 added
- 14 edited
-
tags/5.6 (added)
-
tags/5.6/LICENSE (added)
-
tags/5.6/assets (added)
-
tags/5.6/assets/css (added)
-
tags/5.6/assets/css/fonts (added)
-
tags/5.6/assets/css/fonts/litespeedfont.eot (added)
-
tags/5.6/assets/css/fonts/litespeedfont.svg (added)
-
tags/5.6/assets/css/fonts/litespeedfont.ttf (added)
-
tags/5.6/assets/css/fonts/litespeedfont.woff (added)
-
tags/5.6/assets/css/iziModal.min.css (added)
-
tags/5.6/assets/css/litespeed-legacy.css (added)
-
tags/5.6/assets/css/litespeed.css (added)
-
tags/5.6/assets/img (added)
-
tags/5.6/assets/img/Litespeed.icon.svg (added)
-
tags/5.6/assets/img/iconlscwp.svg (added)
-
tags/5.6/assets/img/icons (added)
-
tags/5.6/assets/img/icons/all.svg (added)
-
tags/5.6/assets/img/icons/all_transients.svg (added)
-
tags/5.6/assets/img/icons/auto_draft.svg (added)
-
tags/5.6/assets/img/icons/cross_icon.svg (added)
-
tags/5.6/assets/img/icons/db.svg (added)
-
tags/5.6/assets/img/icons/empty-cache.svg (added)
-
tags/5.6/assets/img/icons/expired_transient.svg (added)
-
tags/5.6/assets/img/icons/img_optm.svg (added)
-
tags/5.6/assets/img/icons/img_optm_disabled.svg (added)
-
tags/5.6/assets/img/icons/img_webp.svg (added)
-
tags/5.6/assets/img/icons/img_webp_disabled.svg (added)
-
tags/5.6/assets/img/icons/optimize_tables.svg (added)
-
tags/5.6/assets/img/icons/purge-403.svg (added)
-
tags/5.6/assets/img/icons/purge-404.svg (added)
-
tags/5.6/assets/img/icons/purge-500.svg (added)
-
tags/5.6/assets/img/icons/purge-all.svg (added)
-
tags/5.6/assets/img/icons/purge-cssjs.svg (added)
-
tags/5.6/assets/img/icons/purge-front.svg (added)
-
tags/5.6/assets/img/icons/purge-object.svg (added)
-
tags/5.6/assets/img/icons/purge-opcache.svg (added)
-
tags/5.6/assets/img/icons/purge-pages.svg (added)
-
tags/5.6/assets/img/icons/revision.svg (added)
-
tags/5.6/assets/img/icons/spam_comment.svg (added)
-
tags/5.6/assets/img/icons/success_icon.svg (added)
-
tags/5.6/assets/img/icons/trackback-pingback.svg (added)
-
tags/5.6/assets/img/icons/trash_comment.svg (added)
-
tags/5.6/assets/img/icons/trash_post.svg (added)
-
tags/5.6/assets/img/lscwp-logo_90x90.png (added)
-
tags/5.6/assets/img/lscwp_blue_font-icon_22px.svg (added)
-
tags/5.6/assets/img/lscwp_font-icon_32px.svg (added)
-
tags/5.6/assets/img/lscwp_gray-yellow_font-icon_22px.svg (added)
-
tags/5.6/assets/img/lscwp_gray_font-icon_22px.svg (added)
-
tags/5.6/assets/img/lscwp_grayscale_font-icon_22px.svg (added)
-
tags/5.6/assets/img/quic-cloud-icon-16x16.svg (added)
-
tags/5.6/assets/img/slack-logo.png (added)
-
tags/5.6/assets/js (added)
-
tags/5.6/assets/js/babel.min.js (added)
-
tags/5.6/assets/js/component.cdn.js (added)
-
tags/5.6/assets/js/component.crawler.js (added)
-
tags/5.6/assets/js/css_async.js (added)
-
tags/5.6/assets/js/css_async.min.js (added)
-
tags/5.6/assets/js/guest.docref.js (added)
-
tags/5.6/assets/js/guest.docref.min.js (added)
-
tags/5.6/assets/js/guest.js (added)
-
tags/5.6/assets/js/guest.min.js (added)
-
tags/5.6/assets/js/instant_click.min.js (added)
-
tags/5.6/assets/js/instant_click.ori.js (added)
-
tags/5.6/assets/js/iziModal.min.js (added)
-
tags/5.6/assets/js/js_delay.js (added)
-
tags/5.6/assets/js/js_delay.min.js (added)
-
tags/5.6/assets/js/lazyload.init.js (added)
-
tags/5.6/assets/js/lazyload.lib.js (added)
-
tags/5.6/assets/js/lazyload.min.js (added)
-
tags/5.6/assets/js/litespeed-cache-admin.js (added)
-
tags/5.6/assets/js/react.min.js (added)
-
tags/5.6/assets/js/webfontloader.js (added)
-
tags/5.6/assets/js/webfontloader.min.js (added)
-
tags/5.6/autoload.php (added)
-
tags/5.6/cli (added)
-
tags/5.6/cli/debug.cls.php (added)
-
tags/5.6/cli/image.cls.php (added)
-
tags/5.6/cli/online.cls.php (added)
-
tags/5.6/cli/option.cls.php (added)
-
tags/5.6/cli/presets.cls.php (added)
-
tags/5.6/cli/purge.cls.php (added)
-
tags/5.6/data (added)
-
tags/5.6/data/.htaccess (added)
-
tags/5.6/data/const.default.ini (added)
-
tags/5.6/data/const.network_default.ini (added)
-
tags/5.6/data/css_excludes.txt (added)
-
tags/5.6/data/esi.nonce.txt (added)
-
tags/5.6/data/esi.nonces.txt (added)
-
tags/5.6/data/js_defer_excludes.txt (added)
-
tags/5.6/data/js_excludes.txt (added)
-
tags/5.6/data/optm_uri_exc.txt (added)
-
tags/5.6/data/preset (added)
-
tags/5.6/data/preset/advanced.data (added)
-
tags/5.6/data/preset/aggressive.data (added)
-
tags/5.6/data/preset/basic.data (added)
-
tags/5.6/data/preset/essentials.data (added)
-
tags/5.6/data/preset/extreme.data (added)
-
tags/5.6/data/ucss_whitelist.txt (added)
-
tags/5.6/guest.vary.php (added)
-
tags/5.6/inc (added)
-
tags/5.6/inc/object.lib.php (added)
-
tags/5.6/lang (added)
-
tags/5.6/lang/litespeed-cache.pot (added)
-
tags/5.6/lib (added)
-
tags/5.6/lib/css-min (added)
-
tags/5.6/lib/css-min/colors.cls.php (added)
-
tags/5.6/lib/css-min/minifier.cls.php (added)
-
tags/5.6/lib/css-min/urirewriter.cls.php (added)
-
tags/5.6/lib/css-min/utils.cls.php (added)
-
tags/5.6/lib/guest.cls.php (added)
-
tags/5.6/lib/html-min.cls.php (added)
-
tags/5.6/lib/jsmin.cls.php (added)
-
tags/5.6/lib/jsmin_data (added)
-
tags/5.6/lib/jsmin_data/keywords_after.txt (added)
-
tags/5.6/lib/jsmin_data/keywords_before.txt (added)
-
tags/5.6/lib/jsmin_data/keywords_reserved.txt (added)
-
tags/5.6/lib/jsmin_data/operators.txt (added)
-
tags/5.6/lib/jsmin_data/operators_after.txt (added)
-
tags/5.6/lib/jsmin_data/operators_before.txt (added)
-
tags/5.6/lib/object-cache.php (added)
-
tags/5.6/lib/php-compatibility.func.php (added)
-
tags/5.6/litespeed-cache.php (added)
-
tags/5.6/qc-ping.txt (added)
-
tags/5.6/readme.txt (added)
-
tags/5.6/src (added)
-
tags/5.6/src/activation.cls.php (added)
-
tags/5.6/src/admin-display.cls.php (added)
-
tags/5.6/src/admin-settings.cls.php (added)
-
tags/5.6/src/admin.cls.php (added)
-
tags/5.6/src/api.cls.php (added)
-
tags/5.6/src/avatar.cls.php (added)
-
tags/5.6/src/base.cls.php (added)
-
tags/5.6/src/cdn (added)
-
tags/5.6/src/cdn-setup.cls.php (added)
-
tags/5.6/src/cdn.cls.php (added)
-
tags/5.6/src/cdn/cloudflare.cls.php (added)
-
tags/5.6/src/cdn/quic.cls.php (added)
-
tags/5.6/src/cloud.cls.php (added)
-
tags/5.6/src/conf.cls.php (added)
-
tags/5.6/src/control.cls.php (added)
-
tags/5.6/src/core.cls.php (added)
-
tags/5.6/src/crawler-map.cls.php (added)
-
tags/5.6/src/crawler.cls.php (added)
-
tags/5.6/src/css.cls.php (added)
-
tags/5.6/src/data.cls.php (added)
-
tags/5.6/src/data.upgrade.func.php (added)
-
tags/5.6/src/data_structure (added)
-
tags/5.6/src/data_structure/avatar.sql (added)
-
tags/5.6/src/data_structure/crawler.sql (added)
-
tags/5.6/src/data_structure/crawler_blacklist.sql (added)
-
tags/5.6/src/data_structure/img_optm.sql (added)
-
tags/5.6/src/data_structure/img_optming.sql (added)
-
tags/5.6/src/data_structure/url.sql (added)
-
tags/5.6/src/data_structure/url_file.sql (added)
-
tags/5.6/src/db-optm.cls.php (added)
-
tags/5.6/src/debug2.cls.php (added)
-
tags/5.6/src/doc.cls.php (added)
-
tags/5.6/src/error.cls.php (added)
-
tags/5.6/src/esi.cls.php (added)
-
tags/5.6/src/file.cls.php (added)
-
tags/5.6/src/gui.cls.php (added)
-
tags/5.6/src/health.cls.php (added)
-
tags/5.6/src/htaccess.cls.php (added)
-
tags/5.6/src/img-optm.cls.php (added)
-
tags/5.6/src/import.cls.php (added)
-
tags/5.6/src/instance.cls.php (added)
-
tags/5.6/src/lang.cls.php (added)
-
tags/5.6/src/localization.cls.php (added)
-
tags/5.6/src/media.cls.php (added)
-
tags/5.6/src/metabox.cls.php (added)
-
tags/5.6/src/object-cache.cls.php (added)
-
tags/5.6/src/object.lib.php (added)
-
tags/5.6/src/optimize.cls.php (added)
-
tags/5.6/src/optimizer.cls.php (added)
-
tags/5.6/src/placeholder.cls.php (added)
-
tags/5.6/src/preset.cls.php (added)
-
tags/5.6/src/purge.cls.php (added)
-
tags/5.6/src/report.cls.php (added)
-
tags/5.6/src/rest.cls.php (added)
-
tags/5.6/src/root.cls.php (added)
-
tags/5.6/src/router.cls.php (added)
-
tags/5.6/src/str.cls.php (added)
-
tags/5.6/src/tag.cls.php (added)
-
tags/5.6/src/task.cls.php (added)
-
tags/5.6/src/tool.cls.php (added)
-
tags/5.6/src/ucss.cls.php (added)
-
tags/5.6/src/utility.cls.php (added)
-
tags/5.6/src/vary.cls.php (added)
-
tags/5.6/src/vpi.cls.php (added)
-
tags/5.6/thirdparty (added)
-
tags/5.6/thirdparty/aelia-currencyswitcher.cls.php (added)
-
tags/5.6/thirdparty/amp.cls.php (added)
-
tags/5.6/thirdparty/autoptimize.cls.php (added)
-
tags/5.6/thirdparty/avada.cls.php (added)
-
tags/5.6/thirdparty/bbpress.cls.php (added)
-
tags/5.6/thirdparty/beaver-builder.cls.php (added)
-
tags/5.6/thirdparty/caldera-forms.cls.php (added)
-
tags/5.6/thirdparty/divi-theme-builder.cls.php (added)
-
tags/5.6/thirdparty/elementor.cls.php (added)
-
tags/5.6/thirdparty/entry.inc.php (added)
-
tags/5.6/thirdparty/facetwp.cls.php (added)
-
tags/5.6/thirdparty/gravity-forms.cls.php (added)
-
tags/5.6/thirdparty/litespeed-check.cls.php (added)
-
tags/5.6/thirdparty/nextgengallery.cls.php (added)
-
tags/5.6/thirdparty/perfmatters.cls.php (added)
-
tags/5.6/thirdparty/theme-my-login.cls.php (added)
-
tags/5.6/thirdparty/user-switching.cls.php (added)
-
tags/5.6/thirdparty/wc-pdf-product-vouchers.cls.php (added)
-
tags/5.6/thirdparty/wcml.cls.php (added)
-
tags/5.6/thirdparty/woo-paypal.cls.php (added)
-
tags/5.6/thirdparty/woocommerce.cls.php (added)
-
tags/5.6/thirdparty/woocommerce.content.tpl.php (added)
-
tags/5.6/thirdparty/woocommerce.tab.tpl.php (added)
-
tags/5.6/thirdparty/wp-polls.cls.php (added)
-
tags/5.6/thirdparty/wp-postratings.cls.php (added)
-
tags/5.6/thirdparty/wpdiscuz.cls.php (added)
-
tags/5.6/thirdparty/wplister.cls.php (added)
-
tags/5.6/thirdparty/wpml.cls.php (added)
-
tags/5.6/thirdparty/wptouch.cls.php (added)
-
tags/5.6/thirdparty/yith-wishlist.cls.php (added)
-
tags/5.6/tpl (added)
-
tags/5.6/tpl/banner (added)
-
tags/5.6/tpl/banner/ajax.php (added)
-
tags/5.6/tpl/banner/cloud_news.tpl.php (added)
-
tags/5.6/tpl/banner/cloud_promo.tpl.php (added)
-
tags/5.6/tpl/banner/new_version.php (added)
-
tags/5.6/tpl/banner/new_version_dev.tpl.php (added)
-
tags/5.6/tpl/banner/score.php (added)
-
tags/5.6/tpl/banner/slack.php (added)
-
tags/5.6/tpl/cache (added)
-
tags/5.6/tpl/cache/entry.tpl.php (added)
-
tags/5.6/tpl/cache/entry_network.tpl.php (added)
-
tags/5.6/tpl/cache/more_settings_tip.tpl.php (added)
-
tags/5.6/tpl/cache/network_settings-advanced.tpl.php (added)
-
tags/5.6/tpl/cache/network_settings-browser.tpl.php (added)
-
tags/5.6/tpl/cache/network_settings-cache.tpl.php (added)
-
tags/5.6/tpl/cache/network_settings-excludes.tpl.php (added)
-
tags/5.6/tpl/cache/network_settings-object.tpl.php (added)
-
tags/5.6/tpl/cache/network_settings-purge.tpl.php (added)
-
tags/5.6/tpl/cache/settings-advanced.tpl.php (added)
-
tags/5.6/tpl/cache/settings-browser.tpl.php (added)
-
tags/5.6/tpl/cache/settings-cache.tpl.php (added)
-
tags/5.6/tpl/cache/settings-esi.tpl.php (added)
-
tags/5.6/tpl/cache/settings-excludes.tpl.php (added)
-
tags/5.6/tpl/cache/settings-object.tpl.php (added)
-
tags/5.6/tpl/cache/settings-purge.tpl.php (added)
-
tags/5.6/tpl/cache/settings-ttl.tpl.php (added)
-
tags/5.6/tpl/cache/settings_inc.browser.tpl.php (added)
-
tags/5.6/tpl/cache/settings_inc.cache_dropquery.tpl.php (added)
-
tags/5.6/tpl/cache/settings_inc.cache_favicon.tpl.php (added)
-
tags/5.6/tpl/cache/settings_inc.cache_mobile.tpl.php (added)
-
tags/5.6/tpl/cache/settings_inc.cache_resources.tpl.php (added)
-
tags/5.6/tpl/cache/settings_inc.exclude_cookies.tpl.php (added)
-
tags/5.6/tpl/cache/settings_inc.exclude_useragent.tpl.php (added)
-
tags/5.6/tpl/cache/settings_inc.login_cookie.tpl.php (added)
-
tags/5.6/tpl/cache/settings_inc.object.tpl.php (added)
-
tags/5.6/tpl/cache/settings_inc.purge_on_upgrade.tpl.php (added)
-
tags/5.6/tpl/cdn (added)
-
tags/5.6/tpl/cdn/auto_setup.tpl.php (added)
-
tags/5.6/tpl/cdn/entry.tpl.php (added)
-
tags/5.6/tpl/cdn/manage.tpl.php (added)
-
tags/5.6/tpl/cdn/settings.tpl.php (added)
-
tags/5.6/tpl/crawler (added)
-
tags/5.6/tpl/crawler/blacklist.tpl.php (added)
-
tags/5.6/tpl/crawler/entry.tpl.php (added)
-
tags/5.6/tpl/crawler/map.tpl.php (added)
-
tags/5.6/tpl/crawler/settings-general.tpl.php (added)
-
tags/5.6/tpl/crawler/settings-simulation.tpl.php (added)
-
tags/5.6/tpl/crawler/settings-sitemap.tpl.php (added)
-
tags/5.6/tpl/crawler/summary.tpl.php (added)
-
tags/5.6/tpl/dash (added)
-
tags/5.6/tpl/dash/dashboard.tpl.php (added)
-
tags/5.6/tpl/dash/entry.tpl.php (added)
-
tags/5.6/tpl/dash/network_dash.tpl.php (added)
-
tags/5.6/tpl/db_optm (added)
-
tags/5.6/tpl/db_optm/entry.tpl.php (added)
-
tags/5.6/tpl/db_optm/manage.tpl.php (added)
-
tags/5.6/tpl/db_optm/settings.tpl.php (added)
-
tags/5.6/tpl/esi.tpl.php (added)
-
tags/5.6/tpl/esi_widget_edit.php (added)
-
tags/5.6/tpl/general (added)
-
tags/5.6/tpl/general/entry.tpl.php (added)
-
tags/5.6/tpl/general/network_settings.tpl.php (added)
-
tags/5.6/tpl/general/settings.tpl.php (added)
-
tags/5.6/tpl/general/settings_inc.auto_upgrade.tpl.php (added)
-
tags/5.6/tpl/general/settings_inc.guest.tpl.php (added)
-
tags/5.6/tpl/general/settings_tuning.tpl.php (added)
-
tags/5.6/tpl/img_optm (added)
-
tags/5.6/tpl/img_optm/entry.tpl.php (added)
-
tags/5.6/tpl/img_optm/network_settings.tpl.php (added)
-
tags/5.6/tpl/img_optm/settings.media_webp.tpl.php (added)
-
tags/5.6/tpl/img_optm/settings.tpl.php (added)
-
tags/5.6/tpl/img_optm/summary.tpl.php (added)
-
tags/5.6/tpl/inc (added)
-
tags/5.6/tpl/inc/admin_footer.php (added)
-
tags/5.6/tpl/inc/api_key.php (added)
-
tags/5.6/tpl/inc/check_cache_disabled.php (added)
-
tags/5.6/tpl/inc/check_if_network_disable_all.php (added)
-
tags/5.6/tpl/inc/disabled_all.php (added)
-
tags/5.6/tpl/inc/in_upgrading.php (added)
-
tags/5.6/tpl/inc/metabox.php (added)
-
tags/5.6/tpl/inc/modal.footer.php (added)
-
tags/5.6/tpl/inc/modal.header.php (added)
-
tags/5.6/tpl/inc/show_display_installed.php (added)
-
tags/5.6/tpl/inc/show_error_cookie.php (added)
-
tags/5.6/tpl/inc/show_rule_conflict.php (added)
-
tags/5.6/tpl/page_optm (added)
-
tags/5.6/tpl/page_optm/entry.tpl.php (added)
-
tags/5.6/tpl/page_optm/settings_css.tpl.php (added)
-
tags/5.6/tpl/page_optm/settings_html.tpl.php (added)
-
tags/5.6/tpl/page_optm/settings_js.tpl.php (added)
-
tags/5.6/tpl/page_optm/settings_localization.tpl.php (added)
-
tags/5.6/tpl/page_optm/settings_media.tpl.php (added)
-
tags/5.6/tpl/page_optm/settings_media_exc.tpl.php (added)
-
tags/5.6/tpl/page_optm/settings_tuning.tpl.php (added)
-
tags/5.6/tpl/page_optm/settings_tuning_css.tpl.php (added)
-
tags/5.6/tpl/page_optm/settings_vpi.tpl.php (added)
-
tags/5.6/tpl/presets (added)
-
tags/5.6/tpl/presets/entry.tpl.php (added)
-
tags/5.6/tpl/presets/standard.tpl.php (added)
-
tags/5.6/tpl/toolbox (added)
-
tags/5.6/tpl/toolbox/beta_test.tpl.php (added)
-
tags/5.6/tpl/toolbox/edit_htaccess.tpl.php (added)
-
tags/5.6/tpl/toolbox/entry.tpl.php (added)
-
tags/5.6/tpl/toolbox/heartbeat.tpl.php (added)
-
tags/5.6/tpl/toolbox/import_export.tpl.php (added)
-
tags/5.6/tpl/toolbox/log_viewer.tpl.php (added)
-
tags/5.6/tpl/toolbox/purge.tpl.php (added)
-
tags/5.6/tpl/toolbox/report.tpl.php (added)
-
tags/5.6/tpl/toolbox/settings-debug.tpl.php (added)
-
trunk/assets/css/litespeed.css (modified) (24 diffs)
-
trunk/lang/litespeed-cache.pot (modified) (34 diffs)
-
trunk/litespeed-cache.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/src/base.cls.php (modified) (25 diffs)
-
trunk/src/core.cls.php (modified) (1 diff)
-
trunk/src/crawler-map.cls.php (modified) (1 diff)
-
trunk/src/lang.cls.php (modified) (5 diffs)
-
trunk/src/object-cache.cls.php (modified) (1 diff)
-
trunk/src/optimize.cls.php (modified) (48 diffs)
-
trunk/src/purge.cls.php (modified) (1 diff)
-
trunk/tpl/crawler/map.tpl.php (modified) (3 diffs)
-
trunk/tpl/page_optm/settings_tuning.tpl.php (modified) (1 diff)
-
trunk/tpl/toolbox/beta_test.tpl.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
litespeed-cache/trunk/assets/css/litespeed.css
r2928795 r2954001 1875 1875 } 1876 1876 1877 @media screen and (max-width: 1023px) and (min-width: 681px) {}1878 1879 1877 @media screen and (max-width: 680px) { 1880 1878 … … 2936 2934 } 2937 2935 2938 span[data-balloon-pos] {2936 .litespeed-wrap span[data-balloon-pos] { 2939 2937 border-bottom: 1px dashed; 2940 2938 } 2941 2939 2942 span[aria-label][data-balloon-pos] {2940 .litespeed-wrap span[aria-label][data-balloon-pos] { 2943 2941 cursor: default; 2944 2942 } … … 3556 3554 ======================================= */ 3557 3555 3558 :root{3556 .litespeed-wrap { 3559 3557 --balloon-color: rgba(16, 16, 16, 0.95); 3560 3558 --balloon-font-size: 12px; … … 3562 3560 } 3563 3561 3564 button[aria-label][data-balloon-pos] {3562 .litespeed-wrap button[aria-label][data-balloon-pos] { 3565 3563 overflow: visible; 3566 3564 } 3567 3565 3568 [aria-label][data-balloon-pos] {3566 .litespeed-wrap [aria-label][data-balloon-pos] { 3569 3567 position: relative; 3570 3568 cursor: pointer; 3571 3569 } 3572 3570 3573 [aria-label][data-balloon-pos]:after {3571 .litespeed-wrap [aria-label][data-balloon-pos]:after { 3574 3572 opacity: 0; 3575 3573 pointer-events: none; … … 3592 3590 } 3593 3591 3594 [aria-label][data-balloon-pos]:before {3592 .litespeed-wrap [aria-label][data-balloon-pos]:before { 3595 3593 width: 0; 3596 3594 height: 0; … … 3605 3603 } 3606 3604 3607 [aria-label][data-balloon-pos]:hover:before,3608 [aria-label][data-balloon-pos]:hover:after,3609 [aria-label][data-balloon-pos][data-balloon-visible]:before,3610 [aria-label][data-balloon-pos][data-balloon-visible]:after,3611 [aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before,3612 [aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after {3605 .litespeed-wrap [aria-label][data-balloon-pos]:hover:before, 3606 .litespeed-wrap [aria-label][data-balloon-pos]:hover:after, 3607 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-visible]:before, 3608 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-visible]:after, 3609 .litespeed-wrap [aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before, 3610 .litespeed-wrap [aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after { 3613 3611 opacity: 1; 3614 3612 pointer-events: none; 3615 3613 } 3616 3614 3617 [aria-label][data-balloon-pos].font-awesome:after {3615 .litespeed-wrap [aria-label][data-balloon-pos].font-awesome:after { 3618 3616 font-family: FontAwesome, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; 3619 3617 } 3620 3618 3621 [aria-label][data-balloon-pos][data-balloon-break]:after {3619 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-break]:after { 3622 3620 white-space: pre; 3623 3621 } 3624 3622 3625 [aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after {3623 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after { 3626 3624 white-space: pre-line; 3627 3625 word-break: break-word; 3628 3626 } 3629 3627 3630 [aria-label][data-balloon-pos][data-balloon-blunt]:before,3631 [aria-label][data-balloon-pos][data-balloon-blunt]:after {3628 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-blunt]:before, 3629 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-blunt]:after { 3632 3630 transition: none; 3633 3631 } 3634 3632 3635 [aria-label][data-balloon-pos][data-balloon-pos="up"]:after {3633 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up"]:after { 3636 3634 bottom: 100%; 3637 3635 left: 50%; … … 3641 3639 } 3642 3640 3643 [aria-label][data-balloon-pos][data-balloon-pos="up"]:before {3641 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up"]:before { 3644 3642 bottom: 100%; 3645 3643 left: 50%; … … 3648 3646 } 3649 3647 3650 [aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:after,3651 [aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:after {3648 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:after, 3649 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:after { 3652 3650 transform: translate(-50%, 0); 3653 3651 } 3654 3652 3655 [aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:before,3656 [aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:before {3653 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:before, 3654 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:before { 3657 3655 transform: translate(-50%, 0); 3658 3656 } 3659 3657 3660 [aria-label][data-balloon-pos][data-balloon-pos="up-left"]:after {3658 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up-left"]:after { 3661 3659 bottom: 100%; 3662 3660 left: 0; … … 3666 3664 } 3667 3665 3668 [aria-label][data-balloon-pos][data-balloon-pos="up-left"]:before {3666 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up-left"]:before { 3669 3667 bottom: 100%; 3670 3668 left: 5px; … … 3673 3671 } 3674 3672 3675 [aria-label][data-balloon-pos][data-balloon-pos="up-left"]:hover:after,3676 [aria-label][data-balloon-pos][data-balloon-pos="up-left"][data-balloon-visible]:after {3673 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up-left"]:hover:after, 3674 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up-left"][data-balloon-visible]:after { 3677 3675 transform: translate(0, 0); 3678 3676 } 3679 3677 3680 [aria-label][data-balloon-pos][data-balloon-pos="up-left"]:hover:before,3681 [aria-label][data-balloon-pos][data-balloon-pos="up-left"][data-balloon-visible]:before {3678 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up-left"]:hover:before, 3679 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up-left"][data-balloon-visible]:before { 3682 3680 transform: translate(0, 0); 3683 3681 } 3684 3682 3685 [aria-label][data-balloon-pos][data-balloon-pos="up-right"]:after {3683 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up-right"]:after { 3686 3684 bottom: 100%; 3687 3685 right: 0; … … 3691 3689 } 3692 3690 3693 [aria-label][data-balloon-pos][data-balloon-pos="up-right"]:before {3691 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up-right"]:before { 3694 3692 bottom: 100%; 3695 3693 right: 5px; … … 3698 3696 } 3699 3697 3700 [aria-label][data-balloon-pos][data-balloon-pos="up-right"]:hover:after,3701 [aria-label][data-balloon-pos][data-balloon-pos="up-right"][data-balloon-visible]:after {3698 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up-right"]:hover:after, 3699 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up-right"][data-balloon-visible]:after { 3702 3700 transform: translate(0, 0); 3703 3701 } 3704 3702 3705 [aria-label][data-balloon-pos][data-balloon-pos="up-right"]:hover:before,3706 [aria-label][data-balloon-pos][data-balloon-pos="up-right"][data-balloon-visible]:before {3703 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up-right"]:hover:before, 3704 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="up-right"][data-balloon-visible]:before { 3707 3705 transform: translate(0, 0); 3708 3706 } 3709 3707 3710 [aria-label][data-balloon-pos][data-balloon-pos="down"]:after {3708 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down"]:after { 3711 3709 left: 50%; 3712 3710 margin-top: 10px; … … 3715 3713 } 3716 3714 3717 [aria-label][data-balloon-pos][data-balloon-pos="down"]:before {3715 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down"]:before { 3718 3716 width: 0; 3719 3717 height: 0; … … 3725 3723 } 3726 3724 3727 [aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:after,3728 [aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:after {3725 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:after, 3726 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:after { 3729 3727 transform: translate(-50%, 0); 3730 3728 } 3731 3729 3732 [aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:before,3733 [aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:before {3730 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:before, 3731 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:before { 3734 3732 transform: translate(-50%, 0); 3735 3733 } 3736 3734 3737 [aria-label][data-balloon-pos][data-balloon-pos="down-left"]:after {3735 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down-left"]:after { 3738 3736 left: 0; 3739 3737 margin-top: 10px; … … 3742 3740 } 3743 3741 3744 [aria-label][data-balloon-pos][data-balloon-pos="down-left"]:before {3742 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down-left"]:before { 3745 3743 width: 0; 3746 3744 height: 0; … … 3752 3750 } 3753 3751 3754 [aria-label][data-balloon-pos][data-balloon-pos="down-left"]:hover:after,3755 [aria-label][data-balloon-pos][data-balloon-pos="down-left"][data-balloon-visible]:after {3752 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down-left"]:hover:after, 3753 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down-left"][data-balloon-visible]:after { 3756 3754 transform: translate(0, 0); 3757 3755 } 3758 3756 3759 [aria-label][data-balloon-pos][data-balloon-pos="down-left"]:hover:before,3760 [aria-label][data-balloon-pos][data-balloon-pos="down-left"][data-balloon-visible]:before {3757 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down-left"]:hover:before, 3758 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down-left"][data-balloon-visible]:before { 3761 3759 transform: translate(0, 0); 3762 3760 } 3763 3761 3764 [aria-label][data-balloon-pos][data-balloon-pos="down-right"]:after {3762 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down-right"]:after { 3765 3763 right: 0; 3766 3764 margin-top: 10px; … … 3769 3767 } 3770 3768 3771 [aria-label][data-balloon-pos][data-balloon-pos="down-right"]:before {3769 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down-right"]:before { 3772 3770 width: 0; 3773 3771 height: 0; … … 3779 3777 } 3780 3778 3781 [aria-label][data-balloon-pos][data-balloon-pos="down-right"]:hover:after,3782 [aria-label][data-balloon-pos][data-balloon-pos="down-right"][data-balloon-visible]:after {3779 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down-right"]:hover:after, 3780 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down-right"][data-balloon-visible]:after { 3783 3781 transform: translate(0, 0); 3784 3782 } 3785 3783 3786 [aria-label][data-balloon-pos][data-balloon-pos="down-right"]:hover:before,3787 [aria-label][data-balloon-pos][data-balloon-pos="down-right"][data-balloon-visible]:before {3784 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down-right"]:hover:before, 3785 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="down-right"][data-balloon-visible]:before { 3788 3786 transform: translate(0, 0); 3789 3787 } 3790 3788 3791 [aria-label][data-balloon-pos][data-balloon-pos="left"]:after {3789 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="left"]:after { 3792 3790 margin-right: 10px; 3793 3791 right: 100%; … … 3796 3794 } 3797 3795 3798 [aria-label][data-balloon-pos][data-balloon-pos="left"]:before {3796 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="left"]:before { 3799 3797 width: 0; 3800 3798 height: 0; … … 3806 3804 } 3807 3805 3808 [aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:after,3809 [aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:after {3806 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:after, 3807 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:after { 3810 3808 transform: translate(0, -50%); 3811 3809 } 3812 3810 3813 [aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:before,3814 [aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:before {3811 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:before, 3812 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:before { 3815 3813 transform: translate(0, -50%); 3816 3814 } 3817 3815 3818 [aria-label][data-balloon-pos][data-balloon-pos="right"]:after {3816 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="right"]:after { 3819 3817 left: 100%; 3820 3818 margin-left: 10px; … … 3823 3821 } 3824 3822 3825 [aria-label][data-balloon-pos][data-balloon-pos="right"]:before {3823 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="right"]:before { 3826 3824 width: 0; 3827 3825 height: 0; … … 3833 3831 } 3834 3832 3835 [aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:after,3836 [aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:after {3833 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:after, 3834 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:after { 3837 3835 transform: translate(0, -50%); 3838 3836 } 3839 3837 3840 [aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:before,3841 [aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:before {3838 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:before, 3839 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:before { 3842 3840 transform: translate(0, -50%); 3843 3841 } 3844 3842 3845 [aria-label][data-balloon-pos][data-balloon-length="small"]:after {3843 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-length="small"]:after { 3846 3844 white-space: normal; 3847 3845 width: 80px; 3848 3846 } 3849 3847 3850 [aria-label][data-balloon-pos][data-balloon-length="medium"]:after {3848 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-length="medium"]:after { 3851 3849 white-space: normal; 3852 3850 width: 150px; 3853 3851 } 3854 3852 3855 [aria-label][data-balloon-pos][data-balloon-length="large"]:after {3853 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-length="large"]:after { 3856 3854 white-space: normal; 3857 3855 width: 260px; 3858 3856 } 3859 3857 3860 [aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after {3858 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after { 3861 3859 white-space: normal; 3862 3860 width: 380px; … … 3864 3862 3865 3863 @media screen and (max-width: 768px) { 3866 [aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after {3864 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after { 3867 3865 white-space: normal; 3868 3866 width: 90vw; … … 3870 3868 } 3871 3869 3872 [aria-label][data-balloon-pos][data-balloon-length="fit"]:after {3870 .litespeed-wrap [aria-label][data-balloon-pos][data-balloon-length="fit"]:after { 3873 3871 white-space: normal; 3874 3872 width: 100%; -
litespeed-cache/trunk/lang/litespeed-cache.pot
r2928795 r2954001 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: LiteSpeed Cache 5. 5\n"5 "Project-Id-Version: LiteSpeed Cache 5.6\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n" 7 "POT-Creation-Date: 2023-0 6-19 16:35:40+00:00\n"7 "POT-Creation-Date: 2023-07-26 13:52:36+00:00\n" 8 8 "MIME-Version: 1.0\n" 9 9 "Content-Type: text/plain; charset=UTF-8\n" … … 72 72 msgstr "" 73 73 74 #: src/admin-display.cls.php:135 src/lang.cls.php:2 3874 #: src/admin-display.cls.php:135 src/lang.cls.php:243 75 75 msgid "Crawler" 76 76 msgstr "" … … 209 209 #: tpl/page_optm/settings_media.tpl.php:245 210 210 #: tpl/page_optm/settings_media_exc.tpl.php:26 211 #: tpl/page_optm/settings_tuning.tpl.php:35 212 #: tpl/page_optm/settings_tuning.tpl.php:56 213 #: tpl/page_optm/settings_tuning.tpl.php:77 214 #: tpl/page_optm/settings_tuning.tpl.php:96 211 #: tpl/page_optm/settings_tuning.tpl.php:39 212 #: tpl/page_optm/settings_tuning.tpl.php:59 213 #: tpl/page_optm/settings_tuning.tpl.php:80 214 #: tpl/page_optm/settings_tuning.tpl.php:101 215 #: tpl/page_optm/settings_tuning.tpl.php:120 215 216 #: tpl/page_optm/settings_tuning_css.tpl.php:24 216 217 #: tpl/page_optm/settings_tuning_css.tpl.php:84 … … 326 327 msgstr "" 327 328 328 #: src/cdn-setup.cls.php:322 src/cloud.cls.php:8 08 src/cloud.cls.php:816329 #: src/cloud.cls.php:12 23329 #: src/cdn-setup.cls.php:322 src/cloud.cls.php:820 src/cloud.cls.php:828 330 #: src/cloud.cls.php:1235 330 331 msgid "Message from QUIC.cloud server" 331 332 msgstr "" 332 333 333 334 #: src/cloud.cls.php:394 src/cloud.cls.php:407 src/cloud.cls.php:452 334 #: src/cloud.cls.php:477 src/cloud.cls.php:625 src/cloud.cls.php:1 192335 #: src/cloud.cls.php:477 src/cloud.cls.php:625 src/cloud.cls.php:1204 335 336 msgid "Cloud Error" 336 337 msgstr "" … … 358 359 #: src/cloud.cls.php:755 359 360 msgid "" 361 "Cloud server refused the current request due to unpulled images. Please pull " 362 "the images first." 363 msgstr "" 364 365 #: src/cloud.cls.php:760 366 msgid "" 367 "Your domain_key has been temporarily blocklisted to prevent abuse. You may " 368 "contact support at QUIC.cloud to learn more." 369 msgstr "" 370 371 #: src/cloud.cls.php:767 372 msgid "" 360 373 "Cloud server refused the current request due to rate limiting. Please try " 361 374 "again later." 362 375 msgstr "" 363 376 364 #: src/cloud.cls.php:7 63377 #: src/cloud.cls.php:775 365 378 msgid "Redetected node" 366 379 msgstr "" 367 380 368 #: src/cloud.cls.php:7 71381 #: src/cloud.cls.php:783 369 382 msgid "" 370 383 "We are working hard to improve your online service experience. The service " … … 372 385 msgstr "" 373 386 374 #: src/cloud.cls.php:8 24387 #: src/cloud.cls.php:836 375 388 msgid "Good news from QUIC.cloud server" 376 389 msgstr "" 377 390 378 #: src/cloud.cls.php:8 33391 #: src/cloud.cls.php:845 379 392 msgid "%1$s plugin version %2$s required for this action." 380 393 msgstr "" 381 394 382 #: src/cloud.cls.php: 890 src/cloud.cls.php:1212395 #: src/cloud.cls.php:902 src/cloud.cls.php:1224 383 396 msgid "Failed to communicate with QUIC.cloud server" 384 397 msgstr "" 385 398 386 #: src/cloud.cls.php:9 33399 #: src/cloud.cls.php:945 387 400 msgid "" 388 401 "Site not recognized. Domain Key has been automatically removed. Please " … … 390 403 msgstr "" 391 404 392 #: src/cloud.cls.php:9 34src/error.cls.php:48405 #: src/cloud.cls.php:946 src/error.cls.php:48 393 406 msgid "Click here to set." 394 407 msgstr "" 395 408 396 #: src/cloud.cls.php:10 02409 #: src/cloud.cls.php:1014 397 410 msgid "Cannot request REST API, no token saved." 398 411 msgstr "" 399 412 400 #: src/cloud.cls.php:10 28413 #: src/cloud.cls.php:1040 401 414 msgid "Cloud REST Error" 402 415 msgstr "" 403 416 404 #: src/cloud.cls.php:10 48417 #: src/cloud.cls.php:1060 405 418 msgid "Unknown error." 406 419 msgstr "" 407 420 408 #: src/cloud.cls.php:10 52421 #: src/cloud.cls.php:1064 409 422 msgid "Contact QUIC.cloud support" 410 423 msgstr "" 411 424 412 #: src/cloud.cls.php:10 54425 #: src/cloud.cls.php:1066 413 426 msgid "Cloud REST API returned error: " 414 427 msgstr "" 415 428 416 #: src/cloud.cls.php:12 31429 #: src/cloud.cls.php:1243 417 430 msgid "" 418 431 "Applied for Domain Key successfully. Please wait for result. Domain Key will " … … 420 433 msgstr "" 421 434 422 #: src/cloud.cls.php:12 87435 #: src/cloud.cls.php:1299 423 436 msgid "" 424 437 "Congratulations, your Domain Key has been approved! The setting has been " … … 426 439 msgstr "" 427 440 428 #: src/cloud.cls.php:13 83441 #: src/cloud.cls.php:1395 429 442 msgid "QUIC.cloud account has been created and successfully linked." 430 443 msgstr "" 431 444 432 #: src/cloud.cls.php:13 84445 #: src/cloud.cls.php:1396 433 446 msgid "QUIC.cloud account has been successfully linked." 434 447 msgstr "" 435 448 436 #: src/cloud.cls.php:1 392449 #: src/cloud.cls.php:1404 437 450 msgid "Domain Key hash mismatch" 438 451 msgstr "" 439 452 440 #: src/cloud.cls.php:15 18453 #: src/cloud.cls.php:1530 441 454 msgid "Sync credit allowance with Cloud Server successfully." 442 455 msgstr "" … … 462 475 msgstr "" 463 476 464 #: src/crawler-map.cls.php:32 3477 #: src/crawler-map.cls.php:329 465 478 msgid "No valid sitemap parsed for crawler." 466 479 msgstr "" 467 480 468 #: src/crawler-map.cls.php:3 27481 #: src/crawler-map.cls.php:333 469 482 msgid "Sitemap created successfully: %d items" 470 483 msgstr "" … … 504 517 msgstr "" 505 518 506 #: src/data.upgrade.func.php:118 src/lang.cls.php:14 1519 #: src/data.upgrade.func.php:118 src/lang.cls.php:145 507 520 msgid "JS Combine" 508 521 msgstr "" … … 847 860 msgstr "" 848 861 849 #: src/gui.cls.php:497 src/gui.cls.php:657 src/lang.cls.php:1 07862 #: src/gui.cls.php:497 src/gui.cls.php:657 src/lang.cls.php:111 850 863 #: tpl/dash/dashboard.tpl.php:420 tpl/toolbox/purge.tpl.php:52 851 864 msgid "Object Cache" … … 865 878 msgstr "" 866 879 867 #: src/gui.cls.php:556 src/gui.cls.php:716 src/lang.cls.php:17 0880 #: src/gui.cls.php:556 src/gui.cls.php:716 src/lang.cls.php:175 868 881 #: tpl/presets/standard.tpl.php:42 tpl/toolbox/purge.tpl.php:106 869 882 msgid "Gravatar Cache" … … 931 944 msgstr "" 932 945 933 #: src/img-optm.cls.php:6 25946 #: src/img-optm.cls.php:631 934 947 msgid "No valid image found in the current request." 935 948 msgstr "" 936 949 937 #: src/img-optm.cls.php:6 48950 #: src/img-optm.cls.php:654 938 951 msgid "No valid image found by Cloud server in the current request." 939 952 msgstr "" 940 953 941 #: src/img-optm.cls.php:83 1954 #: src/img-optm.cls.php:837 942 955 msgid "Started async image optimization request" 943 956 msgstr "" 944 957 945 #: src/img-optm.cls.php:8 68958 #: src/img-optm.cls.php:874 946 959 msgid "Pull Cron is running" 947 960 msgstr "" … … 955 968 msgstr "" 956 969 957 #: src/img-optm.cls.php:97 5970 #: src/img-optm.cls.php:974 958 971 msgid "Optimized WebP file expired and was cleared." 959 972 msgstr "" 960 973 961 #: src/img-optm.cls.php:98 9974 #: src/img-optm.cls.php:988 962 975 msgid "Pulled WebP image md5 does not match the notified WebP image md5." 963 976 msgstr "" 964 977 965 #: src/img-optm.cls.php:113 4978 #: src/img-optm.cls.php:1133 966 979 msgid "Cleaned up unfinished data successfully." 967 980 msgstr "" 968 981 969 #: src/img-optm.cls.php:12 10982 #: src/img-optm.cls.php:1209 970 983 msgid "Destroy all optimization data successfully." 971 984 msgstr "" 972 985 973 #: src/img-optm.cls.php:127 1 src/img-optm.cls.php:1333986 #: src/img-optm.cls.php:1270 src/img-optm.cls.php:1332 974 987 msgid "Rescanned successfully." 975 988 msgstr "" 976 989 977 #: src/img-optm.cls.php:133 3990 #: src/img-optm.cls.php:1332 978 991 msgid "Rescanned %d images successfully." 979 992 msgstr "" 980 993 981 #: src/img-optm.cls.php:139 8994 #: src/img-optm.cls.php:1397 982 995 msgid "Calculated backups successfully." 983 996 msgstr "" 984 997 985 #: src/img-optm.cls.php:14 90998 #: src/img-optm.cls.php:1489 986 999 msgid "Removed backups successfully." 987 1000 msgstr "" 988 1001 989 #: src/img-optm.cls.php:167 51002 #: src/img-optm.cls.php:1674 990 1003 msgid "Switched images successfully." 991 1004 msgstr "" 992 1005 993 #: src/img-optm.cls.php:17 20 src/img-optm.cls.php:17661006 #: src/img-optm.cls.php:1719 src/img-optm.cls.php:1765 994 1007 msgid "Switched to optimized file successfully." 995 1008 msgstr "" 996 1009 997 #: src/img-optm.cls.php:173 91010 #: src/img-optm.cls.php:1738 998 1011 msgid "Disabled WebP file successfully." 999 1012 msgstr "" 1000 1013 1001 #: src/img-optm.cls.php:174 41014 #: src/img-optm.cls.php:1743 1002 1015 msgid "Enabled WebP file successfully." 1003 1016 msgstr "" 1004 1017 1005 #: src/img-optm.cls.php:17 601018 #: src/img-optm.cls.php:1759 1006 1019 msgid "Restored original file successfully." 1007 1020 msgstr "" 1008 1021 1009 #: src/img-optm.cls.php:181 71022 #: src/img-optm.cls.php:1816 1010 1023 msgid "Reset the optimized data successfully." 1011 1024 msgstr "" … … 1023 1036 msgstr "" 1024 1037 1025 #: src/lang.cls.php:2 31038 #: src/lang.cls.php:26 1026 1039 msgid "Images not requested" 1027 1040 msgstr "" 1028 1041 1029 #: src/lang.cls.php:2 41042 #: src/lang.cls.php:27 1030 1043 msgid "Images ready to request" 1031 1044 msgstr "" 1032 1045 1033 #: src/lang.cls.php:2 5tpl/dash/dashboard.tpl.php:3611046 #: src/lang.cls.php:28 tpl/dash/dashboard.tpl.php:361 1034 1047 msgid "Images requested" 1035 1048 msgstr "" 1036 1049 1037 #: src/lang.cls.php:2 6tpl/dash/dashboard.tpl.php:3711050 #: src/lang.cls.php:29 tpl/dash/dashboard.tpl.php:371 1038 1051 msgid "Images notified to pull" 1039 1052 msgstr "" 1040 1053 1041 #: src/lang.cls.php: 271054 #: src/lang.cls.php:30 1042 1055 msgid "Images optimized and pulled" 1043 1056 msgstr "" 1044 1057 1045 #: src/lang.cls.php:4 41058 #: src/lang.cls.php:48 1046 1059 msgid "" 1047 1060 "Unable to automatically add %1$s as a Domain Alias for main %2$s domain, due " … … 1049 1062 msgstr "" 1050 1063 1051 #: src/lang.cls.php: 471064 #: src/lang.cls.php:51 1052 1065 msgid "" 1053 1066 "Unable to automatically add %1$s as a Domain Alias for main %2$s domain." 1054 1067 msgstr "" 1055 1068 1056 #: src/lang.cls.php: 481069 #: src/lang.cls.php:52 1057 1070 msgid "Alias is in use by another QUIC.cloud account." 1058 1071 msgstr "" 1059 1072 1060 #: src/lang.cls.php: 781073 #: src/lang.cls.php:82 1061 1074 msgid "Server IP" 1062 1075 msgstr "" 1063 1076 1064 #: src/lang.cls.php: 791077 #: src/lang.cls.php:83 1065 1078 msgid "Domain Key" 1066 1079 msgstr "" 1067 1080 1068 #: src/lang.cls.php:8 01081 #: src/lang.cls.php:84 1069 1082 msgid "Guest Mode User Agents" 1070 1083 msgstr "" 1071 1084 1072 #: src/lang.cls.php:8 11085 #: src/lang.cls.php:85 1073 1086 msgid "Guest Mode IPs" 1074 1087 msgstr "" 1075 1088 1076 #: src/lang.cls.php:8 31089 #: src/lang.cls.php:87 1077 1090 msgid "Enable Cache" 1078 1091 msgstr "" 1079 1092 1080 #: src/lang.cls.php:8 4tpl/dash/dashboard.tpl.php:4211093 #: src/lang.cls.php:88 tpl/dash/dashboard.tpl.php:421 1081 1094 #: tpl/presets/standard.tpl.php:12 1082 1095 msgid "Browser Cache" 1083 1096 msgstr "" 1084 1097 1085 #: src/lang.cls.php:8 51098 #: src/lang.cls.php:89 1086 1099 msgid "Default Public Cache TTL" 1087 1100 msgstr "" 1088 1101 1089 #: src/lang.cls.php: 861102 #: src/lang.cls.php:90 1090 1103 msgid "Default Private Cache TTL" 1091 1104 msgstr "" 1092 1105 1093 #: src/lang.cls.php: 871106 #: src/lang.cls.php:91 1094 1107 msgid "Default Front Page TTL" 1095 1108 msgstr "" 1096 1109 1097 #: src/lang.cls.php: 881110 #: src/lang.cls.php:92 1098 1111 msgid "Default Feed TTL" 1099 1112 msgstr "" 1100 1113 1101 #: src/lang.cls.php: 891114 #: src/lang.cls.php:93 1102 1115 msgid "Default REST TTL" 1103 1116 msgstr "" 1104 1117 1105 #: src/lang.cls.php:9 01118 #: src/lang.cls.php:94 1106 1119 msgid "Default HTTP Status Code Page TTL" 1107 1120 msgstr "" 1108 1121 1109 #: src/lang.cls.php:9 11122 #: src/lang.cls.php:95 1110 1123 msgid "Browser Cache TTL" 1111 1124 msgstr "" 1112 1125 1113 #: src/lang.cls.php:9 21126 #: src/lang.cls.php:96 1114 1127 msgid "Automatically Upgrade" 1115 1128 msgstr "" 1116 1129 1117 #: src/lang.cls.php:9 31130 #: src/lang.cls.php:97 1118 1131 msgid "Guest Mode" 1119 1132 msgstr "" 1120 1133 1121 #: src/lang.cls.php:9 41134 #: src/lang.cls.php:98 1122 1135 msgid "Guest Optimization" 1123 1136 msgstr "" 1124 1137 1125 #: src/lang.cls.php:9 51138 #: src/lang.cls.php:99 1126 1139 msgid "Notifications" 1127 1140 msgstr "" 1128 1141 1129 #: src/lang.cls.php: 961142 #: src/lang.cls.php:100 1130 1143 msgid "Cache Logged-in Users" 1131 1144 msgstr "" 1132 1145 1133 #: src/lang.cls.php: 971146 #: src/lang.cls.php:101 1134 1147 msgid "Cache Commenters" 1135 1148 msgstr "" 1136 1149 1137 #: src/lang.cls.php: 981150 #: src/lang.cls.php:102 1138 1151 msgid "Cache REST API" 1139 1152 msgstr "" 1140 1153 1141 #: src/lang.cls.php: 991154 #: src/lang.cls.php:103 1142 1155 msgid "Cache Login Page" 1143 1156 msgstr "" 1144 1157 1145 #: src/lang.cls.php:10 01158 #: src/lang.cls.php:104 1146 1159 msgid "Cache favicon.ico" 1147 1160 msgstr "" 1148 1161 1149 #: src/lang.cls.php:10 11162 #: src/lang.cls.php:105 1150 1163 msgid "Cache PHP Resources" 1151 1164 msgstr "" 1152 1165 1153 #: src/lang.cls.php:10 2tpl/cache/settings_inc.cache_mobile.tpl.php:711166 #: src/lang.cls.php:106 tpl/cache/settings_inc.cache_mobile.tpl.php:71 1154 1167 msgid "Cache Mobile" 1155 1168 msgstr "" 1156 1169 1157 #: src/lang.cls.php:10 3tpl/cache/settings_inc.cache_mobile.tpl.php:711170 #: src/lang.cls.php:107 tpl/cache/settings_inc.cache_mobile.tpl.php:71 1158 1171 msgid "List of Mobile User Agents" 1159 1172 msgstr "" 1160 1173 1161 #: src/lang.cls.php:10 41174 #: src/lang.cls.php:108 1162 1175 msgid "Private Cached URIs" 1163 1176 msgstr "" 1164 1177 1165 #: src/lang.cls.php:10 51178 #: src/lang.cls.php:109 1166 1179 msgid "Drop Query String" 1167 1180 msgstr "" 1168 1181 1169 #: src/lang.cls.php:1 081182 #: src/lang.cls.php:112 1170 1183 msgid "Method" 1171 1184 msgstr "" 1172 1185 1173 #: src/lang.cls.php:1 091186 #: src/lang.cls.php:113 1174 1187 msgid "Host" 1175 1188 msgstr "" 1176 1189 1177 #: src/lang.cls.php:11 01190 #: src/lang.cls.php:114 1178 1191 msgid "Port" 1179 1192 msgstr "" 1180 1193 1181 #: src/lang.cls.php:11 11194 #: src/lang.cls.php:115 1182 1195 msgid "Default Object Lifetime" 1183 1196 msgstr "" 1184 1197 1185 #: src/lang.cls.php:11 21198 #: src/lang.cls.php:116 1186 1199 msgid "Username" 1187 1200 msgstr "" 1188 1201 1189 #: src/lang.cls.php:11 31202 #: src/lang.cls.php:117 1190 1203 msgid "Password" 1191 1204 msgstr "" 1192 1205 1193 #: src/lang.cls.php:11 41206 #: src/lang.cls.php:118 1194 1207 msgid "Redis Database ID" 1195 1208 msgstr "" 1196 1209 1197 #: src/lang.cls.php:11 51210 #: src/lang.cls.php:119 1198 1211 msgid "Global Groups" 1199 1212 msgstr "" 1200 1213 1201 #: src/lang.cls.php:1 161214 #: src/lang.cls.php:120 1202 1215 msgid "Do Not Cache Groups" 1203 1216 msgstr "" 1204 1217 1205 #: src/lang.cls.php:1 171218 #: src/lang.cls.php:121 1206 1219 msgid "Persistent Connection" 1207 1220 msgstr "" 1208 1221 1209 #: src/lang.cls.php:1 181222 #: src/lang.cls.php:122 1210 1223 msgid "Cache WP-Admin" 1211 1224 msgstr "" 1212 1225 1213 #: src/lang.cls.php:1 191226 #: src/lang.cls.php:123 1214 1227 msgid "Store Transients" 1215 1228 msgstr "" 1216 1229 1217 #: src/lang.cls.php:12 11230 #: src/lang.cls.php:125 1218 1231 msgid "Purge All On Upgrade" 1219 1232 msgstr "" 1220 1233 1221 #: src/lang.cls.php:12 21234 #: src/lang.cls.php:126 1222 1235 msgid "Serve Stale" 1223 1236 msgstr "" 1224 1237 1225 #: src/lang.cls.php:12 3tpl/cache/settings-purge.tpl.php:1301238 #: src/lang.cls.php:127 tpl/cache/settings-purge.tpl.php:130 1226 1239 msgid "Scheduled Purge URLs" 1227 1240 msgstr "" 1228 1241 1229 #: src/lang.cls.php:12 4tpl/cache/settings-purge.tpl.php:1051242 #: src/lang.cls.php:128 tpl/cache/settings-purge.tpl.php:105 1230 1243 msgid "Scheduled Purge Time" 1231 1244 msgstr "" 1232 1245 1233 #: src/lang.cls.php:12 51246 #: src/lang.cls.php:129 1234 1247 msgid "Force Cache URIs" 1235 1248 msgstr "" 1236 1249 1237 #: src/lang.cls.php:1 261250 #: src/lang.cls.php:130 1238 1251 msgid "Force Public Cache URIs" 1239 1252 msgstr "" 1240 1253 1241 #: src/lang.cls.php:1 271254 #: src/lang.cls.php:131 1242 1255 msgid "Do Not Cache URIs" 1243 1256 msgstr "" 1244 1257 1245 #: src/lang.cls.php:1 281258 #: src/lang.cls.php:132 1246 1259 msgid "Do Not Cache Query Strings" 1247 1260 msgstr "" 1248 1261 1249 #: src/lang.cls.php:1 291262 #: src/lang.cls.php:133 1250 1263 msgid "Do Not Cache Categories" 1251 1264 msgstr "" 1252 1265 1253 #: src/lang.cls.php:13 01266 #: src/lang.cls.php:134 1254 1267 msgid "Do Not Cache Tags" 1255 1268 msgstr "" 1256 1269 1257 #: src/lang.cls.php:13 11270 #: src/lang.cls.php:135 1258 1271 msgid "Do Not Cache Roles" 1259 1272 msgstr "" 1260 1273 1261 #: src/lang.cls.php:13 21274 #: src/lang.cls.php:136 1262 1275 msgid "CSS Minify" 1263 1276 msgstr "" 1264 1277 1265 #: src/lang.cls.php:13 31278 #: src/lang.cls.php:137 1266 1279 msgid "CSS Combine" 1267 1280 msgstr "" 1268 1281 1269 #: src/lang.cls.php:13 41282 #: src/lang.cls.php:138 1270 1283 msgid "CSS Combine External and Inline" 1271 1284 msgstr "" 1272 1285 1273 #: src/lang.cls.php:13 51286 #: src/lang.cls.php:139 1274 1287 msgid "Generate UCSS" 1275 1288 msgstr "" 1276 1289 1277 #: src/lang.cls.php:1 361290 #: src/lang.cls.php:140 1278 1291 msgid "UCSS Inline" 1279 1292 msgstr "" 1280 1293 1281 #: src/lang.cls.php:1 371294 #: src/lang.cls.php:141 1282 1295 msgid "UCSS Selector Allowlist" 1283 1296 msgstr "" 1284 1297 1285 #: src/lang.cls.php:1 381298 #: src/lang.cls.php:142 1286 1299 msgid "UCSS File Excludes and Inline" 1287 1300 msgstr "" 1288 1301 1289 #: src/lang.cls.php:1 391302 #: src/lang.cls.php:143 1290 1303 msgid "UCSS URI Excludes" 1291 1304 msgstr "" 1292 1305 1293 #: src/lang.cls.php:14 01306 #: src/lang.cls.php:144 1294 1307 msgid "JS Minify" 1295 1308 msgstr "" 1296 1309 1297 #: src/lang.cls.php:14 21310 #: src/lang.cls.php:146 1298 1311 msgid "JS Combine External and Inline" 1299 1312 msgstr "" 1300 1313 1301 #: src/lang.cls.php:14 31314 #: src/lang.cls.php:147 1302 1315 msgid "HTML Minify" 1303 1316 msgstr "" 1304 1317 1305 #: src/lang.cls.php:14 41318 #: src/lang.cls.php:148 1306 1319 msgid "HTML Lazy Load Selectors" 1307 1320 msgstr "" 1308 1321 1309 #: src/lang.cls.php:14 5tpl/page_optm/settings_tuning_css.tpl.php:1311322 #: src/lang.cls.php:149 tpl/page_optm/settings_tuning_css.tpl.php:131 1310 1323 msgid "Load CSS Asynchronously" 1311 1324 msgstr "" 1312 1325 1313 #: src/lang.cls.php:1 461326 #: src/lang.cls.php:150 1314 1327 msgid "CCSS Per URL" 1315 1328 msgstr "" 1316 1329 1317 #: src/lang.cls.php:1 471330 #: src/lang.cls.php:151 1318 1331 msgid "Inline CSS Async Lib" 1319 1332 msgstr "" 1320 1333 1321 #: src/lang.cls.php:1 48tpl/presets/standard.tpl.php:391334 #: src/lang.cls.php:152 tpl/presets/standard.tpl.php:39 1322 1335 msgid "Font Display Optimization" 1323 1336 msgstr "" 1324 1337 1325 #: src/lang.cls.php:1 491338 #: src/lang.cls.php:153 1326 1339 msgid "Load JS Deferred" 1327 1340 msgstr "" 1328 1341 1329 #: src/lang.cls.php:15 01342 #: src/lang.cls.php:154 1330 1343 msgid "Localize Resources" 1331 1344 msgstr "" 1332 1345 1333 #: src/lang.cls.php:15 11346 #: src/lang.cls.php:155 1334 1347 msgid "Localization Files" 1335 1348 msgstr "" 1336 1349 1337 #: src/lang.cls.php:15 21350 #: src/lang.cls.php:156 1338 1351 msgid "DNS Prefetch" 1339 1352 msgstr "" 1340 1353 1341 #: src/lang.cls.php:15 31354 #: src/lang.cls.php:157 1342 1355 msgid "DNS Prefetch Control" 1343 1356 msgstr "" 1344 1357 1345 #: src/lang.cls.php:15 41358 #: src/lang.cls.php:158 1346 1359 msgid "CSS Excludes" 1347 1360 msgstr "" 1348 1361 1349 #: src/lang.cls.php:155 1362 #: src/lang.cls.php:159 1363 msgid "JS Delayed Includes" 1364 msgstr "" 1365 1366 #: src/lang.cls.php:160 1350 1367 msgid "JS Excludes" 1351 1368 msgstr "" 1352 1369 1353 #: src/lang.cls.php:1 561370 #: src/lang.cls.php:161 1354 1371 msgid "Remove Query Strings" 1355 1372 msgstr "" 1356 1373 1357 #: src/lang.cls.php:1 571374 #: src/lang.cls.php:162 1358 1375 msgid "Load Google Fonts Asynchronously" 1359 1376 msgstr "" 1360 1377 1361 #: src/lang.cls.php:1 581378 #: src/lang.cls.php:163 1362 1379 msgid "Remove Google Fonts" 1363 1380 msgstr "" 1364 1381 1365 #: src/lang.cls.php:1 591382 #: src/lang.cls.php:164 1366 1383 msgid "Critical CSS Rules" 1367 1384 msgstr "" 1368 1385 1369 #: src/lang.cls.php:16 01386 #: src/lang.cls.php:165 1370 1387 msgid "Separate CCSS Cache Post Types" 1371 1388 msgstr "" 1372 1389 1373 #: src/lang.cls.php:16 11390 #: src/lang.cls.php:166 1374 1391 msgid "Separate CCSS Cache URIs" 1375 1392 msgstr "" 1376 1393 1377 #: src/lang.cls.php:16 21394 #: src/lang.cls.php:167 1378 1395 msgid "JS Deferred / Delayed Excludes" 1379 1396 msgstr "" 1380 1397 1381 #: src/lang.cls.php:16 31398 #: src/lang.cls.php:168 1382 1399 msgid "Guest Mode JS Excludes" 1383 1400 msgstr "" 1384 1401 1385 #: src/lang.cls.php:16 4tpl/presets/standard.tpl.php:441402 #: src/lang.cls.php:169 tpl/presets/standard.tpl.php:44 1386 1403 msgid "Remove WordPress Emoji" 1387 1404 msgstr "" 1388 1405 1389 #: src/lang.cls.php:1 65tpl/presets/standard.tpl.php:451406 #: src/lang.cls.php:170 tpl/presets/standard.tpl.php:45 1390 1407 msgid "Remove Noscript Tags" 1391 1408 msgstr "" 1392 1409 1393 #: src/lang.cls.php:1 661410 #: src/lang.cls.php:171 1394 1411 msgid "URI Excludes" 1395 1412 msgstr "" 1396 1413 1397 #: src/lang.cls.php:1 671414 #: src/lang.cls.php:172 1398 1415 msgid "Optimize for Guests Only" 1399 1416 msgstr "" 1400 1417 1401 #: src/lang.cls.php:1 681418 #: src/lang.cls.php:173 1402 1419 msgid "Role Excludes" 1403 1420 msgstr "" 1404 1421 1405 #: src/lang.cls.php:17 11422 #: src/lang.cls.php:176 1406 1423 msgid "Gravatar Cache Cron" 1407 1424 msgstr "" 1408 1425 1409 #: src/lang.cls.php:17 21426 #: src/lang.cls.php:177 1410 1427 msgid "Gravatar Cache TTL" 1411 1428 msgstr "" 1412 1429 1413 #: src/lang.cls.php:17 41430 #: src/lang.cls.php:179 1414 1431 msgid "Lazy Load Images" 1415 1432 msgstr "" 1416 1433 1417 #: src/lang.cls.php:1 751434 #: src/lang.cls.php:180 1418 1435 msgid "Lazy Load Image Excludes" 1419 1436 msgstr "" 1420 1437 1421 #: src/lang.cls.php:1 761438 #: src/lang.cls.php:181 1422 1439 msgid "Lazy Load Image Class Name Excludes" 1423 1440 msgstr "" 1424 1441 1425 #: src/lang.cls.php:1 771442 #: src/lang.cls.php:182 1426 1443 msgid "Lazy Load Image Parent Class Name Excludes" 1427 1444 msgstr "" 1428 1445 1429 #: src/lang.cls.php:1 781446 #: src/lang.cls.php:183 1430 1447 msgid "Lazy Load Iframe Class Name Excludes" 1431 1448 msgstr "" 1432 1449 1433 #: src/lang.cls.php:1 791450 #: src/lang.cls.php:184 1434 1451 msgid "Lazy Load Iframe Parent Class Name Excludes" 1435 1452 msgstr "" 1436 1453 1437 #: src/lang.cls.php:18 01454 #: src/lang.cls.php:185 1438 1455 msgid "Lazy Load URI Excludes" 1439 1456 msgstr "" 1440 1457 1441 #: src/lang.cls.php:18 11458 #: src/lang.cls.php:186 1442 1459 msgid "LQIP Excludes" 1443 1460 msgstr "" 1444 1461 1445 #: src/lang.cls.php:18 21462 #: src/lang.cls.php:187 1446 1463 msgid "Basic Image Placeholder" 1447 1464 msgstr "" 1448 1465 1449 #: src/lang.cls.php:18 31466 #: src/lang.cls.php:188 1450 1467 msgid "Responsive Placeholder" 1451 1468 msgstr "" 1452 1469 1453 #: src/lang.cls.php:18 41470 #: src/lang.cls.php:189 1454 1471 msgid "Responsive Placeholder Color" 1455 1472 msgstr "" 1456 1473 1457 #: src/lang.cls.php:1 851474 #: src/lang.cls.php:190 1458 1475 msgid "Responsive Placeholder SVG" 1459 1476 msgstr "" 1460 1477 1461 #: src/lang.cls.php:1 861478 #: src/lang.cls.php:191 1462 1479 msgid "LQIP Cloud Generator" 1463 1480 msgstr "" 1464 1481 1465 #: src/lang.cls.php:1 871482 #: src/lang.cls.php:192 1466 1483 msgid "LQIP Quality" 1467 1484 msgstr "" 1468 1485 1469 #: src/lang.cls.php:1 881486 #: src/lang.cls.php:193 1470 1487 msgid "LQIP Minimum Dimensions" 1471 1488 msgstr "" 1472 1489 1473 #: src/lang.cls.php:19 01490 #: src/lang.cls.php:195 1474 1491 msgid "Generate LQIP In Background" 1475 1492 msgstr "" 1476 1493 1477 #: src/lang.cls.php:19 11494 #: src/lang.cls.php:196 1478 1495 msgid "Lazy Load Iframes" 1479 1496 msgstr "" 1480 1497 1481 #: src/lang.cls.php:19 21498 #: src/lang.cls.php:197 1482 1499 msgid "Add Missing Sizes" 1483 1500 msgstr "" 1484 1501 1485 #: src/lang.cls.php:19 3src/metabox.cls.php:31 src/metabox.cls.php:321502 #: src/lang.cls.php:198 src/metabox.cls.php:31 src/metabox.cls.php:32 1486 1503 #: tpl/page_optm/settings_vpi.tpl.php:12 1487 1504 msgid "Viewport Images" 1488 1505 msgstr "" 1489 1506 1490 #: src/lang.cls.php:19 41507 #: src/lang.cls.php:199 1491 1508 msgid "Viewport Images Cron" 1492 1509 msgstr "" 1493 1510 1494 #: src/lang.cls.php: 1961511 #: src/lang.cls.php:201 1495 1512 msgid "Auto Request Cron" 1496 1513 msgstr "" 1497 1514 1498 #: src/lang.cls.php: 1971515 #: src/lang.cls.php:202 1499 1516 msgid "Auto Pull Cron" 1500 1517 msgstr "" 1501 1518 1502 #: src/lang.cls.php: 1981519 #: src/lang.cls.php:203 1503 1520 msgid "Optimize Original Images" 1504 1521 msgstr "" 1505 1522 1506 #: src/lang.cls.php: 1991523 #: src/lang.cls.php:204 1507 1524 msgid "Remove Original Backups" 1508 1525 msgstr "" 1509 1526 1510 #: src/lang.cls.php:20 01527 #: src/lang.cls.php:205 1511 1528 msgid "Image WebP Replacement" 1512 1529 msgstr "" 1513 1530 1514 #: src/lang.cls.php:20 11531 #: src/lang.cls.php:206 1515 1532 msgid "Optimize Losslessly" 1516 1533 msgstr "" 1517 1534 1518 #: src/lang.cls.php:20 21535 #: src/lang.cls.php:207 1519 1536 msgid "Preserve EXIF/XMP data" 1520 1537 msgstr "" 1521 1538 1522 #: src/lang.cls.php:20 31539 #: src/lang.cls.php:208 1523 1540 msgid "WebP Attribute To Replace" 1524 1541 msgstr "" 1525 1542 1526 #: src/lang.cls.php:20 41543 #: src/lang.cls.php:209 1527 1544 msgid "WebP For Extra srcset" 1528 1545 msgstr "" 1529 1546 1530 #: src/lang.cls.php:2 051547 #: src/lang.cls.php:210 1531 1548 msgid "WordPress Image Quality Control" 1532 1549 msgstr "" 1533 1550 1534 #: src/lang.cls.php:2 06tpl/esi_widget_edit.php:361551 #: src/lang.cls.php:211 tpl/esi_widget_edit.php:36 1535 1552 msgid "Enable ESI" 1536 1553 msgstr "" 1537 1554 1538 #: src/lang.cls.php:2 071555 #: src/lang.cls.php:212 1539 1556 msgid "Cache Admin Bar" 1540 1557 msgstr "" 1541 1558 1542 #: src/lang.cls.php:2 081559 #: src/lang.cls.php:213 1543 1560 msgid "Cache Comment Form" 1544 1561 msgstr "" 1545 1562 1546 #: src/lang.cls.php:2 091563 #: src/lang.cls.php:214 1547 1564 msgid "ESI Nonces" 1548 1565 msgstr "" 1549 1566 1550 #: src/lang.cls.php:21 0tpl/page_optm/settings_css.tpl.php:1211567 #: src/lang.cls.php:215 tpl/page_optm/settings_css.tpl.php:121 1551 1568 #: tpl/page_optm/settings_css.tpl.php:238 tpl/page_optm/settings_vpi.tpl.php:67 1552 1569 msgid "Vary Group" 1553 1570 msgstr "" 1554 1571 1555 #: src/lang.cls.php:21 11572 #: src/lang.cls.php:216 1556 1573 msgid "Purge All Hooks" 1557 1574 msgstr "" 1558 1575 1559 #: src/lang.cls.php:21 21576 #: src/lang.cls.php:217 1560 1577 msgid "Improve HTTP/HTTPS Compatibility" 1561 1578 msgstr "" 1562 1579 1563 #: src/lang.cls.php:21 31580 #: src/lang.cls.php:218 1564 1581 msgid "Instant Click" 1565 1582 msgstr "" 1566 1583 1567 #: src/lang.cls.php:21 41584 #: src/lang.cls.php:219 1568 1585 msgid "Do Not Cache Cookies" 1569 1586 msgstr "" 1570 1587 1571 #: src/lang.cls.php:2 151588 #: src/lang.cls.php:220 1572 1589 msgid "Do Not Cache User Agents" 1573 1590 msgstr "" 1574 1591 1575 #: src/lang.cls.php:2 161592 #: src/lang.cls.php:221 1576 1593 msgid "Login Cookie" 1577 1594 msgstr "" 1578 1595 1579 #: src/lang.cls.php:2 181596 #: src/lang.cls.php:223 1580 1597 msgid "Frontend Heartbeat Control" 1581 1598 msgstr "" 1582 1599 1583 #: src/lang.cls.php:2 191600 #: src/lang.cls.php:224 1584 1601 msgid "Frontend Heartbeat TTL" 1585 1602 msgstr "" 1586 1603 1587 #: src/lang.cls.php:22 01604 #: src/lang.cls.php:225 1588 1605 msgid "Backend Heartbeat Control" 1589 1606 msgstr "" 1590 1607 1591 #: src/lang.cls.php:22 11608 #: src/lang.cls.php:226 1592 1609 msgid "Backend Heartbeat TTL" 1593 1610 msgstr "" 1594 1611 1595 #: src/lang.cls.php:22 21612 #: src/lang.cls.php:227 1596 1613 msgid "Editor Heartbeat" 1597 1614 msgstr "" 1598 1615 1599 #: src/lang.cls.php:22 31616 #: src/lang.cls.php:228 1600 1617 msgid "Editor Heartbeat TTL" 1601 1618 msgstr "" 1602 1619 1603 #: src/lang.cls.php:2 251620 #: src/lang.cls.php:230 1604 1621 msgid "QUIC.cloud CDN" 1605 1622 msgstr "" 1606 1623 1607 #: src/lang.cls.php:2 261624 #: src/lang.cls.php:231 1608 1625 msgid "Use CDN Mapping" 1609 1626 msgstr "" 1610 1627 1611 #: src/lang.cls.php:2 271628 #: src/lang.cls.php:232 1612 1629 msgid "CDN URL" 1613 1630 msgstr "" 1614 1631 1615 #: src/lang.cls.php:2 281632 #: src/lang.cls.php:233 1616 1633 msgid "Include Images" 1617 1634 msgstr "" 1618 1635 1619 #: src/lang.cls.php:2 291636 #: src/lang.cls.php:234 1620 1637 msgid "Include CSS" 1621 1638 msgstr "" 1622 1639 1623 #: src/lang.cls.php:23 01640 #: src/lang.cls.php:235 1624 1641 msgid "Include JS" 1625 1642 msgstr "" 1626 1643 1627 #: src/lang.cls.php:23 1tpl/cdn/settings.tpl.php:1021644 #: src/lang.cls.php:236 tpl/cdn/settings.tpl.php:102 1628 1645 msgid "Include File Types" 1629 1646 msgstr "" 1630 1647 1631 #: src/lang.cls.php:23 21648 #: src/lang.cls.php:237 1632 1649 msgid "HTML Attribute To Replace" 1633 1650 msgstr "" 1634 1651 1635 #: src/lang.cls.php:23 31652 #: src/lang.cls.php:238 1636 1653 msgid "Original URLs" 1637 1654 msgstr "" 1638 1655 1639 #: src/lang.cls.php:23 41656 #: src/lang.cls.php:239 1640 1657 msgid "Included Directories" 1641 1658 msgstr "" 1642 1659 1643 #: src/lang.cls.php:2 351660 #: src/lang.cls.php:240 1644 1661 msgid "Exclude Path" 1645 1662 msgstr "" 1646 1663 1647 #: src/lang.cls.php:2 361664 #: src/lang.cls.php:241 1648 1665 msgid "Cloudflare API" 1649 1666 msgstr "" 1650 1667 1651 #: src/lang.cls.php:2 391668 #: src/lang.cls.php:244 1652 1669 msgid "Delay" 1653 1670 msgstr "" 1654 1671 1655 #: src/lang.cls.php:24 01672 #: src/lang.cls.php:245 1656 1673 msgid "Run Duration" 1657 1674 msgstr "" 1658 1675 1659 #: src/lang.cls.php:24 11676 #: src/lang.cls.php:246 1660 1677 msgid "Interval Between Runs" 1661 1678 msgstr "" 1662 1679 1663 #: src/lang.cls.php:24 21680 #: src/lang.cls.php:247 1664 1681 msgid "Crawl Interval" 1665 1682 msgstr "" 1666 1683 1667 #: src/lang.cls.php:24 31684 #: src/lang.cls.php:248 1668 1685 msgid "Threads" 1669 1686 msgstr "" 1670 1687 1671 #: src/lang.cls.php:24 41688 #: src/lang.cls.php:249 1672 1689 msgid "Timeout" 1673 1690 msgstr "" 1674 1691 1675 #: src/lang.cls.php:2 451692 #: src/lang.cls.php:250 1676 1693 msgid "Server Load Limit" 1677 1694 msgstr "" 1678 1695 1679 #: src/lang.cls.php:2 461696 #: src/lang.cls.php:251 1680 1697 msgid "Role Simulation" 1681 1698 msgstr "" 1682 1699 1683 #: src/lang.cls.php:2 471700 #: src/lang.cls.php:252 1684 1701 msgid "Cookie Simulation" 1685 1702 msgstr "" 1686 1703 1687 #: src/lang.cls.php:2 481704 #: src/lang.cls.php:253 1688 1705 msgid "Custom Sitemap" 1689 1706 msgstr "" 1690 1707 1691 #: src/lang.cls.php:2 491708 #: src/lang.cls.php:254 1692 1709 msgid "Drop Domain from Sitemap" 1693 1710 msgstr "" 1694 1711 1695 #: src/lang.cls.php:25 01712 #: src/lang.cls.php:255 1696 1713 msgid "Sitemap Timeout" 1697 1714 msgstr "" 1698 1715 1699 #: src/lang.cls.php:25 2tpl/inc/disabled_all.php:51716 #: src/lang.cls.php:257 tpl/inc/disabled_all.php:5 1700 1717 msgid "Disable All Features" 1701 1718 msgstr "" 1702 1719 1703 #: src/lang.cls.php:25 3tpl/toolbox/log_viewer.tpl.php:111720 #: src/lang.cls.php:258 tpl/toolbox/log_viewer.tpl.php:11 1704 1721 msgid "Debug Log" 1705 1722 msgstr "" 1706 1723 1707 #: src/lang.cls.php:25 41724 #: src/lang.cls.php:259 1708 1725 msgid "Admin IPs" 1709 1726 msgstr "" 1710 1727 1711 #: src/lang.cls.php:2 551728 #: src/lang.cls.php:260 1712 1729 msgid "Debug Level" 1713 1730 msgstr "" 1714 1731 1715 #: src/lang.cls.php:2 561732 #: src/lang.cls.php:261 1716 1733 msgid "Log File Size Limit" 1717 1734 msgstr "" 1718 1735 1719 #: src/lang.cls.php:2 571736 #: src/lang.cls.php:262 1720 1737 msgid "Log Cookies" 1721 1738 msgstr "" 1722 1739 1723 #: src/lang.cls.php:2 581740 #: src/lang.cls.php:263 1724 1741 msgid "Collapse Query Strings" 1725 1742 msgstr "" 1726 1743 1727 #: src/lang.cls.php:2 591744 #: src/lang.cls.php:264 1728 1745 msgid "Debug URI Includes" 1729 1746 msgstr "" 1730 1747 1731 #: src/lang.cls.php:26 01748 #: src/lang.cls.php:265 1732 1749 msgid "Debug URI Excludes" 1733 1750 msgstr "" 1734 1751 1735 #: src/lang.cls.php:26 11752 #: src/lang.cls.php:266 1736 1753 msgid "Debug String Excludes" 1737 1754 msgstr "" 1738 1755 1739 #: src/lang.cls.php:26 31756 #: src/lang.cls.php:268 1740 1757 msgid "Revisions Max Number" 1741 1758 msgstr "" 1742 1759 1743 #: src/lang.cls.php:26 41760 #: src/lang.cls.php:269 1744 1761 msgid "Revisions Max Age" 1745 1762 msgstr "" … … 1923 1940 msgstr "" 1924 1941 1925 #: src/purge.cls.php:65 01942 #: src/purge.cls.php:651 1926 1943 msgid "Notified LiteSpeed Web Server to purge the front page." 1927 1944 msgstr "" 1928 1945 1929 #: src/purge.cls.php:66 31946 #: src/purge.cls.php:664 1930 1947 msgid "Notified LiteSpeed Web Server to purge all pages." 1931 1948 msgstr "" 1932 1949 1933 #: src/purge.cls.php:68 21950 #: src/purge.cls.php:683 1934 1951 msgid "Notified LiteSpeed Web Server to purge error pages." 1935 1952 msgstr "" 1936 1953 1937 #: src/purge.cls.php:7 091954 #: src/purge.cls.php:710 1938 1955 msgid "Purge category %s" 1939 1956 msgstr "" 1940 1957 1941 #: src/purge.cls.php:73 61958 #: src/purge.cls.php:737 1942 1959 msgid "Purge tag %s" 1943 1960 msgstr "" 1944 1961 1945 #: src/purge.cls.php:76 71962 #: src/purge.cls.php:768 1946 1963 msgid "Purge url %s" 1947 1964 msgstr "" … … 2067 2084 msgstr "" 2068 2085 2069 #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 5. 5) #-#-#-#-#2086 #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 5.6) #-#-#-#-# 2070 2087 #. Plugin Name of the plugin/theme 2071 2088 #: tpl/banner/new_version.php:57 tpl/banner/new_version_dev.tpl.php:12 … … 2083 2100 2084 2101 #: tpl/banner/new_version.php:69 tpl/banner/new_version_dev.tpl.php:24 2085 #: tpl/toolbox/beta_test.tpl.php: 702102 #: tpl/toolbox/beta_test.tpl.php:62 2086 2103 msgid "Upgrade" 2087 2104 msgstr "" … … 2427 2444 #: tpl/cache/settings-esi.tpl.php:96 2428 2445 #: tpl/page_optm/settings_media_exc.tpl.php:27 2429 #: tpl/page_optm/settings_tuning.tpl.php:36 2430 #: tpl/page_optm/settings_tuning.tpl.php:57 2431 #: tpl/page_optm/settings_tuning.tpl.php:78 2432 #: tpl/page_optm/settings_tuning.tpl.php:97 2446 #: tpl/page_optm/settings_tuning.tpl.php:40 2447 #: tpl/page_optm/settings_tuning.tpl.php:60 2448 #: tpl/page_optm/settings_tuning.tpl.php:81 2449 #: tpl/page_optm/settings_tuning.tpl.php:102 2450 #: tpl/page_optm/settings_tuning.tpl.php:121 2433 2451 #: tpl/page_optm/settings_tuning_css.tpl.php:25 2434 2452 #: tpl/page_optm/settings_tuning_css.tpl.php:85 … … 3433 3451 msgstr "" 3434 3452 3435 #: tpl/crawler/blacklist.tpl.php:31 tpl/crawler/map.tpl.php: 433453 #: tpl/crawler/blacklist.tpl.php:31 tpl/crawler/map.tpl.php:57 3436 3454 #: tpl/toolbox/purge.tpl.php:224 3437 3455 msgid "URL" 3438 3456 msgstr "" 3439 3457 3440 #: tpl/crawler/blacklist.tpl.php:33 tpl/crawler/map.tpl.php: 453458 #: tpl/crawler/blacklist.tpl.php:33 tpl/crawler/map.tpl.php:59 3441 3459 msgid "Operation" 3442 3460 msgstr "" … … 3458 3476 msgstr "" 3459 3477 3460 #: tpl/crawler/blacklist.tpl.php:61 tpl/crawler/map.tpl.php: 693478 #: tpl/crawler/blacklist.tpl.php:61 tpl/crawler/map.tpl.php:84 3461 3479 msgid "Blocklisted due to not cacheable" 3462 3480 msgstr "" 3463 3481 3464 #: tpl/crawler/blacklist.tpl.php:62 tpl/crawler/map.tpl.php: 703482 #: tpl/crawler/blacklist.tpl.php:62 tpl/crawler/map.tpl.php:85 3465 3483 #: tpl/crawler/summary.tpl.php:166 tpl/crawler/summary.tpl.php:190 3466 3484 msgid "Blocklisted" … … 3493 3511 msgstr "" 3494 3512 3495 #: tpl/crawler/map.tpl.php:1 63513 #: tpl/crawler/map.tpl.php:18 3496 3514 msgid "Clean Crawler Map" 3497 3515 msgstr "" 3498 3516 3499 #: tpl/crawler/map.tpl.php:2 03517 #: tpl/crawler/map.tpl.php:22 3500 3518 msgid "Refresh Crawler Map" 3501 3519 msgstr "" 3502 3520 3503 #: tpl/crawler/map.tpl.php:2 73521 #: tpl/crawler/map.tpl.php:29 3504 3522 msgid "Generated at %s" 3505 3523 msgstr "" 3506 3524 3507 #: tpl/crawler/map.tpl.php:3 33525 #: tpl/crawler/map.tpl.php:35 3508 3526 msgid "Sitemap List" 3509 3527 msgstr "" 3510 3528 3511 #: tpl/crawler/map.tpl.php:3 73529 #: tpl/crawler/map.tpl.php:39 3512 3530 msgid "Sitemap Total" 3513 3531 msgstr "" 3514 3532 3515 #: tpl/crawler/map.tpl.php:44 tpl/dash/dashboard.tpl.php:568 3533 #: tpl/crawler/map.tpl.php:44 3534 msgid "URL Search" 3535 msgstr "" 3536 3537 #: tpl/crawler/map.tpl.php:58 tpl/dash/dashboard.tpl.php:568 3516 3538 msgid "Crawler Status" 3517 3539 msgstr "" 3518 3540 3519 #: tpl/crawler/map.tpl.php: 583541 #: tpl/crawler/map.tpl.php:73 3520 3542 msgid "Add to Blocklist" 3521 3543 msgstr "" 3522 3544 3523 #: tpl/crawler/map.tpl.php: 673545 #: tpl/crawler/map.tpl.php:82 3524 3546 msgid "Cache Hit" 3525 3547 msgstr "" 3526 3548 3527 #: tpl/crawler/map.tpl.php: 683549 #: tpl/crawler/map.tpl.php:83 3528 3550 msgid "Cache Miss" 3529 3551 msgstr "" … … 4403 4425 4404 4426 #: tpl/general/settings_tuning.tpl.php:8 4405 #: tpl/page_optm/settings_tuning.tpl.php: 184427 #: tpl/page_optm/settings_tuning.tpl.php:20 4406 4428 #: tpl/page_optm/settings_tuning_css.tpl.php:7 4407 4429 msgid "Tuning Settings" … … 5158 5180 5159 5181 #: tpl/page_optm/settings_localization.tpl.php:127 5160 #: tpl/toolbox/beta_test.tpl.php:3 85182 #: tpl/toolbox/beta_test.tpl.php:30 5161 5183 msgid "Example" 5162 5184 msgstr "" … … 5312 5334 5313 5335 #: tpl/page_optm/settings_media_exc.tpl.php:28 5314 #: tpl/page_optm/settings_tuning.tpl.php: 375315 #: tpl/page_optm/settings_tuning.tpl.php: 585316 #: tpl/page_optm/settings_tuning.tpl.php: 795336 #: tpl/page_optm/settings_tuning.tpl.php:61 5337 #: tpl/page_optm/settings_tuning.tpl.php:82 5338 #: tpl/page_optm/settings_tuning.tpl.php:103 5317 5339 #: tpl/page_optm/settings_tuning_css.tpl.php:26 5318 5340 msgid "Elements with attribute %s in html code will be excluded." … … 5343 5365 msgstr "" 5344 5366 5345 #: tpl/page_optm/settings_tuning.tpl.php:31 5367 #: tpl/page_optm/settings_tuning.tpl.php:34 5368 msgid "Listed JS files or inline JS code will be delayed." 5369 msgstr "" 5370 5371 #: tpl/page_optm/settings_tuning.tpl.php:54 5346 5372 msgid "Listed JS files or inline JS code will not be minified/combined." 5347 5373 msgstr "" 5348 5374 5349 #: tpl/page_optm/settings_tuning.tpl.php: 385350 #: tpl/page_optm/settings_tuning.tpl.php: 595375 #: tpl/page_optm/settings_tuning.tpl.php:62 5376 #: tpl/page_optm/settings_tuning.tpl.php:83 5351 5377 #: tpl/page_optm/settings_tuning_css.tpl.php:27 5352 5378 #: tpl/page_optm/settings_tuning_css.tpl.php:66 … … 5354 5380 msgstr "" 5355 5381 5356 #: tpl/page_optm/settings_tuning.tpl.php: 525382 #: tpl/page_optm/settings_tuning.tpl.php:76 5357 5383 msgid "Listed JS files or inline JS code will not be deferred or delayed." 5358 5384 msgstr "" 5359 5385 5360 #: tpl/page_optm/settings_tuning.tpl.php: 735386 #: tpl/page_optm/settings_tuning.tpl.php:97 5361 5387 msgid "Listed JS files or inline JS code will not be optimized by %s." 5362 5388 msgstr "" 5363 5389 5364 #: tpl/page_optm/settings_tuning.tpl.php: 935390 #: tpl/page_optm/settings_tuning.tpl.php:117 5365 5391 msgid "Prevent any optimization of listed pages." 5366 5392 msgstr "" 5367 5393 5368 #: tpl/page_optm/settings_tuning.tpl.php:1 115394 #: tpl/page_optm/settings_tuning.tpl.php:135 5369 5395 msgid "" 5370 5396 "Only optimize pages for guest (not logged in) visitors. If turned this OFF, " … … 5372 5398 msgstr "" 5373 5399 5374 #: tpl/page_optm/settings_tuning.tpl.php:1 235400 #: tpl/page_optm/settings_tuning.tpl.php:147 5375 5401 msgid "Selected roles will be excluded from all optimizations." 5376 5402 msgstr "" … … 5692 5718 msgstr "" 5693 5719 5694 #: tpl/toolbox/beta_test.tpl.php: 335720 #: tpl/toolbox/beta_test.tpl.php:25 5695 5721 msgid "Try GitHub Version" 5696 5722 msgstr "" 5697 5723 5698 #: tpl/toolbox/beta_test.tpl.php: 375724 #: tpl/toolbox/beta_test.tpl.php:29 5699 5725 msgid "" 5700 5726 "Use this section to switch plugin versions. To beta test a GitHub commit, " … … 5702 5728 msgstr "" 5703 5729 5704 #: tpl/toolbox/beta_test.tpl.php: 425730 #: tpl/toolbox/beta_test.tpl.php:34 5705 5731 msgid "Use latest GitHub Dev commit" 5706 5732 msgstr "" 5707 5733 5708 #: tpl/toolbox/beta_test.tpl.php: 445734 #: tpl/toolbox/beta_test.tpl.php:36 5709 5735 msgid "Use latest GitHub Master commit" 5710 5736 msgstr "" 5711 5737 5712 #: tpl/toolbox/beta_test.tpl.php: 46 tpl/toolbox/beta_test.tpl.php:625738 #: tpl/toolbox/beta_test.tpl.php:38 tpl/toolbox/beta_test.tpl.php:54 5713 5739 msgid "Use latest WordPress release version" 5714 5740 msgstr "" 5715 5741 5716 #: tpl/toolbox/beta_test.tpl.php: 465742 #: tpl/toolbox/beta_test.tpl.php:38 5717 5743 msgid "OR" 5718 5744 msgstr "" 5719 5745 5720 #: tpl/toolbox/beta_test.tpl.php: 575746 #: tpl/toolbox/beta_test.tpl.php:49 5721 5747 msgid "" 5722 5748 "Downgrade not recommended. May cause fatal error due to refactored code." 5723 5749 msgstr "" 5724 5750 5725 #: tpl/toolbox/beta_test.tpl.php: 615751 #: tpl/toolbox/beta_test.tpl.php:53 5726 5752 msgid "" 5727 5753 "Press the %s button to use the most recent GitHub commit. Master is for " … … 5729 5755 msgstr "" 5730 5756 5731 #: tpl/toolbox/beta_test.tpl.php: 615757 #: tpl/toolbox/beta_test.tpl.php:53 5732 5758 msgid "Use latest GitHub Dev/Master commit" 5733 5759 msgstr "" 5734 5760 5735 #: tpl/toolbox/beta_test.tpl.php: 625761 #: tpl/toolbox/beta_test.tpl.php:54 5736 5762 msgid "" 5737 5763 "Press the %s button to stop beta testing and go back to the current release " … … 5739 5765 msgstr "" 5740 5766 5741 #: tpl/toolbox/beta_test.tpl.php: 675767 #: tpl/toolbox/beta_test.tpl.php:59 5742 5768 msgid "" 5743 5769 "In order to avoid an upgrade error, you must be using %1$s or later before " -
litespeed-cache/trunk/litespeed-cache.php
r2940517 r2954001 5 5 * Plugin URI: https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration 6 6 * Description: High-performance page caching and site optimization from LiteSpeed 7 * Version: 5. 5.17 * Version: 5.6 8 8 * Author: LiteSpeed Technologies 9 9 * Author URI: https://www.litespeedtech.com … … 35 35 } 36 36 37 !defined('LSCWP_V') && define('LSCWP_V', '5. 5.1');37 !defined('LSCWP_V') && define('LSCWP_V', '5.6'); 38 38 39 39 !defined('LSCWP_CONTENT_DIR') && define('LSCWP_CONTENT_DIR', WP_CONTENT_DIR); -
litespeed-cache/trunk/readme.txt
r2940517 r2954001 3 3 Tags: caching, optimize, performance, pagespeed, core web vitals, seo, speed, image optimize, compress, object cache, redis, memcached, database cleaner 4 4 Requires at least: 4.0 5 Tested up to: 6. 2.26 Stable tag: 5. 5.15 Tested up to: 6.3 6 Stable tag: 5.6 7 7 License: GPLv3 8 8 License URI: http://www.gnu.org/licenses/gpl.html … … 250 250 251 251 == Changelog == 252 253 = 5.6 - Aug 15 2023 = 254 * 🌱**Page Optimize** New JS Delay Includes option. (Mitchell Krog/Gerard Reches/Ignacy Hołoga) 255 * **Crawler** Sitemap can use search for URL now. 256 * **GUI** Restrict the scope of balloon CSS rules to avoid conflicts. (#567) 257 * **Object Cache** Detect Memcached in more situations. (#568) 258 * **API** Support `litespeed_purged_front` hook. (Umberto Fiorelli) 252 259 253 260 = 5.5.1 - Jul 19 2023 = -
litespeed-cache/trunk/src/base.cls.php
r2808204 r2954001 1 1 <?php 2 2 3 /** 3 4 * The base consts … … 5 6 * @since 3.7 6 7 */ 8 7 9 namespace LiteSpeed; 8 10 9 defined( 'WPINC' ) || exit; 10 11 class Base extends Root { 11 defined('WPINC') || exit; 12 13 class Base extends Root 14 { 12 15 // This is redundant since v3.0 13 16 // New conf items are `litespeed.key` … … 133 136 const O_OPTM_JS_COMB = 'optm-js_comb'; 134 137 const O_OPTM_JS_COMB_EXT_INL = 'optm-js_comb_ext_inl'; 138 const O_OPTM_JS_DELAY_INC = 'optm-js_delay_inc'; 135 139 const O_OPTM_JS_EXC = 'optm-js_exc'; 136 140 const O_OPTM_HTML_MIN = 'optm-html_min'; … … 258 262 const O_CDN_QUIC = 'cdn-quic'; 259 263 const O_CDN_CLOUDFLARE = 'cdn-cloudflare'; 260 const O_CDN_CLOUDFLARE_EMAIL = 'cdn-cloudflare_email';264 const O_CDN_CLOUDFLARE_EMAIL = 'cdn-cloudflare_email'; 261 265 const O_CDN_CLOUDFLARE_KEY = 'cdn-cloudflare_key'; 262 266 const O_CDN_CLOUDFLARE_NAME = 'cdn-cloudflare_name'; … … 421 425 self::O_OPTM_JS_COMB => false, 422 426 self::O_OPTM_JS_COMB_EXT_INL => false, 427 self::O_OPTM_JS_DELAY_INC => array(), 423 428 self::O_OPTM_JS_EXC => array(), 424 429 self::O_OPTM_HTML_MIN => false, … … 607 612 * @since 3.0.3 608 613 */ 609 protected function type_casting( $val, $id, $is_site_conf = false ) { 610 $default_v = ! $is_site_conf ? self::$_default_options[ $id ] : self::$_default_site_options[ $id ]; 611 if ( is_bool( $default_v ) ) { 612 if ( $val === 'true' ) { 614 protected function type_casting($val, $id, $is_site_conf = false) 615 { 616 $default_v = !$is_site_conf ? self::$_default_options[$id] : self::$_default_site_options[$id]; 617 if (is_bool($default_v)) { 618 if ($val === 'true') { 613 619 $val = true; 614 620 } 615 if ( $val === 'false') {621 if ($val === 'false') { 616 622 $val = false; 617 623 } 618 624 619 $max = $this->_conf_multi_switch( $id);620 if ( $max) {625 $max = $this->_conf_multi_switch($id); 626 if ($max) { 621 627 $val = (int) $val; 622 628 $val %= $max + 1; 623 } 624 else { 629 } else { 625 630 $val = (bool) $val; 626 631 } 632 } elseif (is_array($default_v)) { 633 // from textarea input 634 if (!is_array($val)) { 635 $val = Utility::sanitize_lines($val, $this->_conf_filter($id)); 636 } 637 } elseif (!is_string($default_v)) { 638 $val = (int) $val; 639 } else { 640 // Check if the string has a limit set 641 $val = $this->_conf_string_val($id, $val); 627 642 } 628 elseif ( is_array( $default_v ) ) { 629 // from textarea input 630 if ( ! is_array( $val ) ) { 631 $val = Utility::sanitize_lines( $val, $this->_conf_filter( $id ) ); 643 644 return $val; 645 } 646 647 /** 648 * Load default network settings from data.ini 649 * 650 * @since 3.0 651 */ 652 public function load_default_site_vals() 653 { 654 // Load network_default.ini 655 if (file_exists(LSCWP_DIR . 'data/const.network_default.ini')) { 656 $default_ini_cfg = parse_ini_file(LSCWP_DIR . 'data/const.network_default.ini', true); 657 foreach (self::$_default_site_options as $k => $v) { 658 if (!array_key_exists($k, $default_ini_cfg)) { 659 continue; 660 } 661 662 // Parse value in ini file 663 $ini_v = $this->type_casting($default_ini_cfg[$k], $k, true); 664 665 if ($ini_v == $v) { 666 continue; 667 } 668 669 self::$_default_site_options[$k] = $ini_v; 632 670 } 633 671 } 634 elseif ( ! is_string( $default_v ) ) { 635 $val = (int) $val; 636 } 637 else { 638 // Check if the string has a limit set 639 $val = $this->_conf_string_val( $id, $val ); 640 } 641 642 return $val; 643 } 644 645 /** 646 * Load default network settings from data.ini 647 * 648 * @since 3.0 649 */ 650 public function load_default_site_vals() { 651 // Load network_default.ini 652 if ( file_exists( LSCWP_DIR . 'data/const.network_default.ini' ) ) { 653 $default_ini_cfg = parse_ini_file( LSCWP_DIR . 'data/const.network_default.ini', true ); 654 foreach ( self::$_default_site_options as $k => $v ) { 655 if ( ! array_key_exists( $k, $default_ini_cfg ) ) { 672 673 self::$_default_site_options[self::_VER] = Core::VER; 674 675 return self::$_default_site_options; 676 } 677 678 /** 679 * Load default values from default.ini 680 * 681 * @since 3.0 682 * @access public 683 */ 684 public function load_default_vals() 685 { 686 // Load default.ini 687 if (file_exists(LSCWP_DIR . 'data/const.default.ini')) { 688 $default_ini_cfg = parse_ini_file(LSCWP_DIR . 'data/const.default.ini', true); 689 foreach (self::$_default_options as $k => $v) { 690 if (!array_key_exists($k, $default_ini_cfg)) { 656 691 continue; 657 692 } 658 693 659 694 // Parse value in ini file 660 $ini_v = $this->type_casting( $default_ini_cfg[ $k ], $k, true ); 661 662 if ( $ini_v == $v ) { 663 continue; 664 } 665 666 self::$_default_site_options[ $k ] = $ini_v; 667 668 } 669 } 670 671 self::$_default_site_options[ self::_VER ] = Core::VER; 672 673 return self::$_default_site_options; 674 } 675 676 /** 677 * Load default values from default.ini 678 * 679 * @since 3.0 680 * @access public 681 */ 682 public function load_default_vals() { 683 // Load default.ini 684 if ( file_exists( LSCWP_DIR . 'data/const.default.ini' ) ) { 685 $default_ini_cfg = parse_ini_file( LSCWP_DIR . 'data/const.default.ini', true ); 686 foreach ( self::$_default_options as $k => $v ) { 687 if ( ! array_key_exists( $k, $default_ini_cfg ) ) { 688 continue; 689 } 690 691 // Parse value in ini file 692 $ini_v = $this->type_casting( $default_ini_cfg[ $k ], $k ); 695 $ini_v = $this->type_casting($default_ini_cfg[$k], $k); 693 696 694 697 // NOTE: Multiple lines value must be stored as array … … 707 710 * [0] = [ 'url' => 'https://example.com', 'inc_js' => true, 'filetype' => [ '.css', '.js', '.jpg' ] ] 708 711 */ 709 if ( $k == self::O_CDN_MAPPING) {712 if ($k == self::O_CDN_MAPPING) { 710 713 $mapping_fields = array( 711 714 self::CDN_MAPPING_URL, … … 716 719 ); 717 720 $ini_v2 = array(); 718 foreach ( $ini_v[ self::CDN_MAPPING_URL ] as $k2 => $v2 ) {// $k2 is numeric721 foreach ($ini_v[self::CDN_MAPPING_URL] as $k2 => $v2) { // $k2 is numeric 719 722 $this_row = array(); 720 foreach ( $mapping_fields as $v3) {721 $this_v = ! empty( $ini_v[ $v3 ][ $k2 ] ) ? $ini_v[ $v3 ][ $k2] : false;722 if ( $v3 == self::CDN_MAPPING_URL) {723 $this_v = $this_v ? : '';723 foreach ($mapping_fields as $v3) { 724 $this_v = !empty($ini_v[$v3][$k2]) ? $ini_v[$v3][$k2] : false; 725 if ($v3 == self::CDN_MAPPING_URL) { 726 $this_v = $this_v ?: ''; 724 727 } 725 if ( $v3 == self::CDN_MAPPING_FILETYPE) {726 $this_v = $this_v ? Utility::sanitize_lines( $this_v) : array(); // Note: Since v3.0 its already an array728 if ($v3 == self::CDN_MAPPING_FILETYPE) { 729 $this_v = $this_v ? Utility::sanitize_lines($this_v) : array(); // Note: Since v3.0 its already an array 727 730 } 728 $this_row[ $v3] = $this_v;731 $this_row[$v3] = $this_v; 729 732 } 730 $ini_v2[ $k2] = $this_row;733 $ini_v2[$k2] = $this_row; 731 734 } 732 735 $ini_v = $ini_v2; 733 736 } 734 737 735 if ( $ini_v == $v) {738 if ($ini_v == $v) { 736 739 continue; 737 740 } 738 741 739 self::$_default_options[ $k] = $ini_v;742 self::$_default_options[$k] = $ini_v; 740 743 } 741 742 744 } 743 745 744 746 // Load internal default vals 745 747 // Setting the default bool to int is also to avoid type casting override it back to bool 746 self::$_default_options[ self::O_CACHE] = is_multisite() ? self::VAL_ON2 : self::VAL_ON; //For multi site, default is 2 (Use Network Admin Settings). For single site, default is 1 (Enabled).748 self::$_default_options[self::O_CACHE] = is_multisite() ? self::VAL_ON2 : self::VAL_ON; //For multi site, default is 2 (Use Network Admin Settings). For single site, default is 1 (Enabled). 747 749 748 750 // Load default vals containing variables 749 if ( ! self::$_default_options[ self::O_CDN_ORI_DIR ]) {750 self::$_default_options[ self::O_CDN_ORI_DIR] = LSCWP_CONTENT_FOLDER . "\nwp-includes";751 self::$_default_options[ self::O_CDN_ORI_DIR ] = explode( "\n", self::$_default_options[ self::O_CDN_ORI_DIR ]);752 self::$_default_options[ self::O_CDN_ORI_DIR ] = array_map( 'trim', self::$_default_options[ self::O_CDN_ORI_DIR ]);751 if (!self::$_default_options[self::O_CDN_ORI_DIR]) { 752 self::$_default_options[self::O_CDN_ORI_DIR] = LSCWP_CONTENT_FOLDER . "\nwp-includes"; 753 self::$_default_options[self::O_CDN_ORI_DIR] = explode("\n", self::$_default_options[self::O_CDN_ORI_DIR]); 754 self::$_default_options[self::O_CDN_ORI_DIR] = array_map('trim', self::$_default_options[self::O_CDN_ORI_DIR]); 753 755 } 754 756 755 757 // Set security key if not initialized yet 756 if ( ! self::$_default_options[ self::HASH ]) {757 self::$_default_options[ self::HASH ] = Str::rrand( 32);758 if (!self::$_default_options[self::HASH]) { 759 self::$_default_options[self::HASH] = Str::rrand(32); 758 760 } 759 761 760 self::$_default_options[ self::_VER] = Core::VER;762 self::$_default_options[self::_VER] = Core::VER; 761 763 762 764 return self::$_default_options; … … 768 770 * @since 3.0 769 771 */ 770 protected function _conf_string_val( $id, $val ) { 772 protected function _conf_string_val($id, $val) 773 { 771 774 return $val; 772 775 } … … 777 780 * @since 3.0 778 781 */ 779 protected function _conf_multi_switch( $id ) { 780 if ( ! empty( self::$_multi_switch_list[ $id ] ) ) { 781 return self::$_multi_switch_list[ $id ]; 782 protected function _conf_multi_switch($id) 783 { 784 if (!empty(self::$_multi_switch_list[$id])) { 785 return self::$_multi_switch_list[$id]; 782 786 } 783 787 784 if ( $id == self::O_CACHE && is_multisite()) {788 if ($id == self::O_CACHE && is_multisite()) { 785 789 return self::VAL_ON2; 786 790 } … … 794 798 * @since 3.0 795 799 */ 796 public static function set_multi_switch( $id, $v ) { 797 self::$_multi_switch_list[ $id ] = $v; 800 public static function set_multi_switch($id, $v) 801 { 802 self::$_multi_switch_list[$id] = $v; 798 803 } 799 804 … … 803 808 * @since 3.0 804 809 */ 805 public static function conf_const( $id ) { 806 return 'LITESPEED_CONF__' . strtoupper( str_replace( '-', '__', $id ) ); 810 public static function conf_const($id) 811 { 812 return 'LITESPEED_CONF__' . strtoupper(str_replace('-', '__', $id)); 807 813 } 808 814 … … 812 818 * @since 3.0 813 819 */ 814 protected function _conf_filter( $id ) { 820 protected function _conf_filter($id) 821 { 815 822 $filters = array( 816 823 self::O_MEDIA_LAZY_EXC => 'uri', … … 835 842 ); 836 843 837 if ( ! empty( $filters[ $id ] )) {838 return $filters[ $id];844 if (!empty($filters[$id])) { 845 return $filters[$id]; 839 846 } 840 847 … … 847 854 * @since 3.0 848 855 */ 849 protected function _conf_purge( $id ) { 856 protected function _conf_purge($id) 857 { 850 858 $check_ids = array( 851 859 self::O_MEDIA_LAZY_URI_EXC, … … 858 866 ); 859 867 860 return in_array( $id, $check_ids);868 return in_array($id, $check_ids); 861 869 } 862 870 … … 866 874 * @since 3.0 867 875 */ 868 protected function _conf_purge_all( $id ) { 876 protected function _conf_purge_all($id) 877 { 869 878 $check_ids = array( 870 879 self::O_CACHE, … … 874 883 ); 875 884 876 return in_array( $id, $check_ids);885 return in_array($id, $check_ids); 877 886 } 878 887 … … 882 891 * @since 3.0 883 892 */ 884 protected function _conf_pswd( $id ) { 893 protected function _conf_pswd($id) 894 { 885 895 $check_ids = array( 886 896 self::O_CDN_CLOUDFLARE_KEY, … … 890 900 ); 891 901 892 return in_array( $id, $check_ids);902 return in_array($id, $check_ids); 893 903 } 894 904 … … 898 908 * @since 3.0 899 909 */ 900 protected function _conf_cron( $id ) { 910 protected function _conf_cron($id) 911 { 901 912 $check_ids = array( 902 913 self::O_IMG_OPTM_CRON, … … 908 919 ); 909 920 910 return in_array( $id, $check_ids);921 return in_array($id, $check_ids); 911 922 } 912 923 … … 916 927 * @since 3.0 917 928 */ 918 protected function _conf_purge_tag( $id ) { 929 protected function _conf_purge_tag($id) 930 { 919 931 $check_ids = array( 920 932 self::O_CACHE_PAGE_LOGIN => Tag::TYPE_LOGIN, 921 933 ); 922 934 923 if ( ! empty( $check_ids[ $id ] )) {924 return $check_ids[ $id];935 if (!empty($check_ids[$id])) { 936 return $check_ids[$id]; 925 937 } 926 938 … … 933 945 * @since 2.4.1 934 946 */ 935 public function server_vars() { 947 public function server_vars() 948 { 936 949 $consts = array( 937 950 'WP_SITEURL', … … 951 964 ); 952 965 $server_vars = array(); 953 foreach ( $consts as $v) {954 $server_vars[ $v ] = defined( $v ) ? constant( $v) : NULL;966 foreach ($consts as $v) { 967 $server_vars[$v] = defined($v) ? constant($v) : NULL; 955 968 } 956 969 957 970 return $server_vars; 958 971 } 959 960 972 } -
litespeed-cache/trunk/src/core.cls.php
r2928795 r2954001 626 626 $this->_comment($vary_header); 627 627 } 628 } 629 630 if (defined('LITESPEED_ON') && defined('LSCWP_LOG')) { 631 $vary = $this->cls('Vary')->finalize_full_varies(); 632 if ($vary) $this->_comment('Full varies: ' . $vary); 628 633 } 629 634 -
litespeed-cache/trunk/src/crawler-map.cls.php
r2928795 r2954001 289 289 } 290 290 291 $where = ''; 292 if (!empty($_POST['kw'])) { 293 $q = "SELECT * FROM `$this->_tb` WHERE url LIKE %s ORDER BY id LIMIT %d, %d"; 294 $where = '%' . $wpdb->esc_like($_POST['kw']) . '%'; 295 return $wpdb->get_results($wpdb->prepare($q, $where, $offset, $limit), ARRAY_A); 296 } 291 297 292 298 $q = "SELECT * FROM `$this->_tb` ORDER BY id LIMIT %d, %d"; -
litespeed-cache/trunk/src/lang.cls.php
r2901384 r2954001 1 1 <?php 2 2 3 /** 3 4 * The language class. … … 8 9 * @author LiteSpeed Technologies <[email protected]> 9 10 */ 10 namespace LiteSpeed ; 11 12 defined( 'WPINC' ) || exit ; 13 14 class Lang extends Base { 11 12 namespace LiteSpeed; 13 14 defined('WPINC') || exit; 15 16 class Lang extends Base 17 { 15 18 /** 16 19 * Get image status per status bit … … 18 21 * @since 3.0 19 22 */ 20 public static function img_status( $status = null)23 public static function img_status($status = null) 21 24 { 22 25 $list = array( 23 Img_Optm::STATUS_NEW => __( 'Images not requested', 'litespeed-cache'),24 Img_Optm::STATUS_RAW => __( 'Images ready to request', 'litespeed-cache'),25 Img_Optm::STATUS_REQUESTED => __( 'Images requested', 'litespeed-cache'),26 Img_Optm::STATUS_NOTIFIED => __( 'Images notified to pull', 'litespeed-cache'),27 Img_Optm::STATUS_PULLED => __( 'Images optimized and pulled', 'litespeed-cache'),26 Img_Optm::STATUS_NEW => __('Images not requested', 'litespeed-cache'), 27 Img_Optm::STATUS_RAW => __('Images ready to request', 'litespeed-cache'), 28 Img_Optm::STATUS_REQUESTED => __('Images requested', 'litespeed-cache'), 29 Img_Optm::STATUS_NOTIFIED => __('Images notified to pull', 'litespeed-cache'), 30 Img_Optm::STATUS_PULLED => __('Images optimized and pulled', 'litespeed-cache'), 28 31 ); 29 32 30 if ( $status !== null) {31 return ! empty( $list[ $status ] ) ? $list[ $status] : 'N/A';33 if ($status !== null) { 34 return !empty($list[$status]) ? $list[$status] : 'N/A'; 32 35 } 33 36 … … 40 43 * @since 4.7 41 44 */ 42 public static function maybe_translate( $raw_string ) { 45 public static function maybe_translate($raw_string) 46 { 43 47 $map = array( 44 'auto_alias_failed_cdn' => __( 'Unable to automatically add %1$s as a Domain Alias for main %2$s domain, due to potential CDN conflict.', 'litespeed-cache' ) . ' ' . Doc::learn_more( 'https://quic.cloud/docs/cdn/dns/how-to-setup-domain-alias/', false, false, false, true),48 'auto_alias_failed_cdn' => __('Unable to automatically add %1$s as a Domain Alias for main %2$s domain, due to potential CDN conflict.', 'litespeed-cache') . ' ' . Doc::learn_more('https://quic.cloud/docs/cdn/dns/how-to-setup-domain-alias/', false, false, false, true), 45 49 46 50 'auto_alias_failed_uid' => 47 __( 'Unable to automatically add %1$s as a Domain Alias for main %2$s domain.', 'litespeed-cache') .48 ' ' . __( 'Alias is in use by another QUIC.cloud account.', 'litespeed-cache') .49 ' ' . Doc::learn_more( 'https://quic.cloud/docs/cdn/dns/how-to-setup-domain-alias/', false, false, false, true),51 __('Unable to automatically add %1$s as a Domain Alias for main %2$s domain.', 'litespeed-cache') . 52 ' ' . __('Alias is in use by another QUIC.cloud account.', 'litespeed-cache') . 53 ' ' . Doc::learn_more('https://quic.cloud/docs/cdn/dns/how-to-setup-domain-alias/', false, false, false, true), 50 54 ); 51 55 52 56 // Maybe has placeholder 53 if ( strpos( $raw_string, '::' )) {54 $replacements = explode( '::', $raw_string);55 if ( empty( $map[ $replacements[0] ] )) {57 if (strpos($raw_string, '::')) { 58 $replacements = explode('::', $raw_string); 59 if (empty($map[$replacements[0]])) { 56 60 return $raw_string; 57 61 } 58 $tpl = $map[ $replacements[0]];62 $tpl = $map[$replacements[0]]; 59 63 unset($replacements[0]); 60 return vsprintf( $tpl, array_values( $replacements ));64 return vsprintf($tpl, array_values($replacements)); 61 65 } 62 66 63 67 // Direct translation only 64 if ( empty( $map[ $raw_string ] )) return $raw_string;65 66 return $map[ $raw_string];68 if (empty($map[$raw_string])) return $raw_string; 69 70 return $map[$raw_string]; 67 71 } 68 72 … … 73 77 * @access public 74 78 */ 75 public static function title( $id)79 public static function title($id) 76 80 { 77 81 $_lang_list = array( 78 self::O_SERVER_IP => __( 'Server IP', 'litespeed-cache' ), 79 self::O_API_KEY => __( 'Domain Key', 'litespeed-cache' ), 80 self::O_GUEST_UAS => __( 'Guest Mode User Agents', 'litespeed-cache' ), 81 self::O_GUEST_IPS => __( 'Guest Mode IPs', 'litespeed-cache' ), 82 83 self::O_CACHE => __( 'Enable Cache', 'litespeed-cache' ), 84 self::O_CACHE_BROWSER => __( 'Browser Cache', 'litespeed-cache' ), 85 self::O_CACHE_TTL_PUB => __( 'Default Public Cache TTL', 'litespeed-cache' ), 86 self::O_CACHE_TTL_PRIV => __( 'Default Private Cache TTL', 'litespeed-cache' ), 87 self::O_CACHE_TTL_FRONTPAGE => __( 'Default Front Page TTL', 'litespeed-cache' ), 88 self::O_CACHE_TTL_FEED => __( 'Default Feed TTL', 'litespeed-cache' ), 89 self::O_CACHE_TTL_REST => __( 'Default REST TTL', 'litespeed-cache' ), 90 self::O_CACHE_TTL_STATUS => __( 'Default HTTP Status Code Page TTL', 'litespeed-cache' ), 91 self::O_CACHE_TTL_BROWSER => __( 'Browser Cache TTL', 'litespeed-cache' ), 92 self::O_AUTO_UPGRADE => __( 'Automatically Upgrade', 'litespeed-cache' ), 93 self::O_GUEST => __( 'Guest Mode', 'litespeed-cache' ), 94 self::O_GUEST_OPTM => __( 'Guest Optimization', 'litespeed-cache' ), 95 self::O_NEWS => __( 'Notifications', 'litespeed-cache' ), 96 self::O_CACHE_PRIV => __( 'Cache Logged-in Users', 'litespeed-cache' ), 97 self::O_CACHE_COMMENTER => __( 'Cache Commenters', 'litespeed-cache' ), 98 self::O_CACHE_REST => __( 'Cache REST API', 'litespeed-cache' ), 99 self::O_CACHE_PAGE_LOGIN => __( 'Cache Login Page', 'litespeed-cache' ), 100 self::O_CACHE_FAVICON => __( 'Cache favicon.ico', 'litespeed-cache' ), 101 self::O_CACHE_RES => __( 'Cache PHP Resources', 'litespeed-cache' ), 102 self::O_CACHE_MOBILE => __( 'Cache Mobile', 'litespeed-cache' ), 103 self::O_CACHE_MOBILE_RULES => __( 'List of Mobile User Agents', 'litespeed-cache' ), 104 self::O_CACHE_PRIV_URI => __( 'Private Cached URIs', 'litespeed-cache' ), 105 self::O_CACHE_DROP_QS => __( 'Drop Query String', 'litespeed-cache' ), 106 107 self::O_OBJECT => __( 'Object Cache', 'litespeed-cache' ), 108 self::O_OBJECT_KIND => __( 'Method', 'litespeed-cache' ), 109 self::O_OBJECT_HOST => __( 'Host', 'litespeed-cache' ), 110 self::O_OBJECT_PORT => __( 'Port', 'litespeed-cache' ), 111 self::O_OBJECT_LIFE => __( 'Default Object Lifetime', 'litespeed-cache' ), 112 self::O_OBJECT_USER => __( 'Username', 'litespeed-cache' ), 113 self::O_OBJECT_PSWD => __( 'Password', 'litespeed-cache' ), 114 self::O_OBJECT_DB_ID => __( 'Redis Database ID', 'litespeed-cache' ), 115 self::O_OBJECT_GLOBAL_GROUPS => __( 'Global Groups', 'litespeed-cache' ), 116 self::O_OBJECT_NON_PERSISTENT_GROUPS => __( 'Do Not Cache Groups', 'litespeed-cache' ), 117 self::O_OBJECT_PERSISTENT => __( 'Persistent Connection', 'litespeed-cache' ), 118 self::O_OBJECT_ADMIN => __( 'Cache WP-Admin', 'litespeed-cache' ), 119 self::O_OBJECT_TRANSIENTS => __( 'Store Transients', 'litespeed-cache' ), 120 121 self::O_PURGE_ON_UPGRADE => __( 'Purge All On Upgrade', 'litespeed-cache' ), 122 self::O_PURGE_STALE => __( 'Serve Stale', 'litespeed-cache' ), 123 self::O_PURGE_TIMED_URLS => __( 'Scheduled Purge URLs', 'litespeed-cache' ), 124 self::O_PURGE_TIMED_URLS_TIME => __( 'Scheduled Purge Time', 'litespeed-cache' ), 125 self::O_CACHE_FORCE_URI => __( 'Force Cache URIs', 'litespeed-cache' ), 126 self::O_CACHE_FORCE_PUB_URI => __( 'Force Public Cache URIs', 'litespeed-cache' ), 127 self::O_CACHE_EXC => __( 'Do Not Cache URIs', 'litespeed-cache' ), 128 self::O_CACHE_EXC_QS => __( 'Do Not Cache Query Strings', 'litespeed-cache' ), 129 self::O_CACHE_EXC_CAT => __( 'Do Not Cache Categories', 'litespeed-cache' ), 130 self::O_CACHE_EXC_TAG => __( 'Do Not Cache Tags', 'litespeed-cache' ), 131 self::O_CACHE_EXC_ROLES => __( 'Do Not Cache Roles', 'litespeed-cache' ), 132 self::O_OPTM_CSS_MIN => __( 'CSS Minify', 'litespeed-cache' ), 133 self::O_OPTM_CSS_COMB => __( 'CSS Combine', 'litespeed-cache' ), 134 self::O_OPTM_CSS_COMB_EXT_INL => __( 'CSS Combine External and Inline', 'litespeed-cache' ), 135 self::O_OPTM_UCSS => __( 'Generate UCSS', 'litespeed-cache' ), 136 self::O_OPTM_UCSS_INLINE => __( 'UCSS Inline', 'litespeed-cache' ), 137 self::O_OPTM_UCSS_SELECTOR_WHITELIST => __( 'UCSS Selector Allowlist', 'litespeed-cache' ), 138 self::O_OPTM_UCSS_FILE_EXC_INLINE => __( 'UCSS File Excludes and Inline', 'litespeed-cache' ), 139 self::O_OPTM_UCSS_EXC => __( 'UCSS URI Excludes', 'litespeed-cache' ), 140 self::O_OPTM_JS_MIN => __( 'JS Minify', 'litespeed-cache' ), 141 self::O_OPTM_JS_COMB => __( 'JS Combine', 'litespeed-cache' ), 142 self::O_OPTM_JS_COMB_EXT_INL => __( 'JS Combine External and Inline', 'litespeed-cache' ), 143 self::O_OPTM_HTML_MIN => __( 'HTML Minify', 'litespeed-cache' ), 144 self::O_OPTM_HTML_LAZY => __( 'HTML Lazy Load Selectors', 'litespeed-cache' ), 145 self::O_OPTM_CSS_ASYNC => __( 'Load CSS Asynchronously', 'litespeed-cache' ), 146 self::O_OPTM_CCSS_PER_URL => __( 'CCSS Per URL', 'litespeed-cache' ), 147 self::O_OPTM_CSS_ASYNC_INLINE => __( 'Inline CSS Async Lib', 'litespeed-cache' ), 148 self::O_OPTM_CSS_FONT_DISPLAY => __( 'Font Display Optimization', 'litespeed-cache' ), 149 self::O_OPTM_JS_DEFER => __( 'Load JS Deferred', 'litespeed-cache' ), 150 self::O_OPTM_LOCALIZE => __( 'Localize Resources', 'litespeed-cache' ), 151 self::O_OPTM_LOCALIZE_DOMAINS => __( 'Localization Files', 'litespeed-cache' ), 152 self::O_OPTM_DNS_PREFETCH => __( 'DNS Prefetch', 'litespeed-cache' ), 153 self::O_OPTM_DNS_PREFETCH_CTRL => __( 'DNS Prefetch Control', 'litespeed-cache' ), 154 self::O_OPTM_CSS_EXC => __( 'CSS Excludes', 'litespeed-cache' ), 155 self::O_OPTM_JS_EXC => __( 'JS Excludes', 'litespeed-cache' ), 156 self::O_OPTM_QS_RM => __( 'Remove Query Strings', 'litespeed-cache' ), 157 self::O_OPTM_GGFONTS_ASYNC => __( 'Load Google Fonts Asynchronously', 'litespeed-cache' ), 158 self::O_OPTM_GGFONTS_RM => __( 'Remove Google Fonts', 'litespeed-cache' ), 159 self::O_OPTM_CCSS_CON => __( 'Critical CSS Rules', 'litespeed-cache' ), 160 self::O_OPTM_CCSS_SEP_POSTTYPE => __( 'Separate CCSS Cache Post Types', 'litespeed-cache' ), 161 self::O_OPTM_CCSS_SEP_URI => __( 'Separate CCSS Cache URIs', 'litespeed-cache' ), 162 self::O_OPTM_JS_DEFER_EXC => __( 'JS Deferred / Delayed Excludes', 'litespeed-cache' ), 163 self::O_OPTM_GM_JS_EXC => __( 'Guest Mode JS Excludes', 'litespeed-cache' ), 164 self::O_OPTM_EMOJI_RM => __( 'Remove WordPress Emoji', 'litespeed-cache' ), 165 self::O_OPTM_NOSCRIPT_RM => __( 'Remove Noscript Tags', 'litespeed-cache' ), 166 self::O_OPTM_EXC => __( 'URI Excludes', 'litespeed-cache' ), 167 self::O_OPTM_GUEST_ONLY => __( 'Optimize for Guests Only', 'litespeed-cache' ), 168 self::O_OPTM_EXC_ROLES => __( 'Role Excludes', 'litespeed-cache' ), 169 170 self::O_DISCUSS_AVATAR_CACHE => __( 'Gravatar Cache', 'litespeed-cache' ), 171 self::O_DISCUSS_AVATAR_CRON => __( 'Gravatar Cache Cron', 'litespeed-cache' ), 172 self::O_DISCUSS_AVATAR_CACHE_TTL => __( 'Gravatar Cache TTL', 'litespeed-cache' ), 173 174 self::O_MEDIA_LAZY => __( 'Lazy Load Images', 'litespeed-cache' ), 175 self::O_MEDIA_LAZY_EXC => __( 'Lazy Load Image Excludes', 'litespeed-cache' ), 176 self::O_MEDIA_LAZY_CLS_EXC => __( 'Lazy Load Image Class Name Excludes', 'litespeed-cache' ), 177 self::O_MEDIA_LAZY_PARENT_CLS_EXC => __( 'Lazy Load Image Parent Class Name Excludes', 'litespeed-cache' ), 178 self::O_MEDIA_IFRAME_LAZY_CLS_EXC => __( 'Lazy Load Iframe Class Name Excludes', 'litespeed-cache' ), 179 self::O_MEDIA_IFRAME_LAZY_PARENT_CLS_EXC => __( 'Lazy Load Iframe Parent Class Name Excludes', 'litespeed-cache' ), 180 self::O_MEDIA_LAZY_URI_EXC => __( 'Lazy Load URI Excludes', 'litespeed-cache' ), 181 self::O_MEDIA_LQIP_EXC => __( 'LQIP Excludes', 'litespeed-cache' ), 182 self::O_MEDIA_LAZY_PLACEHOLDER => __( 'Basic Image Placeholder', 'litespeed-cache' ), 183 self::O_MEDIA_PLACEHOLDER_RESP => __( 'Responsive Placeholder', 'litespeed-cache' ), 184 self::O_MEDIA_PLACEHOLDER_RESP_COLOR => __( 'Responsive Placeholder Color', 'litespeed-cache' ), 185 self::O_MEDIA_PLACEHOLDER_RESP_SVG => __( 'Responsive Placeholder SVG', 'litespeed-cache' ), 186 self::O_MEDIA_LQIP => __( 'LQIP Cloud Generator', 'litespeed-cache' ), 187 self::O_MEDIA_LQIP_QUAL => __( 'LQIP Quality', 'litespeed-cache' ), 188 self::O_MEDIA_LQIP_MIN_W => __( 'LQIP Minimum Dimensions', 'litespeed-cache' ), 82 self::O_SERVER_IP => __('Server IP', 'litespeed-cache'), 83 self::O_API_KEY => __('Domain Key', 'litespeed-cache'), 84 self::O_GUEST_UAS => __('Guest Mode User Agents', 'litespeed-cache'), 85 self::O_GUEST_IPS => __('Guest Mode IPs', 'litespeed-cache'), 86 87 self::O_CACHE => __('Enable Cache', 'litespeed-cache'), 88 self::O_CACHE_BROWSER => __('Browser Cache', 'litespeed-cache'), 89 self::O_CACHE_TTL_PUB => __('Default Public Cache TTL', 'litespeed-cache'), 90 self::O_CACHE_TTL_PRIV => __('Default Private Cache TTL', 'litespeed-cache'), 91 self::O_CACHE_TTL_FRONTPAGE => __('Default Front Page TTL', 'litespeed-cache'), 92 self::O_CACHE_TTL_FEED => __('Default Feed TTL', 'litespeed-cache'), 93 self::O_CACHE_TTL_REST => __('Default REST TTL', 'litespeed-cache'), 94 self::O_CACHE_TTL_STATUS => __('Default HTTP Status Code Page TTL', 'litespeed-cache'), 95 self::O_CACHE_TTL_BROWSER => __('Browser Cache TTL', 'litespeed-cache'), 96 self::O_AUTO_UPGRADE => __('Automatically Upgrade', 'litespeed-cache'), 97 self::O_GUEST => __('Guest Mode', 'litespeed-cache'), 98 self::O_GUEST_OPTM => __('Guest Optimization', 'litespeed-cache'), 99 self::O_NEWS => __('Notifications', 'litespeed-cache'), 100 self::O_CACHE_PRIV => __('Cache Logged-in Users', 'litespeed-cache'), 101 self::O_CACHE_COMMENTER => __('Cache Commenters', 'litespeed-cache'), 102 self::O_CACHE_REST => __('Cache REST API', 'litespeed-cache'), 103 self::O_CACHE_PAGE_LOGIN => __('Cache Login Page', 'litespeed-cache'), 104 self::O_CACHE_FAVICON => __('Cache favicon.ico', 'litespeed-cache'), 105 self::O_CACHE_RES => __('Cache PHP Resources', 'litespeed-cache'), 106 self::O_CACHE_MOBILE => __('Cache Mobile', 'litespeed-cache'), 107 self::O_CACHE_MOBILE_RULES => __('List of Mobile User Agents', 'litespeed-cache'), 108 self::O_CACHE_PRIV_URI => __('Private Cached URIs', 'litespeed-cache'), 109 self::O_CACHE_DROP_QS => __('Drop Query String', 'litespeed-cache'), 110 111 self::O_OBJECT => __('Object Cache', 'litespeed-cache'), 112 self::O_OBJECT_KIND => __('Method', 'litespeed-cache'), 113 self::O_OBJECT_HOST => __('Host', 'litespeed-cache'), 114 self::O_OBJECT_PORT => __('Port', 'litespeed-cache'), 115 self::O_OBJECT_LIFE => __('Default Object Lifetime', 'litespeed-cache'), 116 self::O_OBJECT_USER => __('Username', 'litespeed-cache'), 117 self::O_OBJECT_PSWD => __('Password', 'litespeed-cache'), 118 self::O_OBJECT_DB_ID => __('Redis Database ID', 'litespeed-cache'), 119 self::O_OBJECT_GLOBAL_GROUPS => __('Global Groups', 'litespeed-cache'), 120 self::O_OBJECT_NON_PERSISTENT_GROUPS => __('Do Not Cache Groups', 'litespeed-cache'), 121 self::O_OBJECT_PERSISTENT => __('Persistent Connection', 'litespeed-cache'), 122 self::O_OBJECT_ADMIN => __('Cache WP-Admin', 'litespeed-cache'), 123 self::O_OBJECT_TRANSIENTS => __('Store Transients', 'litespeed-cache'), 124 125 self::O_PURGE_ON_UPGRADE => __('Purge All On Upgrade', 'litespeed-cache'), 126 self::O_PURGE_STALE => __('Serve Stale', 'litespeed-cache'), 127 self::O_PURGE_TIMED_URLS => __('Scheduled Purge URLs', 'litespeed-cache'), 128 self::O_PURGE_TIMED_URLS_TIME => __('Scheduled Purge Time', 'litespeed-cache'), 129 self::O_CACHE_FORCE_URI => __('Force Cache URIs', 'litespeed-cache'), 130 self::O_CACHE_FORCE_PUB_URI => __('Force Public Cache URIs', 'litespeed-cache'), 131 self::O_CACHE_EXC => __('Do Not Cache URIs', 'litespeed-cache'), 132 self::O_CACHE_EXC_QS => __('Do Not Cache Query Strings', 'litespeed-cache'), 133 self::O_CACHE_EXC_CAT => __('Do Not Cache Categories', 'litespeed-cache'), 134 self::O_CACHE_EXC_TAG => __('Do Not Cache Tags', 'litespeed-cache'), 135 self::O_CACHE_EXC_ROLES => __('Do Not Cache Roles', 'litespeed-cache'), 136 self::O_OPTM_CSS_MIN => __('CSS Minify', 'litespeed-cache'), 137 self::O_OPTM_CSS_COMB => __('CSS Combine', 'litespeed-cache'), 138 self::O_OPTM_CSS_COMB_EXT_INL => __('CSS Combine External and Inline', 'litespeed-cache'), 139 self::O_OPTM_UCSS => __('Generate UCSS', 'litespeed-cache'), 140 self::O_OPTM_UCSS_INLINE => __('UCSS Inline', 'litespeed-cache'), 141 self::O_OPTM_UCSS_SELECTOR_WHITELIST => __('UCSS Selector Allowlist', 'litespeed-cache'), 142 self::O_OPTM_UCSS_FILE_EXC_INLINE => __('UCSS File Excludes and Inline', 'litespeed-cache'), 143 self::O_OPTM_UCSS_EXC => __('UCSS URI Excludes', 'litespeed-cache'), 144 self::O_OPTM_JS_MIN => __('JS Minify', 'litespeed-cache'), 145 self::O_OPTM_JS_COMB => __('JS Combine', 'litespeed-cache'), 146 self::O_OPTM_JS_COMB_EXT_INL => __('JS Combine External and Inline', 'litespeed-cache'), 147 self::O_OPTM_HTML_MIN => __('HTML Minify', 'litespeed-cache'), 148 self::O_OPTM_HTML_LAZY => __('HTML Lazy Load Selectors', 'litespeed-cache'), 149 self::O_OPTM_CSS_ASYNC => __('Load CSS Asynchronously', 'litespeed-cache'), 150 self::O_OPTM_CCSS_PER_URL => __('CCSS Per URL', 'litespeed-cache'), 151 self::O_OPTM_CSS_ASYNC_INLINE => __('Inline CSS Async Lib', 'litespeed-cache'), 152 self::O_OPTM_CSS_FONT_DISPLAY => __('Font Display Optimization', 'litespeed-cache'), 153 self::O_OPTM_JS_DEFER => __('Load JS Deferred', 'litespeed-cache'), 154 self::O_OPTM_LOCALIZE => __('Localize Resources', 'litespeed-cache'), 155 self::O_OPTM_LOCALIZE_DOMAINS => __('Localization Files', 'litespeed-cache'), 156 self::O_OPTM_DNS_PREFETCH => __('DNS Prefetch', 'litespeed-cache'), 157 self::O_OPTM_DNS_PREFETCH_CTRL => __('DNS Prefetch Control', 'litespeed-cache'), 158 self::O_OPTM_CSS_EXC => __('CSS Excludes', 'litespeed-cache'), 159 self::O_OPTM_JS_DELAY_INC => __('JS Delayed Includes', 'litespeed-cache'), 160 self::O_OPTM_JS_EXC => __('JS Excludes', 'litespeed-cache'), 161 self::O_OPTM_QS_RM => __('Remove Query Strings', 'litespeed-cache'), 162 self::O_OPTM_GGFONTS_ASYNC => __('Load Google Fonts Asynchronously', 'litespeed-cache'), 163 self::O_OPTM_GGFONTS_RM => __('Remove Google Fonts', 'litespeed-cache'), 164 self::O_OPTM_CCSS_CON => __('Critical CSS Rules', 'litespeed-cache'), 165 self::O_OPTM_CCSS_SEP_POSTTYPE => __('Separate CCSS Cache Post Types', 'litespeed-cache'), 166 self::O_OPTM_CCSS_SEP_URI => __('Separate CCSS Cache URIs', 'litespeed-cache'), 167 self::O_OPTM_JS_DEFER_EXC => __('JS Deferred / Delayed Excludes', 'litespeed-cache'), 168 self::O_OPTM_GM_JS_EXC => __('Guest Mode JS Excludes', 'litespeed-cache'), 169 self::O_OPTM_EMOJI_RM => __('Remove WordPress Emoji', 'litespeed-cache'), 170 self::O_OPTM_NOSCRIPT_RM => __('Remove Noscript Tags', 'litespeed-cache'), 171 self::O_OPTM_EXC => __('URI Excludes', 'litespeed-cache'), 172 self::O_OPTM_GUEST_ONLY => __('Optimize for Guests Only', 'litespeed-cache'), 173 self::O_OPTM_EXC_ROLES => __('Role Excludes', 'litespeed-cache'), 174 175 self::O_DISCUSS_AVATAR_CACHE => __('Gravatar Cache', 'litespeed-cache'), 176 self::O_DISCUSS_AVATAR_CRON => __('Gravatar Cache Cron', 'litespeed-cache'), 177 self::O_DISCUSS_AVATAR_CACHE_TTL => __('Gravatar Cache TTL', 'litespeed-cache'), 178 179 self::O_MEDIA_LAZY => __('Lazy Load Images', 'litespeed-cache'), 180 self::O_MEDIA_LAZY_EXC => __('Lazy Load Image Excludes', 'litespeed-cache'), 181 self::O_MEDIA_LAZY_CLS_EXC => __('Lazy Load Image Class Name Excludes', 'litespeed-cache'), 182 self::O_MEDIA_LAZY_PARENT_CLS_EXC => __('Lazy Load Image Parent Class Name Excludes', 'litespeed-cache'), 183 self::O_MEDIA_IFRAME_LAZY_CLS_EXC => __('Lazy Load Iframe Class Name Excludes', 'litespeed-cache'), 184 self::O_MEDIA_IFRAME_LAZY_PARENT_CLS_EXC => __('Lazy Load Iframe Parent Class Name Excludes', 'litespeed-cache'), 185 self::O_MEDIA_LAZY_URI_EXC => __('Lazy Load URI Excludes', 'litespeed-cache'), 186 self::O_MEDIA_LQIP_EXC => __('LQIP Excludes', 'litespeed-cache'), 187 self::O_MEDIA_LAZY_PLACEHOLDER => __('Basic Image Placeholder', 'litespeed-cache'), 188 self::O_MEDIA_PLACEHOLDER_RESP => __('Responsive Placeholder', 'litespeed-cache'), 189 self::O_MEDIA_PLACEHOLDER_RESP_COLOR => __('Responsive Placeholder Color', 'litespeed-cache'), 190 self::O_MEDIA_PLACEHOLDER_RESP_SVG => __('Responsive Placeholder SVG', 'litespeed-cache'), 191 self::O_MEDIA_LQIP => __('LQIP Cloud Generator', 'litespeed-cache'), 192 self::O_MEDIA_LQIP_QUAL => __('LQIP Quality', 'litespeed-cache'), 193 self::O_MEDIA_LQIP_MIN_W => __('LQIP Minimum Dimensions', 'litespeed-cache'), 189 194 // self::O_MEDIA_LQIP_MIN_H => __( 'LQIP Minimum Height', 'litespeed-cache' ), 190 self::O_MEDIA_PLACEHOLDER_RESP_ASYNC => __( 'Generate LQIP In Background', 'litespeed-cache'),191 self::O_MEDIA_IFRAME_LAZY => __( 'Lazy Load Iframes', 'litespeed-cache'),192 self::O_MEDIA_ADD_MISSING_SIZES => __( 'Add Missing Sizes', 'litespeed-cache'),193 self::O_MEDIA_VPI => __( 'Viewport Images', 'litespeed-cache'),194 self::O_MEDIA_VPI_CRON => __( 'Viewport Images Cron', 'litespeed-cache'),195 196 self::O_IMG_OPTM_AUTO => __( 'Auto Request Cron', 'litespeed-cache'),197 self::O_IMG_OPTM_CRON => __( 'Auto Pull Cron', 'litespeed-cache'),198 self::O_IMG_OPTM_ORI => __( 'Optimize Original Images', 'litespeed-cache'),199 self::O_IMG_OPTM_RM_BKUP => __( 'Remove Original Backups', 'litespeed-cache'),200 self::O_IMG_OPTM_WEBP => __( 'Image WebP Replacement', 'litespeed-cache'),201 self::O_IMG_OPTM_LOSSLESS => __( 'Optimize Losslessly', 'litespeed-cache'),202 self::O_IMG_OPTM_EXIF => __( 'Preserve EXIF/XMP data', 'litespeed-cache'),203 self::O_IMG_OPTM_WEBP_ATTR => __( 'WebP Attribute To Replace', 'litespeed-cache'),204 self::O_IMG_OPTM_WEBP_REPLACE_SRCSET => __( 'WebP For Extra srcset', 'litespeed-cache'),205 self::O_IMG_OPTM_JPG_QUALITY => __( 'WordPress Image Quality Control', 'litespeed-cache'),206 self::O_ESI => __( 'Enable ESI', 'litespeed-cache'),207 self::O_ESI_CACHE_ADMBAR => __( 'Cache Admin Bar', 'litespeed-cache'),208 self::O_ESI_CACHE_COMMFORM => __( 'Cache Comment Form', 'litespeed-cache'),209 self::O_ESI_NONCE => __( 'ESI Nonces', 'litespeed-cache'),210 self::O_CACHE_VARY_GROUP => __( 'Vary Group', 'litespeed-cache'),211 self::O_PURGE_HOOK_ALL => __( 'Purge All Hooks', 'litespeed-cache'),212 self::O_UTIL_NO_HTTPS_VARY => __( 'Improve HTTP/HTTPS Compatibility', 'litespeed-cache'),213 self::O_UTIL_INSTANT_CLICK => __( 'Instant Click', 'litespeed-cache'),214 self::O_CACHE_EXC_COOKIES => __( 'Do Not Cache Cookies', 'litespeed-cache'),215 self::O_CACHE_EXC_USERAGENTS => __( 'Do Not Cache User Agents', 'litespeed-cache'),216 self::O_CACHE_LOGIN_COOKIE => __( 'Login Cookie', 'litespeed-cache'),217 218 self::O_MISC_HEARTBEAT_FRONT => __( 'Frontend Heartbeat Control', 'litespeed-cache'),219 self::O_MISC_HEARTBEAT_FRONT_TTL => __( 'Frontend Heartbeat TTL', 'litespeed-cache'),220 self::O_MISC_HEARTBEAT_BACK => __( 'Backend Heartbeat Control', 'litespeed-cache'),221 self::O_MISC_HEARTBEAT_BACK_TTL => __( 'Backend Heartbeat TTL', 'litespeed-cache'),222 self::O_MISC_HEARTBEAT_EDITOR => __( 'Editor Heartbeat', 'litespeed-cache'),223 self::O_MISC_HEARTBEAT_EDITOR_TTL => __( 'Editor Heartbeat TTL', 'litespeed-cache'),224 225 self::O_CDN_QUIC => __( 'QUIC.cloud CDN', 'litespeed-cache'),226 self::O_CDN => __( 'Use CDN Mapping', 'litespeed-cache'),227 self::CDN_MAPPING_URL => __( 'CDN URL', 'litespeed-cache'),228 self::CDN_MAPPING_INC_IMG => __( 'Include Images', 'litespeed-cache'),229 self::CDN_MAPPING_INC_CSS => __( 'Include CSS', 'litespeed-cache'),230 self::CDN_MAPPING_INC_JS => __( 'Include JS', 'litespeed-cache'),231 self::CDN_MAPPING_FILETYPE => __( 'Include File Types', 'litespeed-cache'),232 self::O_CDN_ATTR => __( 'HTML Attribute To Replace', 'litespeed-cache'),233 self::O_CDN_ORI => __( 'Original URLs', 'litespeed-cache'),234 self::O_CDN_ORI_DIR => __( 'Included Directories', 'litespeed-cache'),235 self::O_CDN_EXC => __( 'Exclude Path', 'litespeed-cache'),236 self::O_CDN_CLOUDFLARE => __( 'Cloudflare API', 'litespeed-cache'),237 238 self::O_CRAWLER => __( 'Crawler', 'litespeed-cache'),239 self::O_CRAWLER_USLEEP => __( 'Delay', 'litespeed-cache'),240 self::O_CRAWLER_RUN_DURATION => __( 'Run Duration', 'litespeed-cache'),241 self::O_CRAWLER_RUN_INTERVAL => __( 'Interval Between Runs', 'litespeed-cache'),242 self::O_CRAWLER_CRAWL_INTERVAL => __( 'Crawl Interval', 'litespeed-cache'),243 self::O_CRAWLER_THREADS => __( 'Threads', 'litespeed-cache'),244 self::O_CRAWLER_TIMEOUT => __( 'Timeout', 'litespeed-cache'),245 self::O_CRAWLER_LOAD_LIMIT => __( 'Server Load Limit', 'litespeed-cache'),246 self::O_CRAWLER_ROLES => __( 'Role Simulation', 'litespeed-cache'),247 self::O_CRAWLER_COOKIES => __( 'Cookie Simulation', 'litespeed-cache'),248 self::O_CRAWLER_SITEMAP => __( 'Custom Sitemap', 'litespeed-cache'),249 self::O_CRAWLER_DROP_DOMAIN => __( 'Drop Domain from Sitemap', 'litespeed-cache'),250 self::O_CRAWLER_MAP_TIMEOUT => __( 'Sitemap Timeout', 'litespeed-cache'),251 252 self::O_DEBUG_DISABLE_ALL => __( 'Disable All Features', 'litespeed-cache'),253 self::O_DEBUG => __( 'Debug Log', 'litespeed-cache'),254 self::O_DEBUG_IPS => __( 'Admin IPs', 'litespeed-cache'),255 self::O_DEBUG_LEVEL => __( 'Debug Level', 'litespeed-cache'),256 self::O_DEBUG_FILESIZE => __( 'Log File Size Limit', 'litespeed-cache'),257 self::O_DEBUG_COOKIE => __( 'Log Cookies', 'litespeed-cache'),258 self::O_DEBUG_COLLAPS_QS => __( 'Collapse Query Strings', 'litespeed-cache'),259 self::O_DEBUG_INC => __( 'Debug URI Includes', 'litespeed-cache'),260 self::O_DEBUG_EXC => __( 'Debug URI Excludes', 'litespeed-cache'),261 self::O_DEBUG_EXC_STRINGS => __( 'Debug String Excludes', 'litespeed-cache'),262 263 self::O_DB_OPTM_REVISIONS_MAX => __( 'Revisions Max Number', 'litespeed-cache'),264 self::O_DB_OPTM_REVISIONS_AGE => __( 'Revisions Max Age', 'litespeed-cache'),265 266 ) ;267 268 if ( array_key_exists( $id, $_lang_list )) {269 return $_lang_list[ $id ];195 self::O_MEDIA_PLACEHOLDER_RESP_ASYNC => __('Generate LQIP In Background', 'litespeed-cache'), 196 self::O_MEDIA_IFRAME_LAZY => __('Lazy Load Iframes', 'litespeed-cache'), 197 self::O_MEDIA_ADD_MISSING_SIZES => __('Add Missing Sizes', 'litespeed-cache'), 198 self::O_MEDIA_VPI => __('Viewport Images', 'litespeed-cache'), 199 self::O_MEDIA_VPI_CRON => __('Viewport Images Cron', 'litespeed-cache'), 200 201 self::O_IMG_OPTM_AUTO => __('Auto Request Cron', 'litespeed-cache'), 202 self::O_IMG_OPTM_CRON => __('Auto Pull Cron', 'litespeed-cache'), 203 self::O_IMG_OPTM_ORI => __('Optimize Original Images', 'litespeed-cache'), 204 self::O_IMG_OPTM_RM_BKUP => __('Remove Original Backups', 'litespeed-cache'), 205 self::O_IMG_OPTM_WEBP => __('Image WebP Replacement', 'litespeed-cache'), 206 self::O_IMG_OPTM_LOSSLESS => __('Optimize Losslessly', 'litespeed-cache'), 207 self::O_IMG_OPTM_EXIF => __('Preserve EXIF/XMP data', 'litespeed-cache'), 208 self::O_IMG_OPTM_WEBP_ATTR => __('WebP Attribute To Replace', 'litespeed-cache'), 209 self::O_IMG_OPTM_WEBP_REPLACE_SRCSET => __('WebP For Extra srcset', 'litespeed-cache'), 210 self::O_IMG_OPTM_JPG_QUALITY => __('WordPress Image Quality Control', 'litespeed-cache'), 211 self::O_ESI => __('Enable ESI', 'litespeed-cache'), 212 self::O_ESI_CACHE_ADMBAR => __('Cache Admin Bar', 'litespeed-cache'), 213 self::O_ESI_CACHE_COMMFORM => __('Cache Comment Form', 'litespeed-cache'), 214 self::O_ESI_NONCE => __('ESI Nonces', 'litespeed-cache'), 215 self::O_CACHE_VARY_GROUP => __('Vary Group', 'litespeed-cache'), 216 self::O_PURGE_HOOK_ALL => __('Purge All Hooks', 'litespeed-cache'), 217 self::O_UTIL_NO_HTTPS_VARY => __('Improve HTTP/HTTPS Compatibility', 'litespeed-cache'), 218 self::O_UTIL_INSTANT_CLICK => __('Instant Click', 'litespeed-cache'), 219 self::O_CACHE_EXC_COOKIES => __('Do Not Cache Cookies', 'litespeed-cache'), 220 self::O_CACHE_EXC_USERAGENTS => __('Do Not Cache User Agents', 'litespeed-cache'), 221 self::O_CACHE_LOGIN_COOKIE => __('Login Cookie', 'litespeed-cache'), 222 223 self::O_MISC_HEARTBEAT_FRONT => __('Frontend Heartbeat Control', 'litespeed-cache'), 224 self::O_MISC_HEARTBEAT_FRONT_TTL => __('Frontend Heartbeat TTL', 'litespeed-cache'), 225 self::O_MISC_HEARTBEAT_BACK => __('Backend Heartbeat Control', 'litespeed-cache'), 226 self::O_MISC_HEARTBEAT_BACK_TTL => __('Backend Heartbeat TTL', 'litespeed-cache'), 227 self::O_MISC_HEARTBEAT_EDITOR => __('Editor Heartbeat', 'litespeed-cache'), 228 self::O_MISC_HEARTBEAT_EDITOR_TTL => __('Editor Heartbeat TTL', 'litespeed-cache'), 229 230 self::O_CDN_QUIC => __('QUIC.cloud CDN', 'litespeed-cache'), 231 self::O_CDN => __('Use CDN Mapping', 'litespeed-cache'), 232 self::CDN_MAPPING_URL => __('CDN URL', 'litespeed-cache'), 233 self::CDN_MAPPING_INC_IMG => __('Include Images', 'litespeed-cache'), 234 self::CDN_MAPPING_INC_CSS => __('Include CSS', 'litespeed-cache'), 235 self::CDN_MAPPING_INC_JS => __('Include JS', 'litespeed-cache'), 236 self::CDN_MAPPING_FILETYPE => __('Include File Types', 'litespeed-cache'), 237 self::O_CDN_ATTR => __('HTML Attribute To Replace', 'litespeed-cache'), 238 self::O_CDN_ORI => __('Original URLs', 'litespeed-cache'), 239 self::O_CDN_ORI_DIR => __('Included Directories', 'litespeed-cache'), 240 self::O_CDN_EXC => __('Exclude Path', 'litespeed-cache'), 241 self::O_CDN_CLOUDFLARE => __('Cloudflare API', 'litespeed-cache'), 242 243 self::O_CRAWLER => __('Crawler', 'litespeed-cache'), 244 self::O_CRAWLER_USLEEP => __('Delay', 'litespeed-cache'), 245 self::O_CRAWLER_RUN_DURATION => __('Run Duration', 'litespeed-cache'), 246 self::O_CRAWLER_RUN_INTERVAL => __('Interval Between Runs', 'litespeed-cache'), 247 self::O_CRAWLER_CRAWL_INTERVAL => __('Crawl Interval', 'litespeed-cache'), 248 self::O_CRAWLER_THREADS => __('Threads', 'litespeed-cache'), 249 self::O_CRAWLER_TIMEOUT => __('Timeout', 'litespeed-cache'), 250 self::O_CRAWLER_LOAD_LIMIT => __('Server Load Limit', 'litespeed-cache'), 251 self::O_CRAWLER_ROLES => __('Role Simulation', 'litespeed-cache'), 252 self::O_CRAWLER_COOKIES => __('Cookie Simulation', 'litespeed-cache'), 253 self::O_CRAWLER_SITEMAP => __('Custom Sitemap', 'litespeed-cache'), 254 self::O_CRAWLER_DROP_DOMAIN => __('Drop Domain from Sitemap', 'litespeed-cache'), 255 self::O_CRAWLER_MAP_TIMEOUT => __('Sitemap Timeout', 'litespeed-cache'), 256 257 self::O_DEBUG_DISABLE_ALL => __('Disable All Features', 'litespeed-cache'), 258 self::O_DEBUG => __('Debug Log', 'litespeed-cache'), 259 self::O_DEBUG_IPS => __('Admin IPs', 'litespeed-cache'), 260 self::O_DEBUG_LEVEL => __('Debug Level', 'litespeed-cache'), 261 self::O_DEBUG_FILESIZE => __('Log File Size Limit', 'litespeed-cache'), 262 self::O_DEBUG_COOKIE => __('Log Cookies', 'litespeed-cache'), 263 self::O_DEBUG_COLLAPS_QS => __('Collapse Query Strings', 'litespeed-cache'), 264 self::O_DEBUG_INC => __('Debug URI Includes', 'litespeed-cache'), 265 self::O_DEBUG_EXC => __('Debug URI Excludes', 'litespeed-cache'), 266 self::O_DEBUG_EXC_STRINGS => __('Debug String Excludes', 'litespeed-cache'), 267 268 self::O_DB_OPTM_REVISIONS_MAX => __('Revisions Max Number', 'litespeed-cache'), 269 self::O_DB_OPTM_REVISIONS_AGE => __('Revisions Max Age', 'litespeed-cache'), 270 271 ); 272 273 if (array_key_exists($id, $_lang_list)) { 274 return $_lang_list[$id]; 270 275 } 271 276 272 return 'N/A' ;277 return 'N/A'; 273 278 } 274 275 279 } -
litespeed-cache/trunk/src/object-cache.cls.php
r2928795 r2954001 388 388 continue; 389 389 } 390 if ( $v[ 'pid' ] > 0) {390 if ( !empty($v['pid']) || !empty($v['curr_connections']) ) { 391 391 return true; 392 392 } -
litespeed-cache/trunk/src/optimize.cls.php
r2832517 r2954001 1 1 <?php 2 2 3 /** 3 4 * The optimize class. … … 5 6 * @since 1.2.2 6 7 */ 8 7 9 namespace LiteSpeed; 8 10 9 defined( 'WPINC' ) || exit; 10 11 class Optimize extends Base { 11 defined('WPINC') || exit; 12 13 class Optimize extends Base 14 { 12 15 const LIB_FILE_CSS_ASYNC = 'assets/js/css_async.min.js'; 13 16 const LIB_FILE_WEBFONTLOADER = 'assets/js/webfontloader.min.js'; … … 24 27 private $cfg_js_comb; 25 28 private $cfg_css_async; 29 private $cfg_js_delay_inc = array(); 26 30 private $cfg_js_defer; 27 31 private $cfg_js_defer_exc = false; … … 48 52 * @since 4.0 49 53 */ 50 public function __construct() { 51 Debug2::debug( '[Optm] init' ); 52 $this->__optimizer = $this->cls( 'Optimizer' ); 54 public function __construct() 55 { 56 Debug2::debug('[Optm] init'); 57 $this->__optimizer = $this->cls('Optimizer'); 53 58 } 54 59 … … 59 64 * @access protected 60 65 */ 61 public function init() { 62 $this->cfg_css_async = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_CSS_ASYNC ); 63 if ( $this->cfg_css_async ) { 64 if ( ! $this->conf( self::O_API_KEY ) ) { 65 Debug2::debug( '[Optm] ❌ CCSS set to OFF due to missing domain key' ); 66 public function init() 67 { 68 $this->cfg_css_async = defined('LITESPEED_GUEST_OPTM') || $this->conf(self::O_OPTM_CSS_ASYNC); 69 if ($this->cfg_css_async) { 70 if (!$this->conf(self::O_API_KEY)) { 71 Debug2::debug('[Optm] ❌ CCSS set to OFF due to missing domain key'); 66 72 $this->cfg_css_async = false; 67 73 } 68 if ( ( defined( 'LITESPEED_GUEST_OPTM' ) || ( $this->conf( self::O_OPTM_UCSS ) && $this->conf( self::O_OPTM_CSS_COMB ) ) ) && $this->conf( self::O_OPTM_UCSS_INLINE )) {69 Debug2::debug( '[Optm] ❌ CCSS set to OFF due to UCSS Inline');74 if ((defined('LITESPEED_GUEST_OPTM') || ($this->conf(self::O_OPTM_UCSS) && $this->conf(self::O_OPTM_CSS_COMB))) && $this->conf(self::O_OPTM_UCSS_INLINE)) { 75 Debug2::debug('[Optm] ❌ CCSS set to OFF due to UCSS Inline'); 70 76 $this->cfg_css_async = false; 71 77 } 72 78 } 73 $this->cfg_js_defer = $this->conf( self::O_OPTM_JS_DEFER);74 if ( defined( 'LITESPEED_GUEST_OPTM' )) {79 $this->cfg_js_defer = $this->conf(self::O_OPTM_JS_DEFER); 80 if (defined('LITESPEED_GUEST_OPTM')) { 75 81 $this->cfg_js_defer = 2; 76 82 } 77 if ( $this->cfg_js_defer == 2) {78 add_filter( 'litespeed_optm_cssjs', function( $con, $file_type ){79 if ( $file_type == 'js') {80 $con = str_replace( 'DOMContentLoaded', 'DOMContentLiteSpeedLoaded', $con);83 if ($this->cfg_js_defer == 2) { 84 add_filter('litespeed_optm_cssjs', function ($con, $file_type) { 85 if ($file_type == 'js') { 86 $con = str_replace('DOMContentLoaded', 'DOMContentLiteSpeedLoaded', $con); 81 87 // $con = str_replace( 'addEventListener("load"', 'addEventListener("litespeedLoad"', $con ); 82 88 } 83 89 return $con; 84 }, 20, 2 );90 }, 20, 2); 85 91 } 86 92 87 93 // To remove emoji from WP 88 if ( $this->conf( self::O_OPTM_EMOJI_RM )) {94 if ($this->conf(self::O_OPTM_EMOJI_RM)) { 89 95 $this->_emoji_rm(); 90 96 } 91 97 92 if ( $this->conf( self::O_OPTM_QS_RM )) {93 add_filter( 'style_loader_src', array( $this, 'remove_query_strings' ), 999);94 add_filter( 'script_loader_src', array( $this, 'remove_query_strings' ), 999);98 if ($this->conf(self::O_OPTM_QS_RM)) { 99 add_filter('style_loader_src', array($this, 'remove_query_strings'), 999); 100 add_filter('script_loader_src', array($this, 'remove_query_strings'), 999); 95 101 } 96 102 97 103 // GM JS exclude @since 4.1 98 if ( defined( 'LITESPEED_GUEST_OPTM' ) ) { 99 $this->cfg_js_defer_exc = apply_filters( 'litespeed_optm_gm_js_exc', $this->conf( self::O_OPTM_GM_JS_EXC ) ); 100 } 101 else { 104 if (defined('LITESPEED_GUEST_OPTM')) { 105 $this->cfg_js_defer_exc = apply_filters('litespeed_optm_gm_js_exc', $this->conf(self::O_OPTM_GM_JS_EXC)); 106 } else { 102 107 /** 103 108 * Exclude js from deferred setting 104 109 * @since 1.5 105 110 */ 106 if ( $this->cfg_js_defer ) { 107 add_filter( 'litespeed_optm_js_defer_exc', array( $this->cls( 'Data' ), 'load_js_defer_exc' ) ); 108 $this->cfg_js_defer_exc = apply_filters( 'litespeed_optm_js_defer_exc', $this->conf( self::O_OPTM_JS_DEFER_EXC ) ); 111 if ($this->cfg_js_defer) { 112 add_filter('litespeed_optm_js_defer_exc', array($this->cls('Data'), 'load_js_defer_exc')); 113 $this->cfg_js_defer_exc = apply_filters('litespeed_optm_js_defer_exc', $this->conf(self::O_OPTM_JS_DEFER_EXC)); 114 115 $this->cfg_js_delay_inc = apply_filters('litespeed_optm_js_delay_inc', $this->conf(self::O_OPTM_JS_DELAY_INC)); 109 116 } 110 117 } … … 114 121 * @since 1.6 115 122 */ 116 add_filter( 'litespeed_vary', array( $this, 'vary_add_role_exclude' ));123 add_filter('litespeed_vary', array($this, 'vary_add_role_exclude')); 117 124 118 125 /** … … 122 129 $this->_dns_prefetch_init(); 123 130 124 add_filter( 'litespeed_buffer_finalize', array( $this, 'finalize' ), 20);131 add_filter('litespeed_buffer_finalize', array($this, 'finalize'), 20); 125 132 } 126 133 … … 131 138 * @access public 132 139 */ 133 public function vary_add_role_exclude( $vary ) { 134 if ( $this->cls( 'Conf' )->in_optm_exc_roles() ) { 135 $vary[ 'role_exclude_optm' ] = 1; 140 public function vary_add_role_exclude($vary) 141 { 142 if ($this->cls('Conf')->in_optm_exc_roles()) { 143 $vary['role_exclude_optm'] = 1; 136 144 } 137 145 … … 146 154 * @access private 147 155 */ 148 private function _emoji_rm() { 149 remove_action( 'wp_head' , 'print_emoji_detection_script', 7 ); 150 remove_action( 'admin_print_scripts' , 'print_emoji_detection_script' ); 151 remove_filter( 'the_content_feed' , 'wp_staticize_emoji' ); 152 remove_filter( 'comment_text_rss' , 'wp_staticize_emoji' ); 156 private function _emoji_rm() 157 { 158 remove_action('wp_head', 'print_emoji_detection_script', 7); 159 remove_action('admin_print_scripts', 'print_emoji_detection_script'); 160 remove_filter('the_content_feed', 'wp_staticize_emoji'); 161 remove_filter('comment_text_rss', 'wp_staticize_emoji'); 153 162 /** 154 163 * Added for better result 155 164 * @since 1.6.2.1 156 165 */ 157 remove_action( 'wp_print_styles', 'print_emoji_styles');158 remove_action( 'admin_print_styles', 'print_emoji_styles');159 remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email');166 remove_action('wp_print_styles', 'print_emoji_styles'); 167 remove_action('admin_print_styles', 'print_emoji_styles'); 168 remove_filter('wp_mail', 'wp_staticize_emoji_for_email'); 160 169 } 161 170 … … 166 175 * @access public 167 176 */ 168 public function rm_cache_folder( $subsite_id = false ) { 169 if ( $subsite_id ) { 170 file_exists( LITESPEED_STATIC_DIR . '/css/' . $subsite_id ) && File::rrmdir( LITESPEED_STATIC_DIR . '/css/' . $subsite_id ); 171 file_exists( LITESPEED_STATIC_DIR . '/js/' . $subsite_id ) && File::rrmdir( LITESPEED_STATIC_DIR . '/js/' . $subsite_id ); 177 public function rm_cache_folder($subsite_id = false) 178 { 179 if ($subsite_id) { 180 file_exists(LITESPEED_STATIC_DIR . '/css/' . $subsite_id) && File::rrmdir(LITESPEED_STATIC_DIR . '/css/' . $subsite_id); 181 file_exists(LITESPEED_STATIC_DIR . '/js/' . $subsite_id) && File::rrmdir(LITESPEED_STATIC_DIR . '/js/' . $subsite_id); 172 182 return; 173 183 } 174 184 175 file_exists( LITESPEED_STATIC_DIR . '/css' ) && File::rrmdir( LITESPEED_STATIC_DIR . '/css');176 file_exists( LITESPEED_STATIC_DIR . '/js' ) && File::rrmdir( LITESPEED_STATIC_DIR . '/js');185 file_exists(LITESPEED_STATIC_DIR . '/css') && File::rrmdir(LITESPEED_STATIC_DIR . '/css'); 186 file_exists(LITESPEED_STATIC_DIR . '/js') && File::rrmdir(LITESPEED_STATIC_DIR . '/js'); 177 187 } 178 188 … … 183 193 * @access public 184 194 */ 185 public function remove_query_strings( $src ) { 186 if ( strpos( $src, '_litespeed_rm_qs=0' ) || strpos( $src, '/recaptcha' ) ) { 195 public function remove_query_strings($src) 196 { 197 if (strpos($src, '_litespeed_rm_qs=0') || strpos($src, '/recaptcha')) { 187 198 return $src; 188 199 } 189 200 190 if ( ! Utility::is_internal_file( $src )) {201 if (!Utility::is_internal_file($src)) { 191 202 return $src; 192 203 } 193 204 194 if ( strpos( $src, '.js?' ) !== false || strpos( $src, '.css?' ) !== false) {195 $src = preg_replace( '/\?.*/', '', $src);205 if (strpos($src, '.js?') !== false || strpos($src, '.css?') !== false) { 206 $src = preg_replace('/\?.*/', '', $src); 196 207 } 197 208 … … 207 218 * @return string The content that is after optimization 208 219 */ 209 public function finalize( $content ) { 210 if ( defined( 'LITESPEED_NO_PAGEOPTM' ) ) { 211 Debug2::debug2( '[Optm] bypass: NO_PAGEOPTM const' ); 220 public function finalize($content) 221 { 222 if (defined('LITESPEED_NO_PAGEOPTM')) { 223 Debug2::debug2('[Optm] bypass: NO_PAGEOPTM const'); 212 224 return $content; 213 225 } 214 226 215 if ( ! defined( 'LITESPEED_IS_HTML' )) {216 Debug2::debug( '[Optm] bypass: Not frontend HTML type');227 if (!defined('LITESPEED_IS_HTML')) { 228 Debug2::debug('[Optm] bypass: Not frontend HTML type'); 217 229 return $content; 218 230 } 219 231 220 if ( ! defined( 'LITESPEED_GUEST_OPTM' )) {221 if ( ! Control::is_cacheable()) {222 Debug2::debug( '[Optm] bypass: Not cacheable');232 if (!defined('LITESPEED_GUEST_OPTM')) { 233 if (!Control::is_cacheable()) { 234 Debug2::debug('[Optm] bypass: Not cacheable'); 223 235 return $content; 224 236 } 225 237 226 238 // Check if hit URI excludes 227 add_filter( 'litespeed_optm_uri_exc', array( $this->cls( 'Data' ), 'load_optm_uri_exc' ));228 $excludes = apply_filters( 'litespeed_optm_uri_exc', $this->conf( self::O_OPTM_EXC ));229 $result = Utility::str_hit_array( $_SERVER[ 'REQUEST_URI' ], $excludes);230 if ( $result) {231 Debug2::debug( '[Optm] bypass: hit URI Excludes setting: ' . $result);239 add_filter('litespeed_optm_uri_exc', array($this->cls('Data'), 'load_optm_uri_exc')); 240 $excludes = apply_filters('litespeed_optm_uri_exc', $this->conf(self::O_OPTM_EXC)); 241 $result = Utility::str_hit_array($_SERVER['REQUEST_URI'], $excludes); 242 if ($result) { 243 Debug2::debug('[Optm] bypass: hit URI Excludes setting: ' . $result); 232 244 return $content; 233 245 } 234 246 } 235 247 236 Debug2::debug( '[Optm] start');248 Debug2::debug('[Optm] start'); 237 249 238 250 $this->content_ori = $this->content = $content; … … 248 260 * @access private 249 261 */ 250 private function _optimize() { 262 private function _optimize() 263 { 251 264 global $wp; 252 $this->_request_url = home_url( $wp->request);253 254 $this->cfg_css_min = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_CSS_MIN);255 $this->cfg_css_comb = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_CSS_COMB);256 $this->cfg_js_min = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_JS_MIN);257 $this->cfg_js_comb = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_JS_COMB);258 $this->cfg_ggfonts_rm = defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_GGFONTS_RM);259 $this->cfg_ggfonts_async = ! defined( 'LITESPEED_GUEST_OPTM' ) && $this->conf( self::O_OPTM_GGFONTS_ASYNC); // forced rm already260 $this->_conf_css_font_display = ! defined( 'LITESPEED_GUEST_OPTM' ) && $this->conf( self::O_OPTM_CSS_FONT_DISPLAY);261 262 if ( ! $this->cls( 'Router' )->can_optm()) {263 Debug2::debug( '[Optm] bypass: admin/feed/preview');265 $this->_request_url = home_url($wp->request); 266 267 $this->cfg_css_min = defined('LITESPEED_GUEST_OPTM') || $this->conf(self::O_OPTM_CSS_MIN); 268 $this->cfg_css_comb = defined('LITESPEED_GUEST_OPTM') || $this->conf(self::O_OPTM_CSS_COMB); 269 $this->cfg_js_min = defined('LITESPEED_GUEST_OPTM') || $this->conf(self::O_OPTM_JS_MIN); 270 $this->cfg_js_comb = defined('LITESPEED_GUEST_OPTM') || $this->conf(self::O_OPTM_JS_COMB); 271 $this->cfg_ggfonts_rm = defined('LITESPEED_GUEST_OPTM') || $this->conf(self::O_OPTM_GGFONTS_RM); 272 $this->cfg_ggfonts_async = !defined('LITESPEED_GUEST_OPTM') && $this->conf(self::O_OPTM_GGFONTS_ASYNC); // forced rm already 273 $this->_conf_css_font_display = !defined('LITESPEED_GUEST_OPTM') && $this->conf(self::O_OPTM_CSS_FONT_DISPLAY); 274 275 if (!$this->cls('Router')->can_optm()) { 276 Debug2::debug('[Optm] bypass: admin/feed/preview'); 264 277 return; 265 278 } 266 279 267 if ( $this->cfg_css_async) {268 $this->_ccss = $this->cls( 'CSS')->prepare_ccss();269 if ( ! $this->_ccss) {270 Debug2::debug( '[Optm] ❌ CCSS set to OFF due to CCSS not generated yet');280 if ($this->cfg_css_async) { 281 $this->_ccss = $this->cls('CSS')->prepare_ccss(); 282 if (!$this->_ccss) { 283 Debug2::debug('[Optm] ❌ CCSS set to OFF due to CCSS not generated yet'); 271 284 $this->cfg_css_async = false; 272 } 273 else if ( strpos( $this->_ccss, '<style id="litespeed-ccss" data-error' ) === 0 ) { 274 Debug2::debug( '[Optm] ❌ CCSS set to OFF due to CCSS failed to generate' ); 285 } else if (strpos($this->_ccss, '<style id="litespeed-ccss" data-error') === 0) { 286 Debug2::debug('[Optm] ❌ CCSS set to OFF due to CCSS failed to generate'); 275 287 $this->cfg_css_async = false; 276 288 } 277 289 } 278 290 279 do_action( 'litespeed_optm');291 do_action('litespeed_optm'); 280 292 281 293 // Parse css from content 282 294 $src_list = false; 283 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) {284 add_filter( 'litespeed_optimize_css_excludes', array( $this->cls( 'Data' ), 'load_css_exc' ));285 list( $src_list, $html_list) = $this->_parse_css();295 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) { 296 add_filter('litespeed_optimize_css_excludes', array($this->cls('Data'), 'load_css_exc')); 297 list($src_list, $html_list) = $this->_parse_css(); 286 298 } 287 299 288 300 // css optimizer 289 if ( $this->cfg_css_min || $this->cfg_css_comb) {290 291 if ( $src_list) {301 if ($this->cfg_css_min || $this->cfg_css_comb) { 302 303 if ($src_list) { 292 304 // IF combine 293 if ( $this->cfg_css_comb) {305 if ($this->cfg_css_comb) { 294 306 // Check if has inline UCSS enabled or not 295 if ( ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_UCSS ) ) && $this->conf( self::O_OPTM_UCSS_INLINE )) {296 $filename = $this->cls( 'UCSS' )->load( $this->_request_url, true);297 if ( $filename) {298 $filepath_prefix = $this->_build_filepath_prefix( 'ucss');299 $this->_ucss = File::read( LITESPEED_STATIC_DIR . $filepath_prefix . $filename);307 if ((defined('LITESPEED_GUEST_OPTM') || $this->conf(self::O_OPTM_UCSS)) && $this->conf(self::O_OPTM_UCSS_INLINE)) { 308 $filename = $this->cls('UCSS')->load($this->_request_url, true); 309 if ($filename) { 310 $filepath_prefix = $this->_build_filepath_prefix('ucss'); 311 $this->_ucss = File::read(LITESPEED_STATIC_DIR . $filepath_prefix . $filename); 300 312 301 313 // Drop all css 302 $this->content = str_replace( $html_list, '', $this->content);314 $this->content = str_replace($html_list, '', $this->content); 303 315 } 304 316 } 305 317 306 if ( ! $this->_ucss) {307 $url = $this->_build_hash_url( $src_list);308 309 if ( $url) {318 if (!$this->_ucss) { 319 $url = $this->_build_hash_url($src_list); 320 321 if ($url) { 310 322 // Handle css async load 311 if ( $this->cfg_css_async) {323 if ($this->cfg_css_async) { 312 324 $this->html_head .= '<link rel="preload" data-asynced="1" data-optimized="2" as="style" onload="this.onload=null;this.rel=\'stylesheet\'" href="' . $url . '" />'; // todo: How to use " in attr wrapper " 325 } else { 326 $this->html_head .= '<link data-optimized="2" rel="stylesheet" href="' . $url . '" />'; // use 2 as combined 313 327 } 314 else {315 $this->html_head .= '<link data-optimized="2" rel="stylesheet" href="' . $url . '" />';// use 2 as combined316 }317 328 318 329 // Move all css to top 319 $this->content = str_replace( $html_list, '', $this->content);330 $this->content = str_replace($html_list, '', $this->content); 320 331 } 321 332 } 322 333 } 323 334 // Only minify 324 elseif ( $this->cfg_css_min) {335 elseif ($this->cfg_css_min) { 325 336 // will handle async css load inside 326 $this->_src_queue_handler( $src_list, $html_list);337 $this->_src_queue_handler($src_list, $html_list); 327 338 } 328 339 // Only HTTP2 push 329 340 else { 330 foreach ( $src_list as $src_info) {331 if ( ! empty( $src_info[ 'inl' ] )) {341 foreach ($src_list as $src_info) { 342 if (!empty($src_info['inl'])) { 332 343 continue; 333 344 } … … 338 349 339 350 // Handle css lazy load if not handled async loaded yet 340 if ( $this->cfg_css_async && ! $this->cfg_css_min && ! $this->cfg_css_comb) {351 if ($this->cfg_css_async && !$this->cfg_css_min && !$this->cfg_css_comb) { 341 352 // async html 342 $html_list_async = $this->_async_css_list( $html_list, $src_list);353 $html_list_async = $this->_async_css_list($html_list, $src_list); 343 354 344 355 // Replace async css 345 $this->content = str_replace( $html_list, $html_list_async, $this->content ); 346 356 $this->content = str_replace($html_list, $html_list_async, $this->content); 347 357 } 348 358 349 359 // Parse js from buffer as needed 350 360 $src_list = false; 351 if ( $this->cfg_js_min || $this->cfg_js_comb || $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();361 if ($this->cfg_js_min || $this->cfg_js_comb || $this->cfg_js_defer || $this->cfg_js_delay_inc) { 362 add_filter('litespeed_optimize_js_excludes', array($this->cls('Data'), 'load_js_exc')); 363 list($src_list, $html_list) = $this->_parse_js(); 354 364 } 355 365 356 366 // js optimizer 357 if ( $src_list) {367 if ($src_list) { 358 368 // IF combine 359 if ( $this->cfg_js_comb) {360 $url = $this->_build_hash_url( $src_list, 'js');361 if ( $url) {362 $this->html_foot .= $this->_build_js_tag( $url);369 if ($this->cfg_js_comb) { 370 $url = $this->_build_hash_url($src_list, 'js'); 371 if ($url) { 372 $this->html_foot .= $this->_build_js_tag($url); 363 373 364 374 // Will move all JS to bottom combined one 365 $this->content = str_replace( $html_list, '', $this->content);375 $this->content = str_replace($html_list, '', $this->content); 366 376 } 367 377 } 368 378 // Only minify 369 elseif ( $this->cfg_js_min) {379 elseif ($this->cfg_js_min) { 370 380 // Will handle js defer inside 371 $this->_src_queue_handler( $src_list, $html_list, 'js');381 $this->_src_queue_handler($src_list, $html_list, 'js'); 372 382 } 373 383 // Only HTTP2 push and Defer 374 384 else { 375 foreach ( $src_list as $k => $src_info) {385 foreach ($src_list as $k => $src_info) { 376 386 // Inline JS 377 if ( ! empty( $src_info[ 'inl' ] )) {378 if ( $this->cfg_js_defer) {379 $attrs = ! empty( $src_info[ 'attrs' ] ) ? $src_info[ 'attrs'] : '';380 $deferred = $this->_js_inline_defer( $src_info[ 'src' ], $attrs);381 if ( $deferred) {382 $this->content = str_replace( $html_list[ $k ], $deferred, $this->content);387 if (!empty($src_info['inl'])) { 388 if ($this->cfg_js_defer) { 389 $attrs = !empty($src_info['attrs']) ? $src_info['attrs'] : ''; 390 $deferred = $this->_js_inline_defer($src_info['src'], $attrs); 391 if ($deferred) { 392 $this->content = str_replace($html_list[$k], $deferred, $this->content); 383 393 } 384 394 } … … 386 396 // JS files 387 397 else { 388 if ( $this->cfg_js_defer ) { 389 $deferred = $this->_js_defer( $html_list[ $k ], $src_info[ 'src' ] ); 390 if ( $deferred ) { 391 $this->content = str_replace( $html_list[ $k ], $deferred, $this->content ); 398 if ($this->cfg_js_defer) { 399 $deferred = $this->_js_defer($html_list[$k], $src_info['src']); 400 if ($deferred) { 401 $this->content = str_replace($html_list[$k], $deferred, $this->content); 402 } 403 } else if ($this->cfg_js_delay_inc) { 404 $deferred = $this->_js_delay($html_list[$k], $src_info['src']); 405 if ($deferred) { 406 $this->content = str_replace($html_list[$k], $deferred, $this->content); 392 407 } 393 408 } … … 399 414 // Append JS inline var for preserved ESI 400 415 // Shouldn't give any optm (defer/delay) @since 4.4 401 if ( $this->_var_preserve_js) {402 $this->html_head .= '<script>var ' . implode( ',', $this->_var_preserve_js) . ';</script>';403 Debug2::debug2( '[Optm] Inline JS defer vars', $this->_var_preserve_js);416 if ($this->_var_preserve_js) { 417 $this->html_head .= '<script>var ' . implode(',', $this->_var_preserve_js) . ';</script>'; 418 Debug2::debug2('[Optm] Inline JS defer vars', $this->_var_preserve_js); 404 419 } 405 420 406 421 // Append async compatibility lib to head 407 if ( $this->cfg_css_async) {422 if ($this->cfg_css_async) { 408 423 // Inline css async lib 409 if ( $this->conf( self::O_OPTM_CSS_ASYNC_INLINE ) ) { 410 $this->html_head .= $this->_build_js_inline( File::read( LSCWP_DIR . self::LIB_FILE_CSS_ASYNC ), true ); 411 } 412 else { 424 if ($this->conf(self::O_OPTM_CSS_ASYNC_INLINE)) { 425 $this->html_head .= $this->_build_js_inline(File::read(LSCWP_DIR . self::LIB_FILE_CSS_ASYNC), true); 426 } else { 413 427 $css_async_lib_url = LSWCP_PLUGIN_URL . self::LIB_FILE_CSS_ASYNC; 414 $this->html_head .= $this->_build_js_tag( $css_async_lib_url, 'litespeed-css-async-lib'); // Don't exclude it from defer for now428 $this->html_head .= $this->_build_js_tag($css_async_lib_url, 'litespeed-css-async-lib'); // Don't exclude it from defer for now 415 429 } 416 430 } … … 434 448 * HTML Lazyload 435 449 */ 436 if ( $this->conf( self::O_OPTM_HTML_LAZY )) {437 $this->html_head = $this->cls( 'CSS')->prepare_html_lazy() . $this->html_head;450 if ($this->conf(self::O_OPTM_HTML_LAZY)) { 451 $this->html_head = $this->cls('CSS')->prepare_html_lazy() . $this->html_head; 438 452 } 439 453 440 454 // Maybe prepend inline UCSS 441 if ( $this->_ucss) {455 if ($this->_ucss) { 442 456 $this->html_head = '<style id="litespeed-ucss">' . $this->_ucss . '</style>' . $this->html_head; 443 457 } 444 458 445 459 // Check if there is any critical css rules setting 446 if ( $this->cfg_css_async && $this->_ccss) {460 if ($this->cfg_css_async && $this->_ccss) { 447 461 $this->html_head = $this->_ccss . $this->html_head; 448 462 } 449 463 450 464 // Replace html head part 451 $this->html_head = apply_filters( 'litespeed_optm_html_head', $this->html_head ); 452 if ( $this->html_head ) { 453 if ( apply_filters( 'litespeed_optm_html_after_head', false ) ) { 454 $this->content = str_replace( '</head>', $this->html_head . '</head>', $this->content ); 455 } 456 else { 465 $this->html_head = apply_filters('litespeed_optm_html_head', $this->html_head); 466 if ($this->html_head) { 467 if (apply_filters('litespeed_optm_html_after_head', false)) { 468 $this->content = str_replace('</head>', $this->html_head . '</head>', $this->content); 469 } else { 457 470 // Put header content to be after charset 458 if ( strpos( $this->content, '<meta charset' ) !== false ) { 459 $this->content = preg_replace( '#<meta charset([^>]*)>#isU', '<meta charset$1>' . $this->html_head , $this->content, 1 ); 460 } 461 else { 462 $this->content = preg_replace( '#<head([^>]*)>#isU', '<head$1>' . $this->html_head , $this->content, 1 ); 471 if (strpos($this->content, '<meta charset') !== false) { 472 $this->content = preg_replace('#<meta charset([^>]*)>#isU', '<meta charset$1>' . $this->html_head, $this->content, 1); 473 } else { 474 $this->content = preg_replace('#<head([^>]*)>#isU', '<head$1>' . $this->html_head, $this->content, 1); 463 475 } 464 476 } … … 466 478 467 479 // Replace html foot part 468 $this->html_foot = apply_filters( 'litespeed_optm_html_foot', $this->html_foot);469 if ( $this->html_foot) {470 $this->content = str_replace( '</body>', $this->html_foot . '</body>' , $this->content);480 $this->html_foot = apply_filters('litespeed_optm_html_foot', $this->html_foot); 481 if ($this->html_foot) { 482 $this->content = str_replace('</body>', $this->html_foot . '</body>', $this->content); 471 483 } 472 484 473 485 // Drop noscript if enabled 474 if ( $this->conf( self::O_OPTM_NOSCRIPT_RM )) {486 if ($this->conf(self::O_OPTM_NOSCRIPT_RM)) { 475 487 // $this->content = preg_replace( '#<noscript>.*</noscript>#isU', '', $this->content ); 476 488 } 477 489 478 490 // HTML minify 479 if ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_HTML_MIN )) {480 $this->content = $this->__optimizer->html_min( $this->content);491 if (defined('LITESPEED_GUEST_OPTM') || $this->conf(self::O_OPTM_HTML_MIN)) { 492 $this->content = $this->__optimizer->html_min($this->content); 481 493 } 482 494 } … … 487 499 * @since 4.0 488 500 */ 489 private function _build_js_tag( $src ) { 490 if ( $this->cfg_js_defer === 2 ) { 501 private function _build_js_tag($src) 502 { 503 if ($this->cfg_js_defer === 2 || Utility::str_hit_array($src, $this->cfg_js_delay_inc)) { 491 504 return '<script data-optimized="1" type="litespeed/javascript" data-src="' . $src . '"></script>'; 492 505 } 493 506 494 if ( $this->cfg_js_defer) {507 if ($this->cfg_js_defer) { 495 508 return '<script data-optimized="1" src="' . $src . '" defer></script>'; 496 509 } … … 504 517 * @since 4.0 505 518 */ 506 private function _build_js_inline( $script, $minified = false ) { 507 if ( $this->cfg_js_defer ) { 508 $deferred = $this->_js_inline_defer( $script, false, $minified ); 509 if ( $deferred ) { 519 private function _build_js_inline($script, $minified = false) 520 { 521 if ($this->cfg_js_defer) { 522 $deferred = $this->_js_inline_defer($script, false, $minified); 523 if ($deferred) { 510 524 return $deferred; 511 525 } … … 520 534 * @since 4.0 521 535 */ 522 private function _maybe_js_delay() { 523 if ( $this->cfg_js_defer !== 2 ) { 536 private function _maybe_js_delay() 537 { 538 if ($this->cfg_js_defer !== 2 && !$this->cfg_js_delay_inc) { 524 539 return; 525 540 } 526 541 527 $this->html_foot .= '<script>' . File::read( LSCWP_DIR . self::LIB_FILE_JS_DELAY) . '</script>';542 $this->html_foot .= '<script>' . File::read(LSCWP_DIR . self::LIB_FILE_JS_DELAY) . '</script>'; 528 543 } 529 544 … … 534 549 * @access private 535 550 */ 536 private function _async_ggfonts() { 537 if ( ! $this->cfg_ggfonts_async || ! $this->_ggfonts_urls ) { 551 private function _async_ggfonts() 552 { 553 if (!$this->cfg_ggfonts_async || !$this->_ggfonts_urls) { 538 554 return; 539 555 } 540 556 541 Debug2::debug2( '[Optm] google fonts async found: ', $this->_ggfonts_urls);557 Debug2::debug2('[Optm] google fonts async found: ', $this->_ggfonts_urls); 542 558 543 559 $html = '<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin />'; … … 553 569 * <link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,300,300italic,400italic,600,700,900&subset=latin%2Clatin-ext' /> 554 570 */ 555 $script = 'WebFontConfig={google:{families:[';571 $script = 'WebFontConfig={google:{families:['; 556 572 557 573 $families = array(); 558 foreach ( $this->_ggfonts_urls as $v) {559 $qs = wp_specialchars_decode( $v);560 $qs = urldecode( $qs);561 $qs = parse_url( $qs, PHP_URL_QUERY);562 parse_str( $qs, $qs);563 564 if ( empty( $qs[ 'family' ] )) {565 Debug2::debug( '[Optm] ERR ggfonts failed to find family: ' . $v);574 foreach ($this->_ggfonts_urls as $v) { 575 $qs = wp_specialchars_decode($v); 576 $qs = urldecode($qs); 577 $qs = parse_url($qs, PHP_URL_QUERY); 578 parse_str($qs, $qs); 579 580 if (empty($qs['family'])) { 581 Debug2::debug('[Optm] ERR ggfonts failed to find family: ' . $v); 566 582 continue; 567 583 } 568 584 569 $subset = empty( $qs[ 'subset' ] ) ? '' : ':' . $qs[ 'subset'];570 571 foreach ( array_filter( explode( '|', $qs[ 'family' ] ) ) as $v2) {585 $subset = empty($qs['subset']) ? '' : ':' . $qs['subset']; 586 587 foreach (array_filter(explode('|', $qs['family'])) as $v2) { 572 588 $families[] = $v2 . $subset; 573 589 } 574 590 } 575 591 576 $script .= '"' . implode( '","', $families ) . ( $this->_conf_css_font_display ? '&display=swap' : '') . '"';592 $script .= '"' . implode('","', $families) . ($this->_conf_css_font_display ? '&display=swap' : '') . '"'; 577 593 578 594 $script .= ']}};'; … … 581 597 $script .= 'if ( typeof WebFont === "object" && typeof WebFont.load === "function" ) { WebFont.load( WebFontConfig ); }'; 582 598 583 $html .= $this->_build_js_inline( $script);599 $html .= $this->_build_js_inline($script); 584 600 585 601 // https://cdnjs.cloudflare.com/ajax/libs/webfont/1.6.28/webfontloader.js … … 587 603 588 604 // default async, if js defer set use defer 589 $html .= $this->_build_js_tag( $webfont_lib_url);605 $html .= $this->_build_js_tag($webfont_lib_url); 590 606 591 607 // Put this in the very beginning for preconnect … … 599 615 * @access private 600 616 */ 601 private function _font_optm() { 602 if ( ! $this->_conf_css_font_display || ! $this->_ggfonts_urls ) { 617 private function _font_optm() 618 { 619 if (!$this->_conf_css_font_display || !$this->_ggfonts_urls) { 603 620 return; 604 621 } 605 622 606 Debug2::debug2( '[Optm] google fonts optm ', $this->_ggfonts_urls);607 608 foreach ( $this->_ggfonts_urls as $v) {609 if ( strpos( $v, 'display=' )) {623 Debug2::debug2('[Optm] google fonts optm ', $this->_ggfonts_urls); 624 625 foreach ($this->_ggfonts_urls as $v) { 626 if (strpos($v, 'display=')) { 610 627 continue; 611 628 } 612 $this->html_head = str_replace( $v, $v . '&display=swap', $this->html_head);613 $this->html_foot = str_replace( $v, $v . '&display=swap', $this->html_foot);614 $this->content = str_replace( $v, $v . '&display=swap', $this->content);629 $this->html_head = str_replace($v, $v . '&display=swap', $this->html_head); 630 $this->html_foot = str_replace($v, $v . '&display=swap', $this->html_foot); 631 $this->content = str_replace($v, $v . '&display=swap', $this->content); 615 632 } 616 633 } … … 622 639 * @access private 623 640 */ 624 private function _dns_prefetch_init() { 641 private function _dns_prefetch_init() 642 { 625 643 // Widely enable link DNS prefetch 626 if ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( self::O_OPTM_DNS_PREFETCH_CTRL )) {627 @header( 'X-DNS-Prefetch-Control: on');628 } 629 630 $this->dns_prefetch = $this->conf( self::O_OPTM_DNS_PREFETCH);631 if ( ! $this->dns_prefetch) {644 if (defined('LITESPEED_GUEST_OPTM') || $this->conf(self::O_OPTM_DNS_PREFETCH_CTRL)) { 645 @header('X-DNS-Prefetch-Control: on'); 646 } 647 648 $this->dns_prefetch = $this->conf(self::O_OPTM_DNS_PREFETCH); 649 if (!$this->dns_prefetch) { 632 650 return; 633 651 } 634 652 635 if ( function_exists( 'wp_resource_hints' ) ) { 636 add_filter( 'wp_resource_hints', array( $this, 'dns_prefetch_filter' ), 10, 2 ); 637 } 638 else { 639 add_action( 'litespeed_optm', array( $this, 'dns_prefetch_output' ) ); 653 if (function_exists('wp_resource_hints')) { 654 add_filter('wp_resource_hints', array($this, 'dns_prefetch_filter'), 10, 2); 655 } else { 656 add_action('litespeed_optm', array($this, 'dns_prefetch_output')); 640 657 } 641 658 } … … 647 664 * @access public 648 665 */ 649 public function dns_prefetch_filter( $urls, $relation_type ) { 650 if ( $relation_type !== 'dns-prefetch' ) { 666 public function dns_prefetch_filter($urls, $relation_type) 667 { 668 if ($relation_type !== 'dns-prefetch') { 651 669 return $urls; 652 670 } 653 671 654 foreach ( $this->dns_prefetch as $v) {655 if ( $v) {672 foreach ($this->dns_prefetch as $v) { 673 if ($v) { 656 674 $urls[] = $v; 657 675 } … … 667 685 * @access public 668 686 */ 669 public function dns_prefetch_output() { 670 foreach ( $this->dns_prefetch as $v ) { 671 if ( $v ) { 687 public function dns_prefetch_output() 688 { 689 foreach ($this->dns_prefetch as $v) { 690 if ($v) { 672 691 $this->html_head .= '<link rel="dns-prefetch" href="' . $v . '" />'; 673 692 } … … 681 700 * @access private 682 701 */ 683 private function _src_queue_handler( $src_list, $html_list, $file_type = 'css' ) { 702 private function _src_queue_handler($src_list, $html_list, $file_type = 'css') 703 { 684 704 $html_list_ori = $html_list; 685 705 686 $can_webp = ( defined( 'LITESPEED_GUEST_OPTM' ) || $this->conf( Base::O_IMG_OPTM_WEBP ) ) && $this->cls( 'Media')->webp_support();706 $can_webp = (defined('LITESPEED_GUEST_OPTM') || $this->conf(Base::O_IMG_OPTM_WEBP)) && $this->cls('Media')->webp_support(); 687 707 688 708 $tag = $file_type == 'css' ? 'link' : 'script'; 689 foreach ( $src_list as $key => $src_info) {709 foreach ($src_list as $key => $src_info) { 690 710 // Minify inline CSS/JS 691 if ( ! empty( $src_info[ 'inl' ] ) ) { 692 if ( $file_type == 'css' ) { 693 $code = Optimizer::minify_css( $src_info[ 'src' ] ); 694 $can_webp && $code = $this->cls( 'Media' )->replace_background_webp( $code ); 695 $snippet = str_replace( $src_info[ 'src' ], $code, $html_list[ $key ] ); 696 } 697 else { 711 if (!empty($src_info['inl'])) { 712 if ($file_type == 'css') { 713 $code = Optimizer::minify_css($src_info['src']); 714 $can_webp && $code = $this->cls('Media')->replace_background_webp($code); 715 $snippet = str_replace($src_info['src'], $code, $html_list[$key]); 716 } else { 698 717 // Inline defer JS 699 if ( $this->cfg_js_defer ) { 700 $attrs = ! empty( $src_info[ 'attrs' ] ) ? $src_info[ 'attrs' ] : ''; 701 $snippet = $this->_js_inline_defer( $src_info[ 'src' ], $attrs ) ?: $html_list[ $key ]; 718 if ($this->cfg_js_defer) { 719 $attrs = !empty($src_info['attrs']) ? $src_info['attrs'] : ''; 720 $snippet = $this->_js_inline_defer($src_info['src'], $attrs) ?: $html_list[$key]; 721 } else { 722 $code = Optimizer::minify_js($src_info['src']); 723 $snippet = str_replace($src_info['src'], $code, $html_list[$key]); 702 724 } 703 else { 704 $code = Optimizer::minify_js( $src_info[ 'src' ] ); 705 $snippet = str_replace( $src_info[ 'src' ], $code, $html_list[ $key ] ); 706 } 707 } 708 725 } 709 726 } 710 727 // CSS/JS files 711 728 else { 712 $url = $this->_build_single_hash_url( $src_info[ 'src' ], $file_type);713 if ( $url) {714 $snippet = str_replace( $src_info[ 'src' ], $url, $html_list[ $key ]);729 $url = $this->_build_single_hash_url($src_info['src'], $file_type); 730 if ($url) { 731 $snippet = str_replace($src_info['src'], $url, $html_list[$key]); 715 732 } 716 733 717 734 // Handle css async load 718 if ( $file_type == 'css' && $this->cfg_css_async) {719 $snippet = $this->_async_css( $snippet);735 if ($file_type == 'css' && $this->cfg_css_async) { 736 $snippet = $this->_async_css($snippet); 720 737 } 721 738 722 739 // Handle js defer 723 if ( $file_type === 'js' && $this->cfg_js_defer) {724 $snippet = $this->_js_defer( $snippet, $src_info[ 'src' ]) ?: $snippet;725 } 726 } 727 728 $snippet = str_replace( "<$tag ", '<' . $tag . ' data-optimized="1" ', $snippet);729 $html_list[ $key] = $snippet;730 } 731 732 $this->content = str_replace( $html_list_ori, $html_list, $this->content);740 if ($file_type === 'js' && $this->cfg_js_defer) { 741 $snippet = $this->_js_defer($snippet, $src_info['src']) ?: $snippet; 742 } 743 } 744 745 $snippet = str_replace("<$tag ", '<' . $tag . ' data-optimized="1" ', $snippet); 746 $html_list[$key] = $snippet; 747 } 748 749 $this->content = str_replace($html_list_ori, $html_list, $this->content); 733 750 } 734 751 … … 737 754 * @since 4.0 738 755 */ 739 private function _build_single_hash_url( $src, $file_type = 'css' ) { 740 $content = $this->__optimizer->load_file( $src, $file_type ); 741 742 $is_min = $this->__optimizer->is_min( $src ); 743 744 $content = $this->__optimizer->optm_snippet( $content, $file_type, ! $is_min, $src ); 745 746 $filepath_prefix = $this->_build_filepath_prefix( $file_type ); 756 private function _build_single_hash_url($src, $file_type = 'css') 757 { 758 $content = $this->__optimizer->load_file($src, $file_type); 759 760 $is_min = $this->__optimizer->is_min($src); 761 762 $content = $this->__optimizer->optm_snippet($content, $file_type, !$is_min, $src); 763 764 $filepath_prefix = $this->_build_filepath_prefix($file_type); 747 765 748 766 // Save to file 749 $filename = $filepath_prefix . md5( $this->remove_query_strings( $src )) . '.' . $file_type;767 $filename = $filepath_prefix . md5($this->remove_query_strings($src)) . '.' . $file_type; 750 768 $static_file = LITESPEED_STATIC_DIR . $filename; 751 File::save( $static_file, $content, true);769 File::save($static_file, $content, true); 752 770 753 771 // QS is required as $src may contains version info 754 $qs_hash = substr( md5( $src ), -5);772 $qs_hash = substr(md5($src), -5); 755 773 return LITESPEED_STATIC_URL . "$filename?ver=$qs_hash"; 756 774 } … … 762 780 * @access private 763 781 */ 764 private function _build_hash_url( $src_list, $file_type = 'css' ) { 782 private function _build_hash_url($src_list, $file_type = 'css') 783 { 765 784 // $url_sensitive = $this->conf( self::O_OPTM_CSS_UNIQUE ) && $file_type == 'css'; // If need to keep unique CSS per URI 766 785 767 786 // Replace preserved ESI (before generating hash) 768 if ( $file_type == 'js') {769 foreach ( $src_list as $k => $v) {770 if ( empty( $v[ 'inl' ] )) {771 continue; 772 } 773 $src_list[ $k ][ 'src' ] = $this->_preserve_esi( $v[ 'src' ]);787 if ($file_type == 'js') { 788 foreach ($src_list as $k => $v) { 789 if (empty($v['inl'])) { 790 continue; 791 } 792 $src_list[$k]['src'] = $this->_preserve_esi($v['src']); 774 793 } 775 794 } 776 795 777 796 $minify = $file_type === 'css' ? $this->cfg_css_min : $this->cfg_js_min; 778 $filename_info = $this->__optimizer->serve( $this->_request_url, $file_type, $minify, $src_list);779 780 if ( ! $filename_info) {797 $filename_info = $this->__optimizer->serve($this->_request_url, $file_type, $minify, $src_list); 798 799 if (!$filename_info) { 781 800 return false; // Failed to generate 782 801 } 783 802 784 list( $filename, $type) = $filename_info;803 list($filename, $type) = $filename_info; 785 804 786 805 // Add cache tag in case later file deleted to avoid lscache served stale non-existed files @since 4.4.1 787 Tag::add( Tag::TYPE_MIN . '.' . $filename);788 789 $qs_hash = substr( md5( self::get_option( self::ITEM_TIMESTAMP_PURGE_CSS) ), -5);806 Tag::add(Tag::TYPE_MIN . '.' . $filename); 807 808 $qs_hash = substr(md5(self::get_option(self::ITEM_TIMESTAMP_PURGE_CSS)), -5); 790 809 // As filename is alreay realted to filecon md5, no need QS anymore 791 $filepath_prefix = $this->_build_filepath_prefix( $type);810 $filepath_prefix = $this->_build_filepath_prefix($type); 792 811 return LITESPEED_STATIC_URL . $filepath_prefix . $filename . '?ver=' . $qs_hash; 793 812 } … … 799 818 * @access private 800 819 */ 801 private function _parse_js() { 802 $excludes = apply_filters( 'litespeed_optimize_js_excludes', $this->conf( self::O_OPTM_JS_EXC ) ); 803 804 $combine_ext_inl = $this->conf( self::O_OPTM_JS_COMB_EXT_INL ); 820 private function _parse_js() 821 { 822 $excludes = apply_filters('litespeed_optimize_js_excludes', $this->conf(self::O_OPTM_JS_EXC)); 823 824 $combine_ext_inl = $this->conf(self::O_OPTM_JS_COMB_EXT_INL); 805 825 806 826 $src_list = array(); 807 827 $html_list = array(); 808 828 809 $content = preg_replace( '#<!--.*-->#sU', '', $this->content);810 preg_match_all( '#<script([^>]*)>(.*)</script>#isU', $content, $matches, PREG_SET_ORDER);811 foreach ( $matches as $match) {812 $attrs = empty( $match[ 1 ] ) ? array() : Utility::parse_attr( $match[ 1 ]);813 814 if ( isset( $attrs[ 'data-optimized' ] )) {829 $content = preg_replace('#<!--.*-->#sU', '', $this->content); 830 preg_match_all('#<script([^>]*)>(.*)</script>#isU', $content, $matches, PREG_SET_ORDER); 831 foreach ($matches as $match) { 832 $attrs = empty($match[1]) ? array() : Utility::parse_attr($match[1]); 833 834 if (isset($attrs['data-optimized'])) { 815 835 continue; 816 836 } 817 if ( ! empty( $attrs[ 'data-no-optimize' ] )) {837 if (!empty($attrs['data-no-optimize'])) { 818 838 continue; 819 839 } 820 if ( ! empty( $attrs[ 'data-cfasync' ] ) && $attrs[ 'data-cfasync' ] === 'false') {840 if (!empty($attrs['data-cfasync']) && $attrs['data-cfasync'] === 'false') { 821 841 continue; 822 842 } 823 if ( ! empty( $attrs[ 'type' ] ) && $attrs[ 'type' ] != 'text/javascript') {843 if (!empty($attrs['type']) && $attrs['type'] != 'text/javascript') { 824 844 continue; 825 845 } 826 846 827 847 // to avoid multiple replacement 828 if ( in_array( $match[ 0 ], $html_list )) {848 if (in_array($match[0], $html_list)) { 829 849 continue; 830 850 } … … 832 852 $this_src_arr = array(); 833 853 // JS files 834 if ( ! empty( $attrs[ 'src' ] )) {854 if (!empty($attrs['src'])) { 835 855 // Exclude check 836 $js_excluded = Utility::str_hit_array( $attrs[ 'src' ], $excludes);837 $is_internal = Utility::is_internal_file( $attrs[ 'src' ]);838 $is_file = substr( $attrs[ 'src' ], 0, 5) != 'data:';839 $ext_excluded = ! $combine_ext_inl && !$is_internal;840 if ( $js_excluded || $ext_excluded || ! $is_file) {856 $js_excluded = Utility::str_hit_array($attrs['src'], $excludes); 857 $is_internal = Utility::is_internal_file($attrs['src']); 858 $is_file = substr($attrs['src'], 0, 5) != 'data:'; 859 $ext_excluded = !$combine_ext_inl && !$is_internal; 860 if ($js_excluded || $ext_excluded || !$is_file) { 841 861 // Maybe defer 842 if ( $this->cfg_js_defer) {843 $deferred = $this->_js_defer( $match[ 0 ], $attrs[ 'src' ]);844 if ( $deferred) {845 $this->content = str_replace( $match[ 0 ], $deferred, $this->content);862 if ($this->cfg_js_defer) { 863 $deferred = $this->_js_defer($match[0], $attrs['src']); 864 if ($deferred) { 865 $this->content = str_replace($match[0], $deferred, $this->content); 846 866 } 847 867 } 848 868 849 Debug2::debug2( '[Optm] _parse_js bypassed due to ' . ( $js_excluded ? 'js files excluded [hit] ' . $js_excluded : 'external js' ));850 continue; 851 } 852 853 if ( strpos( $attrs[ 'src' ], '/localres/' ) !== false) {854 continue; 855 } 856 857 if ( strpos( $attrs[ 'src' ], 'instant_click' ) !== false) {858 continue; 859 } 860 861 $this_src_arr[ 'src' ] = $attrs[ 'src'];869 Debug2::debug2('[Optm] _parse_js bypassed due to ' . ($js_excluded ? 'js files excluded [hit] ' . $js_excluded : 'external js')); 870 continue; 871 } 872 873 if (strpos($attrs['src'], '/localres/') !== false) { 874 continue; 875 } 876 877 if (strpos($attrs['src'], 'instant_click') !== false) { 878 continue; 879 } 880 881 $this_src_arr['src'] = $attrs['src']; 862 882 } 863 883 // Inline JS 864 elseif ( ! empty( $match[ 2 ] )) {884 elseif (!empty($match[2])) { 865 885 // Debug2::debug( '🌹🌹🌹 ' . $match[2] . '🌹' ); 866 886 // Exclude check 867 $js_excluded = Utility::str_hit_array( $match[ 2 ], $excludes);868 if ( $js_excluded || ! $combine_ext_inl) {887 $js_excluded = Utility::str_hit_array($match[2], $excludes); 888 if ($js_excluded || !$combine_ext_inl) { 869 889 // Maybe defer 870 if ( $this->cfg_js_defer) {871 $deferred = $this->_js_inline_defer( $match[ 2 ], $match[ 1 ]);872 if ( $deferred) {873 $this->content = str_replace( $match[ 0 ], $deferred, $this->content);890 if ($this->cfg_js_defer) { 891 $deferred = $this->_js_inline_defer($match[2], $match[1]); 892 if ($deferred) { 893 $this->content = str_replace($match[0], $deferred, $this->content); 874 894 } 875 895 } 876 Debug2::debug2( '[Optm] _parse_js bypassed due to ' . ( $js_excluded ? 'js excluded [hit] ' . $js_excluded : 'inline js' ) ); 877 continue; 878 } 879 880 $this_src_arr[ 'inl' ] = true; 881 $this_src_arr[ 'src' ] = $match[ 2 ]; 882 if ( $match[ 1 ] ) { 883 $this_src_arr[ 'attrs' ] = $match[ 1 ]; 884 } 885 } 886 else { // Compatibility to those who changed src to data-src already 887 Debug2::debug2( '[Optm] No JS src or inline JS content' ); 896 Debug2::debug2('[Optm] _parse_js bypassed due to ' . ($js_excluded ? 'js excluded [hit] ' . $js_excluded : 'inline js')); 897 continue; 898 } 899 900 $this_src_arr['inl'] = true; 901 $this_src_arr['src'] = $match[2]; 902 if ($match[1]) { 903 $this_src_arr['attrs'] = $match[1]; 904 } 905 } else { // Compatibility to those who changed src to data-src already 906 Debug2::debug2('[Optm] No JS src or inline JS content'); 888 907 continue; 889 908 } 890 909 891 910 $src_list[] = $this_src_arr; 892 $html_list[] = $match[ 0];893 } 894 895 return array( $src_list, $html_list);911 $html_list[] = $match[0]; 912 } 913 914 return array($src_list, $html_list); 896 915 } 897 916 … … 902 921 * @access private 903 922 */ 904 private function _js_inline_defer( $con, $attrs = false, $minified = false ) { 905 if ( strpos( $attrs, 'data-no-defer' ) !== false ) { 906 Debug2::debug2( '[Optm] bypass: attr api data-no-defer' ); 923 private function _js_inline_defer($con, $attrs = false, $minified = false) 924 { 925 if (strpos($attrs, 'data-no-defer') !== false) { 926 Debug2::debug2('[Optm] bypass: attr api data-no-defer'); 907 927 return false; 908 928 } 909 929 910 $hit = Utility::str_hit_array( $con, $this->cfg_js_defer_exc);911 if ( $hit) {912 Debug2::debug2( '[Optm] inline js defer excluded [setting] ' . $hit);930 $hit = Utility::str_hit_array($con, $this->cfg_js_defer_exc); 931 if ($hit) { 932 Debug2::debug2('[Optm] inline js defer excluded [setting] ' . $hit); 913 933 return false; 914 934 } 915 935 916 $con = trim( $con);936 $con = trim($con); 917 937 // Minify JS first 918 if ( ! $minified) { // && $this->cfg_js_defer !== 2919 $con = Optimizer::minify_js( $con);920 } 921 922 if ( ! $con) {938 if (!$minified) { // && $this->cfg_js_defer !== 2 939 $con = Optimizer::minify_js($con); 940 } 941 942 if (!$con) { 923 943 return false; 924 944 } 925 945 926 946 // Check if the content contains ESI nonce or not 927 $con = $this->_preserve_esi( $con);928 929 if ( $this->cfg_js_defer === 2) {947 $con = $this->_preserve_esi($con); 948 949 if ($this->cfg_js_defer === 2) { 930 950 // Drop type attribute from $attrs 931 if ( strpos( $attrs, ' type=' ) !== false) {932 $attrs = preg_replace( '# type=([\'"])([^\1]+)\1#isU', '', $attrs);951 if (strpos($attrs, ' type=') !== false) { 952 $attrs = preg_replace('# type=([\'"])([^\1]+)\1#isU', '', $attrs); 933 953 } 934 954 // Replace DOMContentLoaded 935 $con = str_replace( 'DOMContentLoaded', 'DOMContentLiteSpeedLoaded', $con);955 $con = str_replace('DOMContentLoaded', 'DOMContentLiteSpeedLoaded', $con); 936 956 return '<script' . $attrs . ' type="litespeed/javascript">' . $con . '</script>'; 937 957 // return '<script' . $attrs . ' type="litespeed/javascript" src="data:text/javascript;base64,' . base64_encode( $con ) . '"></script>'; … … 939 959 } 940 960 941 return '<script' . $attrs . ' src="data:text/javascript;base64,' . base64_encode( $con) . '" defer></script>';961 return '<script' . $attrs . ' src="data:text/javascript;base64,' . base64_encode($con) . '" defer></script>'; 942 962 } 943 963 … … 947 967 * @since 3.5.1 948 968 */ 949 private function _preserve_esi( $con ) { 950 $esi_placeholder_list = $this->cls( 'ESI' )->contain_preserve_esi( $con ); 951 if ( ! $esi_placeholder_list ) { 969 private function _preserve_esi($con) 970 { 971 $esi_placeholder_list = $this->cls('ESI')->contain_preserve_esi($con); 972 if (!$esi_placeholder_list) { 952 973 return $con; 953 974 } 954 975 955 foreach ( $esi_placeholder_list as $esi_placeholder) {956 $js_var = '__litespeed_var_' . ( self::$_var_i ++) . '__';957 $con = str_replace( $esi_placeholder, $js_var, $con);976 foreach ($esi_placeholder_list as $esi_placeholder) { 977 $js_var = '__litespeed_var_' . (self::$_var_i++) . '__'; 978 $con = str_replace($esi_placeholder, $js_var, $con); 958 979 $this->_var_preserve_js[] = $js_var . '=' . $esi_placeholder; 959 980 } … … 969 990 * @return array All the src & related raw html list 970 991 */ 971 private function _parse_css() { 972 $excludes = apply_filters( 'litespeed_optimize_css_excludes', $this->conf( self::O_OPTM_CSS_EXC ) ); 973 $ucss_file_exc_inline = apply_filters( 'litespeed_optimize_ucss_file_exc_inline', $this->conf( self::O_OPTM_UCSS_FILE_EXC_INLINE ) ); 974 975 $combine_ext_inl = $this->conf( self::O_OPTM_CSS_COMB_EXT_INL ); 976 977 $css_to_be_removed = apply_filters( 'litespeed_optm_css_to_be_removed', array() ); 992 private function _parse_css() 993 { 994 $excludes = apply_filters('litespeed_optimize_css_excludes', $this->conf(self::O_OPTM_CSS_EXC)); 995 $ucss_file_exc_inline = apply_filters('litespeed_optimize_ucss_file_exc_inline', $this->conf(self::O_OPTM_UCSS_FILE_EXC_INLINE)); 996 997 $combine_ext_inl = $this->conf(self::O_OPTM_CSS_COMB_EXT_INL); 998 999 $css_to_be_removed = apply_filters('litespeed_optm_css_to_be_removed', array()); 978 1000 979 1001 $src_list = array(); … … 984 1006 // $items = $dom->find( 'link' ); 985 1007 986 $content = preg_replace( array( '#<!--.*-->#sU', '#<script([^>]*)>.*</script>#isU', '#<noscript([^>]*)>.*</noscript>#isU' ), '', $this->content);987 preg_match_all( '#<link ([^>]+)/?>|<style([^>]*)>([^<]+)</style>#isU', $content, $matches, PREG_SET_ORDER);988 989 foreach ( $matches as $match) {1008 $content = preg_replace(array('#<!--.*-->#sU', '#<script([^>]*)>.*</script>#isU', '#<noscript([^>]*)>.*</noscript>#isU'), '', $this->content); 1009 preg_match_all('#<link ([^>]+)/?>|<style([^>]*)>([^<]+)</style>#isU', $content, $matches, PREG_SET_ORDER); 1010 1011 foreach ($matches as $match) { 990 1012 // to avoid multiple replacement 991 if ( in_array( $match[ 0 ], $html_list )) {1013 if (in_array($match[0], $html_list)) { 992 1014 continue; 993 1015 } 994 1016 995 if ( $exclude = Utility::str_hit_array( $match[ 0 ], $excludes )) {996 Debug2::debug2( '[Optm] _parse_css bypassed exclude ' . $exclude);1017 if ($exclude = Utility::str_hit_array($match[0], $excludes)) { 1018 Debug2::debug2('[Optm] _parse_css bypassed exclude ' . $exclude); 997 1019 continue; 998 1020 } 999 1021 1000 1022 $this_src_arr = array(); 1001 if ( strpos( $match[ 0 ], '<link' ) === 0) {1002 $attrs = Utility::parse_attr( $match[ 1 ]);1003 if ( empty( $attrs[ 'rel' ] ) || $attrs[ 'rel' ] !== 'stylesheet') {1004 continue; 1005 } 1006 if ( empty( $attrs[ 'href' ] )) {1023 if (strpos($match[0], '<link') === 0) { 1024 $attrs = Utility::parse_attr($match[1]); 1025 if (empty($attrs['rel']) || $attrs['rel'] !== 'stylesheet') { 1026 continue; 1027 } 1028 if (empty($attrs['href'])) { 1007 1029 continue; 1008 1030 } 1009 1031 1010 1032 // Check if need to remove this css 1011 if ( Utility::str_hit_array( $attrs[ 'href' ], $css_to_be_removed )) {1012 Debug2::debug( '[Optm] rm css snippet ' . $attrs[ 'href' ]);1033 if (Utility::str_hit_array($attrs['href'], $css_to_be_removed)) { 1034 Debug2::debug('[Optm] rm css snippet ' . $attrs['href']); 1013 1035 // Delete this css snippet from orig html 1014 $this->content = str_replace( $match[ 0 ], '', $this->content);1036 $this->content = str_replace($match[0], '', $this->content); 1015 1037 1016 1038 continue; … … 1018 1040 1019 1041 // Check if need to inline this css file 1020 if ( Utility::str_hit_array( $attrs[ 'href' ], $ucss_file_exc_inline )) {1021 Debug2::debug( '[Optm] ucss_file_exc_inline hit ' . $attrs[ 'href' ]);1042 if (Utility::str_hit_array($attrs['href'], $ucss_file_exc_inline)) { 1043 Debug2::debug('[Optm] ucss_file_exc_inline hit ' . $attrs['href']); 1022 1044 // Replace this css to inline from orig html 1023 $inline_script = '<style>' . $this->__optimizer->load_file($attrs[ 'href']) . '</style>';1024 $this->content = str_replace( $match[ 0 ], $inline_script, $this->content);1045 $inline_script = '<style>' . $this->__optimizer->load_file($attrs['href']) . '</style>'; 1046 $this->content = str_replace($match[0], $inline_script, $this->content); 1025 1047 1026 1048 continue; … … 1028 1050 1029 1051 // Check Google fonts hit 1030 if ( strpos( $attrs[ 'href' ], 'fonts.googleapis.com' ) !== false) {1052 if (strpos($attrs['href'], 'fonts.googleapis.com') !== false) { 1031 1053 /** 1032 1054 * For async gg fonts, will add webfont into head, hence remove it from buffer and store the matches to use later … … 1034 1056 * @since 3.0 For font display optm, need to parse google fonts URL too 1035 1057 */ 1036 if ( ! in_array( $attrs[ 'href' ], $this->_ggfonts_urls )) {1037 $this->_ggfonts_urls[] = $attrs[ 'href'];1058 if (!in_array($attrs['href'], $this->_ggfonts_urls)) { 1059 $this->_ggfonts_urls[] = $attrs['href']; 1038 1060 } 1039 1061 1040 if ( $this->cfg_ggfonts_rm || $this->cfg_ggfonts_async) {1041 Debug2::debug( '[Optm] rm css snippet [Google fonts] ' . $attrs[ 'href' ]);1042 $this->content = str_replace( $match[ 0 ], '', $this->content);1062 if ($this->cfg_ggfonts_rm || $this->cfg_ggfonts_async) { 1063 Debug2::debug('[Optm] rm css snippet [Google fonts] ' . $attrs['href']); 1064 $this->content = str_replace($match[0], '', $this->content); 1043 1065 1044 1066 continue; … … 1046 1068 } 1047 1069 1048 if ( isset( $attrs[ 'data-optimized' ] )) {1070 if (isset($attrs['data-optimized'])) { 1049 1071 // $this_src_arr[ 'exc' ] = true; 1050 1072 continue; 1051 } 1052 elseif ( ! empty( $attrs[ 'data-no-optimize' ] ) ) { 1073 } elseif (!empty($attrs['data-no-optimize'])) { 1053 1074 // $this_src_arr[ 'exc' ] = true; 1054 1075 continue; 1055 1076 } 1056 1077 1057 $is_internal = Utility::is_internal_file( $attrs[ 'href' ]);1058 $ext_excluded = ! $combine_ext_inl && !$is_internal;1059 if ( $ext_excluded) {1060 Debug2::debug2( '[Optm] Bypassed due to external link');1078 $is_internal = Utility::is_internal_file($attrs['href']); 1079 $ext_excluded = !$combine_ext_inl && !$is_internal; 1080 if ($ext_excluded) { 1081 Debug2::debug2('[Optm] Bypassed due to external link'); 1061 1082 // Maybe defer 1062 if ( $this->cfg_css_async) {1063 $snippet = $this->_async_css( $match[ 0 ]);1064 if ( $snippet != $match[ 0 ]) {1065 $this->content = str_replace( $match[ 0 ], $snippet, $this->content);1083 if ($this->cfg_css_async) { 1084 $snippet = $this->_async_css($match[0]); 1085 if ($snippet != $match[0]) { 1086 $this->content = str_replace($match[0], $snippet, $this->content); 1066 1087 } 1067 1088 } … … 1070 1091 } 1071 1092 1072 if ( ! empty( $attrs[ 'media' ] ) && $attrs[ 'media' ] !== 'all' ) { 1073 $this_src_arr[ 'media' ] = $attrs[ 'media' ]; 1074 } 1075 1076 $this_src_arr[ 'src' ] = $attrs[ 'href' ]; 1077 } 1078 else { // Inline style 1079 if ( ! $combine_ext_inl ) { 1080 Debug2::debug2( '[Optm] Bypassed due to inline' ); 1081 continue; 1082 } 1083 1084 $attrs = Utility::parse_attr( $match[ 2 ] ); 1085 1086 if ( ! empty( $attrs[ 'data-no-optimize' ] ) ) { 1087 continue; 1088 } 1089 1090 if ( ! empty( $attrs[ 'media' ] ) && $attrs[ 'media' ] !== 'all' ) { 1091 $this_src_arr[ 'media' ] = $attrs[ 'media' ]; 1092 } 1093 1094 $this_src_arr[ 'inl' ] = true; 1095 $this_src_arr[ 'src' ] = $match[ 3 ]; 1093 if (!empty($attrs['media']) && $attrs['media'] !== 'all') { 1094 $this_src_arr['media'] = $attrs['media']; 1095 } 1096 1097 $this_src_arr['src'] = $attrs['href']; 1098 } else { // Inline style 1099 if (!$combine_ext_inl) { 1100 Debug2::debug2('[Optm] Bypassed due to inline'); 1101 continue; 1102 } 1103 1104 $attrs = Utility::parse_attr($match[2]); 1105 1106 if (!empty($attrs['data-no-optimize'])) { 1107 continue; 1108 } 1109 1110 if (!empty($attrs['media']) && $attrs['media'] !== 'all') { 1111 $this_src_arr['media'] = $attrs['media']; 1112 } 1113 1114 $this_src_arr['inl'] = true; 1115 $this_src_arr['src'] = $match[3]; 1096 1116 } 1097 1117 1098 1118 $src_list[] = $this_src_arr; 1099 1119 1100 $html_list[] = $match[ 0];1101 } 1102 1103 return array( $src_list, $html_list);1120 $html_list[] = $match[0]; 1121 } 1122 1123 return array($src_list, $html_list); 1104 1124 } 1105 1125 … … 1110 1130 * @access private 1111 1131 */ 1112 private function _async_css_list( $html_list, $src_list ) { 1113 foreach ( $html_list as $k => $ori ) { 1114 if ( ! empty( $src_list[ $k ][ 'inl' ] ) ) { 1132 private function _async_css_list($html_list, $src_list) 1133 { 1134 foreach ($html_list as $k => $ori) { 1135 if (!empty($src_list[$k]['inl'])) { 1115 1136 continue; 1116 1137 } 1117 1138 1118 $html_list[ $k ] = $this->_async_css( $ori);1139 $html_list[$k] = $this->_async_css($ori); 1119 1140 } 1120 1141 return $html_list; … … 1125 1146 * @since 3.5 1126 1147 */ 1127 private function _async_css( $ori ) { 1128 if ( strpos( $ori, 'data-asynced' ) !== false ) { 1129 Debug2::debug2( '[Optm] bypass: attr data-asynced exist' ); 1148 private function _async_css($ori) 1149 { 1150 if (strpos($ori, 'data-asynced') !== false) { 1151 Debug2::debug2('[Optm] bypass: attr data-asynced exist'); 1130 1152 return $ori; 1131 1153 } 1132 1154 1133 if ( strpos( $ori, 'data-no-async' ) !== false) {1134 Debug2::debug2( '[Optm] bypass: attr api data-no-async');1155 if (strpos($ori, 'data-no-async') !== false) { 1156 Debug2::debug2('[Optm] bypass: attr api data-no-async'); 1135 1157 return $ori; 1136 1158 } 1137 1159 1138 1160 // async replacement 1139 $v = str_replace( 'stylesheet', 'preload', $ori);1140 $v = str_replace( '<link', '<link data-asynced="1" as="style" onload="this.onload=null;this.rel=\'stylesheet\'" ', $v);1161 $v = str_replace('stylesheet', 'preload', $ori); 1162 $v = str_replace('<link', '<link data-asynced="1" as="style" onload="this.onload=null;this.rel=\'stylesheet\'" ', $v); 1141 1163 // Append to noscript content 1142 if ( ! defined( 'LITESPEED_GUEST_OPTM' ) && ! $this->conf( self::O_OPTM_NOSCRIPT_RM )) {1143 $v .= '<noscript>' . preg_replace( '/ id=\'[\w-]+\' /U', ' ', $ori) . '</noscript>';1164 if (!defined('LITESPEED_GUEST_OPTM') && !$this->conf(self::O_OPTM_NOSCRIPT_RM)) { 1165 $v .= '<noscript>' . preg_replace('/ id=\'[\w-]+\' /U', ' ', $ori) . '</noscript>'; 1144 1166 } 1145 1167 … … 1152 1174 * @since 3.5 1153 1175 */ 1154 private function _js_defer( $ori, $src ) { 1155 if ( strpos( $ori, ' async' ) !== false ) { 1156 $ori = str_replace( ' async', '', $ori ); 1157 } 1158 1159 if ( strpos( $ori, 'defer' ) !== false ) { 1176 private function _js_defer($ori, $src) 1177 { 1178 if (strpos($ori, ' async') !== false) { 1179 $ori = str_replace(' async', '', $ori); 1180 } 1181 1182 if (strpos($ori, 'defer') !== false) { 1160 1183 return false; 1161 1184 } 1162 if ( strpos( $ori, 'data-deferred' ) !== false) {1163 Debug2::debug2( '[Optm] bypass: attr data-deferred exist');1185 if (strpos($ori, 'data-deferred') !== false) { 1186 Debug2::debug2('[Optm] bypass: attr data-deferred exist'); 1164 1187 return false; 1165 1188 } 1166 if ( strpos( $ori, 'data-no-defer' ) !== false) {1167 Debug2::debug2( '[Optm] bypass: attr api data-no-defer');1189 if (strpos($ori, 'data-no-defer') !== false) { 1190 Debug2::debug2('[Optm] bypass: attr api data-no-defer'); 1168 1191 return false; 1169 1192 } … … 1173 1196 * @since 1.5 1174 1197 */ 1175 if ( Utility::str_hit_array( $src, $this->cfg_js_defer_exc )) {1176 Debug2::debug( '[Optm] js defer exclude ' . $src);1198 if (Utility::str_hit_array($src, $this->cfg_js_defer_exc)) { 1199 Debug2::debug('[Optm] js defer exclude ' . $src); 1177 1200 return false; 1178 1201 } 1179 1202 1180 if ( $this->cfg_js_defer === 2 ) { 1181 if ( strpos( $ori, ' type=' ) !== false ) { 1182 $ori = preg_replace( '# type=([\'"])([^\1]+)\1#isU', '', $ori ); 1183 } 1184 return str_replace( ' src=', ' type="litespeed/javascript" data-src=', $ori ); 1185 } 1186 1187 return str_replace( '></script>', ' defer data-deferred="1"></script>', $ori ); 1188 } 1189 1203 if ($this->cfg_js_defer === 2 || Utility::str_hit_array($src, $this->cfg_js_delay_inc)) { 1204 if (strpos($ori, ' type=') !== false) { 1205 $ori = preg_replace('# type=([\'"])([^\1]+)\1#isU', '', $ori); 1206 } 1207 return str_replace(' src=', ' type="litespeed/javascript" data-src=', $ori); 1208 } 1209 1210 return str_replace('></script>', ' defer data-deferred="1"></script>', $ori); 1211 } 1212 1213 /** 1214 * Delay JS for included setting 1215 * 1216 * @since 5.6 1217 */ 1218 private function _js_delay($ori, $src) 1219 { 1220 if (strpos($ori, ' async') !== false) { 1221 $ori = str_replace(' async', '', $ori); 1222 } 1223 1224 if (strpos($ori, 'defer') !== false) { 1225 return false; 1226 } 1227 if (strpos($ori, 'data-deferred') !== false) { 1228 Debug2::debug2('[Optm] bypass: attr data-deferred exist'); 1229 return false; 1230 } 1231 if (strpos($ori, 'data-no-defer') !== false) { 1232 Debug2::debug2('[Optm] bypass: attr api data-no-defer'); 1233 return false; 1234 } 1235 1236 if (!Utility::str_hit_array($src, $this->cfg_js_delay_inc)) { 1237 return; 1238 } 1239 1240 if (strpos($ori, ' type=') !== false) { 1241 $ori = preg_replace('# type=([\'"])([^\1]+)\1#isU', '', $ori); 1242 } 1243 return str_replace(' src=', ' type="litespeed/javascript" data-src=', $ori); 1244 } 1190 1245 } -
litespeed-cache/trunk/src/purge.cls.php
r2869601 r2954001 611 611 $this->purge_url( $_SERVER[ 'HTTP_REFERER' ] ); 612 612 613 do_action( 'litespeed_purged_front', $_SERVER['HTTP_REFERER'] ); 613 614 wp_redirect( $_SERVER[ 'HTTP_REFERER' ] ); 614 615 exit(); -
litespeed-cache/trunk/tpl/crawler/map.tpl.php
r2683957 r2954001 1 1 <?php 2 2 3 namespace LiteSpeed; 3 defined( 'WPINC' ) || exit; 4 5 defined('WPINC') || exit; 4 6 5 7 $crawler_summary = Crawler::get_summary(); … … 7 9 $__map = Crawler_Map::cls(); 8 10 9 $list = $__map->list_map( 30);11 $list = $__map->list_map(30); 10 12 $count = $__map->count_map(); 11 $pagination = Utility::pagination( $count, 30);13 $pagination = Utility::pagination($count, 30); 12 14 13 15 ?> 14 16 <p class="litespeed-right"> 15 <a href="<?php echo Utility::build_url( Router::ACTION_CRAWLER, Crawler::TYPE_EMPTY); ?>" class="button litespeed-btn-warning">16 <?php echo __( 'Clean Crawler Map', 'litespeed-cache'); ?>17 </a>17 <a href="<?php echo Utility::build_url(Router::ACTION_CRAWLER, Crawler::TYPE_EMPTY); ?>" class="button litespeed-btn-warning"> 18 <?php echo __('Clean Crawler Map', 'litespeed-cache'); ?> 19 </a> 18 20 19 <a href="<?php echo Utility::build_url( Router::ACTION_CRAWLER, Crawler::TYPE_REFRESH_MAP); ?>" class="button button-secondary">20 <?php echo __( 'Refresh Crawler Map', 'litespeed-cache'); ?>21 </a>21 <a href="<?php echo Utility::build_url(Router::ACTION_CRAWLER, Crawler::TYPE_REFRESH_MAP); ?>" class="button button-secondary"> 22 <?php echo __('Refresh Crawler Map', 'litespeed-cache'); ?> 23 </a> 22 24 </p> 23 25 24 26 <p> 25 27 <?php 26 if ( ! empty( $crawler_summary[ 'sitemap_time' ] )) {27 echo sprintf( __( 'Generated at %s', 'litespeed-cache' ), Utility::readable_time( $crawler_summary[ 'sitemap_time' ] ));28 }28 if (!empty($crawler_summary['sitemap_time'])) { 29 echo sprintf(__('Generated at %s', 'litespeed-cache'), Utility::readable_time($crawler_summary['sitemap_time'])); 30 } 29 31 ?> 30 32 </p> 31 33 32 34 <h3 class="litespeed-title"> 33 <?php echo __( 'Sitemap List', 'litespeed-cache'); ?>34 <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/crawler/#map-tab'); ?>35 <?php echo __('Sitemap List', 'litespeed-cache'); ?> 36 <?php Doc::learn_more('https://docs.litespeedtech.com/lscache/lscwp/crawler/#map-tab'); ?> 35 37 </h3> 36 38 37 <?php echo __( 'Sitemap Total', 'litespeed-cache') . ': ' . $count; ?>39 <?php echo __('Sitemap Total', 'litespeed-cache') . ': ' . $count; ?> 38 40 39 <?php echo $pagination; ?> 41 <div style="display: flex; justify-content: space-between;"> 42 <div style="margin-top:10px;"> 43 <form action="<?php echo admin_url('admin.php?page=litespeed-crawler'); ?>" method="post"> 44 <input type="text" name="kw" value="<?php echo !empty($_POST['kw']) ? esc_html($_POST['kw']) : ''; ?>" placeholder="<?php echo __('URL Search'); ?>" style="width: 600px;" /> 45 </form> 46 </div> 47 48 <div class=""> 49 <?php echo $pagination; ?> 50 </div> 51 </div> 52 40 53 <table class="wp-list-table widefat striped"> 41 <thead><tr > 42 <th scope="col">#</th> 43 <th scope="col"><?php echo __( 'URL', 'litespeed-cache' ); ?></th> 44 <th scope="col"><?php echo __( 'Crawler Status', 'litespeed-cache' ); ?></th> 45 <th scope="col"><?php echo __( 'Operation', 'litespeed-cache' ); ?></th> 46 </tr></thead> 54 <thead> 55 <tr> 56 <th scope="col">#</th> 57 <th scope="col"><?php echo __('URL', 'litespeed-cache'); ?></th> 58 <th scope="col"><?php echo __('Crawler Status', 'litespeed-cache'); ?></th> 59 <th scope="col"><?php echo __('Operation', 'litespeed-cache'); ?></th> 60 </tr> 61 </thead> 47 62 <tbody> 48 <?php foreach ( $list as $i => $v) : ?>49 <tr>50 <td><?php echo $i + 1; ?></td>51 <td>52 <?php echo $v[ 'url']; ?>53 </td>54 <td>55 <?php echo Crawler::cls()->display_status( $v[ 'res' ], $v[ 'reason' ]); ?>56 </td>57 <td>58 <a href="<?php echo Utility::build_url( Router::ACTION_CRAWLER, Crawler::TYPE_BLACKLIST_ADD, false, null, array( 'id' => $v[ 'id' ] ) ); ?>" class="button button-secondary"><?php echo __( 'Add to Blocklist', 'litespeed-cache'); ?></a>59 </td>60 </tr>63 <?php foreach ($list as $i => $v) : ?> 64 <tr> 65 <td><?php echo $i + 1; ?></td> 66 <td> 67 <?php echo $v['url']; ?> 68 </td> 69 <td> 70 <?php echo Crawler::cls()->display_status($v['res'], $v['reason']); ?> 71 </td> 72 <td> 73 <a href="<?php echo Utility::build_url(Router::ACTION_CRAWLER, Crawler::TYPE_BLACKLIST_ADD, false, null, array('id' => $v['id'])); ?>" class="button button-secondary"><?php echo __('Add to Blocklist', 'litespeed-cache'); ?></a> 74 </td> 75 </tr> 61 76 <?php endforeach; ?> 62 77 </tbody> … … 65 80 66 81 <p> 67 <i class="litespeed-dot litespeed-bg-success"></i> = <?php echo __( 'Cache Hit', 'litespeed-cache'); ?><br>68 <i class="litespeed-dot litespeed-bg-primary"></i> = <?php echo __( 'Cache Miss', 'litespeed-cache'); ?><br>69 <i class="litespeed-dot litespeed-bg-warning"></i> = <?php echo __( 'Blocklisted due to not cacheable', 'litespeed-cache'); ?><br>70 <i class="litespeed-dot litespeed-bg-danger"></i> = <?php echo __( 'Blocklisted', 'litespeed-cache'); ?><br>82 <i class="litespeed-dot litespeed-bg-success"></i> = <?php echo __('Cache Hit', 'litespeed-cache'); ?><br> 83 <i class="litespeed-dot litespeed-bg-primary"></i> = <?php echo __('Cache Miss', 'litespeed-cache'); ?><br> 84 <i class="litespeed-dot litespeed-bg-warning"></i> = <?php echo __('Blocklisted due to not cacheable', 'litespeed-cache'); ?><br> 85 <i class="litespeed-dot litespeed-bg-danger"></i> = <?php echo __('Blocklisted', 'litespeed-cache'); ?><br> 71 86 </p> -
litespeed-cache/trunk/tpl/page_optm/settings_tuning.tpl.php
r2832517 r2954001 1 1 <?php 2 2 3 namespace LiteSpeed; 3 defined( 'WPINC' ) || exit; 4 5 defined('WPINC') || exit; 4 6 5 7 global $wp_roles; 6 if ( !isset( $wp_roles )) {8 if (!isset($wp_roles)) { 7 9 $wp_roles = new \WP_Roles(); 8 10 } 9 11 10 12 $roles = array(); 11 foreach ( $wp_roles->roles as $k => $v) {12 $roles[ $k ] = $v[ 'name'];13 foreach ($wp_roles->roles as $k => $v) { 14 $roles[$k] = $v['name']; 13 15 } 14 ksort( $roles);16 ksort($roles); 15 17 16 18 ?> 17 19 <h3 class="litespeed-title-short"> 18 <?php echo __( 'Tuning Settings', 'litespeed-cache'); ?>19 <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/pageopt/#tuning-settings-tab'); ?>20 <?php echo __('Tuning Settings', 'litespeed-cache'); ?> 21 <?php Doc::learn_more('https://docs.litespeedtech.com/lscache/lscwp/pageopt/#tuning-settings-tab'); ?> 20 22 </h3> 21 23 22 <table class="wp-list-table striped litespeed-table"> <tbody>23 <t r>24 <t h>25 < ?php $id = Base::O_OPTM_JS_EXC; ?>26 <?php $this->title( $id ); ?>27 </th>28 <td>29 < ?php $this->build_textarea( $id ); ?>30 <div class="litespeed-desc">31 < ?php echo __( 'Listed JS files or inline JS code will not be minified/combined.', 'litespeed-cache' ); ?>32 <?php Doc::full_or_partial_url(); ?>33 <?php Doc::one_per_line(); ?>34 <br /><font class="litespeed-success">35 < ?php echo __( 'API', 'litespeed-cache' ); ?>:36 < ?php echo sprintf( __( 'Filter %s is supported.', 'litespeed-cache' ), '<code>litespeed_optimize_js_excludes</code>' ); ?>37 <?php echo sprintf( __( 'Elements with attribute %s in html code will be excluded.', 'litespeed-cache' ), '<code>data-no-optimize="1"</code>' ); ?>38 <br /><?php echo __( 'Predefined list will also be combined w/ the above settings', 'litespeed-cache' ); ?>: <a href="https://github.com/litespeedtech/lscache_wp/blob/dev/data/js_excludes.txt" target="_blank">https://github.com/litespeedtech/lscache_wp/blob/dev/data/js_excludes.txt</a>39 </font>40 </div>41 </td>42 </tr>24 <table class="wp-list-table striped litespeed-table"> 25 <tbody> 26 <tr> 27 <th> 28 <?php $id = Base::O_OPTM_JS_DELAY_INC; ?> 29 <?php $this->title($id); ?> 30 </th> 31 <td> 32 <?php $this->build_textarea($id); ?> 33 <div class="litespeed-desc"> 34 <?php echo __('Listed JS files or inline JS code will be delayed.', 'litespeed-cache'); ?> 35 <?php Doc::full_or_partial_url(); ?> 36 <?php Doc::one_per_line(); ?> 37 <br /> 38 <font class="litespeed-success"> 39 <?php echo __('API', 'litespeed-cache'); ?>: 40 <?php echo sprintf(__('Filter %s is supported.', 'litespeed-cache'), '<code>litespeed_optm_js_delay_inc</code>'); ?> 41 </font> 42 </div> 43 </td> 44 </tr> 43 45 44 <tr> 45 <th> 46 <?php $id = Base::O_OPTM_JS_DEFER_EXC; ?> 47 <?php $this->title( $id ); ?> 48 </th> 49 <td> 50 <?php $this->build_textarea( $id ); ?> 51 <div class="litespeed-desc"> 52 <?php echo __( 'Listed JS files or inline JS code will not be deferred or delayed.', 'litespeed-cache' ); ?> 53 <?php Doc::full_or_partial_url(); ?> 54 <?php Doc::one_per_line(); ?> 55 <br /><span class="litespeed-success"> 56 <?php echo __( 'API', 'litespeed-cache' ); ?>: 57 <?php echo sprintf( __( 'Filter %s is supported.', 'litespeed-cache' ), '<code>litespeed_optm_js_defer_exc</code>' ); ?> 58 <?php echo sprintf( __( 'Elements with attribute %s in html code will be excluded.', 'litespeed-cache' ), '<code>data-no-defer="1"</code>' ); ?> 59 <br /><?php echo __( 'Predefined list will also be combined w/ the above settings', 'litespeed-cache' ); ?>: <a href="https://github.com/litespeedtech/lscache_wp/blob/dev/data/js_defer_excludes.txt" target="_blank">https://github.com/litespeedtech/lscache_wp/blob/dev/data/js_defer_excludes.txt</a> 60 </span> 61 </div> 62 </td> 63 </tr> 46 <tr> 47 <th> 48 <?php $id = Base::O_OPTM_JS_EXC; ?> 49 <?php $this->title($id); ?> 50 </th> 51 <td> 52 <?php $this->build_textarea($id); ?> 53 <div class="litespeed-desc"> 54 <?php echo __('Listed JS files or inline JS code will not be minified/combined.', 'litespeed-cache'); ?> 55 <?php Doc::full_or_partial_url(); ?> 56 <?php Doc::one_per_line(); ?> 57 <br /> 58 <font class="litespeed-success"> 59 <?php echo __('API', 'litespeed-cache'); ?>: 60 <?php echo sprintf(__('Filter %s is supported.', 'litespeed-cache'), '<code>litespeed_optimize_js_excludes</code>'); ?> 61 <?php echo sprintf(__('Elements with attribute %s in html code will be excluded.', 'litespeed-cache'), '<code>data-no-optimize="1"</code>'); ?> 62 <br /><?php echo __('Predefined list will also be combined w/ the above settings', 'litespeed-cache'); ?>: <a href="https://github.com/litespeedtech/lscache_wp/blob/dev/data/js_excludes.txt" target="_blank">https://github.com/litespeedtech/lscache_wp/blob/dev/data/js_excludes.txt</a> 63 </font> 64 </div> 65 </td> 66 </tr> 64 67 65 <tr> 66 <th> 67 <?php $id = Base::O_OPTM_GM_JS_EXC; ?> 68 <?php $this->title( $id ); ?> 69 </th> 70 <td> 71 <?php $this->build_textarea( $id ); ?> 72 <div class="litespeed-desc"> 73 <?php echo sprintf( __( 'Listed JS files or inline JS code will not be optimized by %s.', 'litespeed-cache' ), '<code>' . Lang::title( Base::O_GUEST ) . '</code>' ); ?> 74 <?php Doc::full_or_partial_url(); ?> 75 <?php Doc::one_per_line(); ?> 76 <br /><span class="litespeed-success"> 77 <?php echo __( 'API', 'litespeed-cache' ); ?>: 78 <?php echo sprintf( __( 'Filter %s is supported.', 'litespeed-cache' ), '<code>litespeed_optm_gm_js_exc</code>' ); ?> 79 <?php echo sprintf( __( 'Elements with attribute %s in html code will be excluded.', 'litespeed-cache' ), '<code>data-no-defer="1"</code>' ); ?> 80 </span> 81 </div> 82 </td> 83 </tr> 68 <tr> 69 <th> 70 <?php $id = Base::O_OPTM_JS_DEFER_EXC; ?> 71 <?php $this->title($id); ?> 72 </th> 73 <td> 74 <?php $this->build_textarea($id); ?> 75 <div class="litespeed-desc"> 76 <?php echo __('Listed JS files or inline JS code will not be deferred or delayed.', 'litespeed-cache'); ?> 77 <?php Doc::full_or_partial_url(); ?> 78 <?php Doc::one_per_line(); ?> 79 <br /><span class="litespeed-success"> 80 <?php echo __('API', 'litespeed-cache'); ?>: 81 <?php echo sprintf(__('Filter %s is supported.', 'litespeed-cache'), '<code>litespeed_optm_js_defer_exc</code>'); ?> 82 <?php echo sprintf(__('Elements with attribute %s in html code will be excluded.', 'litespeed-cache'), '<code>data-no-defer="1"</code>'); ?> 83 <br /><?php echo __('Predefined list will also be combined w/ the above settings', 'litespeed-cache'); ?>: <a href="https://github.com/litespeedtech/lscache_wp/blob/dev/data/js_defer_excludes.txt" target="_blank">https://github.com/litespeedtech/lscache_wp/blob/dev/data/js_defer_excludes.txt</a> 84 </span> 85 </div> 86 </td> 87 </tr> 84 88 85 <tr> 86 <th> 87 <?php $id = Base::O_OPTM_EXC; ?> 88 <?php $this->title( $id ); ?> 89 </th> 90 <td> 91 <?php $this->build_textarea( $id ); ?> 92 <div class="litespeed-desc"> 93 <?php echo __( 'Prevent any optimization of listed pages.', 'litespeed-cache' ); ?> 94 <?php $this->_uri_usage_example(); ?> 95 <br /><span class="litespeed-success"> 96 <?php echo __( 'API', 'litespeed-cache' ); ?>: 97 <?php echo sprintf( __( 'Filter %s is supported.', 'litespeed-cache' ), '<code>litespeed_optm_uri_exc</code>' ); ?> 98 </span> 99 </div> 100 </td> 101 </tr> 89 <tr> 90 <th> 91 <?php $id = Base::O_OPTM_GM_JS_EXC; ?> 92 <?php $this->title($id); ?> 93 </th> 94 <td> 95 <?php $this->build_textarea($id); ?> 96 <div class="litespeed-desc"> 97 <?php echo sprintf(__('Listed JS files or inline JS code will not be optimized by %s.', 'litespeed-cache'), '<code>' . Lang::title(Base::O_GUEST) . '</code>'); ?> 98 <?php Doc::full_or_partial_url(); ?> 99 <?php Doc::one_per_line(); ?> 100 <br /><span class="litespeed-success"> 101 <?php echo __('API', 'litespeed-cache'); ?>: 102 <?php echo sprintf(__('Filter %s is supported.', 'litespeed-cache'), '<code>litespeed_optm_gm_js_exc</code>'); ?> 103 <?php echo sprintf(__('Elements with attribute %s in html code will be excluded.', 'litespeed-cache'), '<code>data-no-defer="1"</code>'); ?> 104 </span> 105 </div> 106 </td> 107 </tr> 102 108 103 <tr> 104 <th> 105 <?php $id = Base::O_OPTM_GUEST_ONLY; ?> 106 <?php $this->title( $id ); ?> 107 </th> 108 <td> 109 <?php $this->build_switch( $id ); ?> 110 <div class="litespeed-desc"> 111 <?php echo __( 'Only optimize pages for guest (not logged in) visitors. If turned this OFF, CSS/JS/CCSS files will be doubled by each user group.', 'litespeed-cache' ); ?> 112 </div> 113 </td> 114 </tr> 109 <tr> 110 <th> 111 <?php $id = Base::O_OPTM_EXC; ?> 112 <?php $this->title($id); ?> 113 </th> 114 <td> 115 <?php $this->build_textarea($id); ?> 116 <div class="litespeed-desc"> 117 <?php echo __('Prevent any optimization of listed pages.', 'litespeed-cache'); ?> 118 <?php $this->_uri_usage_example(); ?> 119 <br /><span class="litespeed-success"> 120 <?php echo __('API', 'litespeed-cache'); ?>: 121 <?php echo sprintf(__('Filter %s is supported.', 'litespeed-cache'), '<code>litespeed_optm_uri_exc</code>'); ?> 122 </span> 123 </div> 124 </td> 125 </tr> 115 126 116 <tr> 117 <th> 118 <?php $id = Base::O_OPTM_EXC_ROLES; ?> 119 <?php $this->title( $id ); ?> 120 </th> 121 <td> 122 <div class="litespeed-desc"> 123 <?php echo __( 'Selected roles will be excluded from all optimizations.', 'litespeed-cache' ); ?> 124 </div> 125 <div class="litespeed-tick-list"> 126 <?php foreach ( $roles as $role => $title ): ?> 127 <?php $this->build_checkbox( $id . '[]', $title, $this->cls( 'Conf' )->in_optm_exc_roles( $role ), $role ); ?> 128 <?php endforeach; ?> 129 </div> 127 <tr> 128 <th> 129 <?php $id = Base::O_OPTM_GUEST_ONLY; ?> 130 <?php $this->title($id); ?> 131 </th> 132 <td> 133 <?php $this->build_switch($id); ?> 134 <div class="litespeed-desc"> 135 <?php echo __('Only optimize pages for guest (not logged in) visitors. If turned this OFF, CSS/JS/CCSS files will be doubled by each user group.', 'litespeed-cache'); ?> 136 </div> 137 </td> 138 </tr> 130 139 131 </td> 132 </tr> 140 <tr> 141 <th> 142 <?php $id = Base::O_OPTM_EXC_ROLES; ?> 143 <?php $this->title($id); ?> 144 </th> 145 <td> 146 <div class="litespeed-desc"> 147 <?php echo __('Selected roles will be excluded from all optimizations.', 'litespeed-cache'); ?> 148 </div> 149 <div class="litespeed-tick-list"> 150 <?php foreach ($roles as $role => $title) : ?> 151 <?php $this->build_checkbox($id . '[]', $title, $this->cls('Conf')->in_optm_exc_roles($role), $role); ?> 152 <?php endforeach; ?> 153 </div> 133 154 134 </tbody></table> 155 </td> 156 </tr> 157 158 </tbody> 159 </table> -
litespeed-cache/trunk/tpl/toolbox/beta_test.tpl.php
r2928795 r2954001 7 7 // Existing public version list 8 8 $v_list = array( 9 '5.6', 10 '5.5.1', 9 11 '5.5', 10 12 '5.4',
Note: See TracChangeset
for help on using the changeset viewer.