Changeset 3123399
- Timestamp:
- 07/22/2024 06:17:47 PM (17 months ago)
- Location:
- litespeed-cache
- Files:
-
- 336 added
- 72 edited
-
tags/6.3 (added)
-
tags/6.3/LICENSE (added)
-
tags/6.3/assets (added)
-
tags/6.3/assets/css (added)
-
tags/6.3/assets/css/fonts (added)
-
tags/6.3/assets/css/fonts/litespeedfont.eot (added)
-
tags/6.3/assets/css/fonts/litespeedfont.svg (added)
-
tags/6.3/assets/css/fonts/litespeedfont.ttf (added)
-
tags/6.3/assets/css/fonts/litespeedfont.woff (added)
-
tags/6.3/assets/css/iziModal.min.css (added)
-
tags/6.3/assets/css/litespeed-legacy.css (added)
-
tags/6.3/assets/css/litespeed.css (added)
-
tags/6.3/assets/img (added)
-
tags/6.3/assets/img/Litespeed.icon.svg (added)
-
tags/6.3/assets/img/iconlscwp.svg (added)
-
tags/6.3/assets/img/icons (added)
-
tags/6.3/assets/img/icons/all.svg (added)
-
tags/6.3/assets/img/icons/all_transients.svg (added)
-
tags/6.3/assets/img/icons/auto_draft.svg (added)
-
tags/6.3/assets/img/icons/cross_icon.svg (added)
-
tags/6.3/assets/img/icons/db.svg (added)
-
tags/6.3/assets/img/icons/empty-cache.svg (added)
-
tags/6.3/assets/img/icons/expired_transient.svg (added)
-
tags/6.3/assets/img/icons/img_optm.svg (added)
-
tags/6.3/assets/img/icons/img_optm_disabled.svg (added)
-
tags/6.3/assets/img/icons/img_webp.svg (added)
-
tags/6.3/assets/img/icons/img_webp_disabled.svg (added)
-
tags/6.3/assets/img/icons/optimize_tables.svg (added)
-
tags/6.3/assets/img/icons/purge-403.svg (added)
-
tags/6.3/assets/img/icons/purge-404.svg (added)
-
tags/6.3/assets/img/icons/purge-500.svg (added)
-
tags/6.3/assets/img/icons/purge-all.svg (added)
-
tags/6.3/assets/img/icons/purge-cssjs.svg (added)
-
tags/6.3/assets/img/icons/purge-front.svg (added)
-
tags/6.3/assets/img/icons/purge-object.svg (added)
-
tags/6.3/assets/img/icons/purge-opcache.svg (added)
-
tags/6.3/assets/img/icons/purge-pages.svg (added)
-
tags/6.3/assets/img/icons/revision.svg (added)
-
tags/6.3/assets/img/icons/spam_comment.svg (added)
-
tags/6.3/assets/img/icons/success_icon.svg (added)
-
tags/6.3/assets/img/icons/trackback-pingback.svg (added)
-
tags/6.3/assets/img/icons/trash_comment.svg (added)
-
tags/6.3/assets/img/icons/trash_post.svg (added)
-
tags/6.3/assets/img/lscwp-logo_90x90.png (added)
-
tags/6.3/assets/img/lscwp_blue_font-icon_22px.svg (added)
-
tags/6.3/assets/img/lscwp_font-icon_32px.svg (added)
-
tags/6.3/assets/img/lscwp_gray-yellow_font-icon_22px.svg (added)
-
tags/6.3/assets/img/lscwp_gray_font-icon_22px.svg (added)
-
tags/6.3/assets/img/lscwp_grayscale_font-icon_22px.svg (added)
-
tags/6.3/assets/img/quic-cloud-icon-16x16.svg (added)
-
tags/6.3/assets/img/quic-cloud-logo-light_stack_300px.png (added)
-
tags/6.3/assets/img/quic-cloud-logo.svg (added)
-
tags/6.3/assets/img/slack-logo.png (added)
-
tags/6.3/assets/js (added)
-
tags/6.3/assets/js/babel.min.js (added)
-
tags/6.3/assets/js/component.cdn.js (added)
-
tags/6.3/assets/js/component.crawler.js (added)
-
tags/6.3/assets/js/css_async.js (added)
-
tags/6.3/assets/js/css_async.min.js (added)
-
tags/6.3/assets/js/guest.docref.js (added)
-
tags/6.3/assets/js/guest.docref.min.js (added)
-
tags/6.3/assets/js/guest.js (added)
-
tags/6.3/assets/js/guest.min.js (added)
-
tags/6.3/assets/js/instant_click.min.js (added)
-
tags/6.3/assets/js/instant_click.ori.js (added)
-
tags/6.3/assets/js/iziModal.min.js (added)
-
tags/6.3/assets/js/js_delay.js (added)
-
tags/6.3/assets/js/js_delay.min.js (added)
-
tags/6.3/assets/js/lazyload.init.js (added)
-
tags/6.3/assets/js/lazyload.lib.js (added)
-
tags/6.3/assets/js/lazyload.min.js (added)
-
tags/6.3/assets/js/litespeed-cache-admin.js (added)
-
tags/6.3/assets/js/react.min.js (added)
-
tags/6.3/assets/js/webfontloader.js (added)
-
tags/6.3/assets/js/webfontloader.min.js (added)
-
tags/6.3/autoload.php (added)
-
tags/6.3/changelog.txt (added)
-
tags/6.3/cli (added)
-
tags/6.3/cli/crawler.cls.php (added)
-
tags/6.3/cli/debug.cls.php (added)
-
tags/6.3/cli/image.cls.php (added)
-
tags/6.3/cli/online.cls.php (added)
-
tags/6.3/cli/option.cls.php (added)
-
tags/6.3/cli/presets.cls.php (added)
-
tags/6.3/cli/purge.cls.php (added)
-
tags/6.3/data (added)
-
tags/6.3/data/.htaccess (added)
-
tags/6.3/data/const.default.ini (added)
-
tags/6.3/data/const.network_default.ini (added)
-
tags/6.3/data/css_excludes.txt (added)
-
tags/6.3/data/esi.nonce.txt (added)
-
tags/6.3/data/esi.nonces.txt (added)
-
tags/6.3/data/js_defer_excludes.txt (added)
-
tags/6.3/data/js_excludes.txt (added)
-
tags/6.3/data/optm_uri_exc.txt (added)
-
tags/6.3/data/preset (added)
-
tags/6.3/data/preset/advanced.data (added)
-
tags/6.3/data/preset/aggressive.data (added)
-
tags/6.3/data/preset/basic.data (added)
-
tags/6.3/data/preset/essentials.data (added)
-
tags/6.3/data/preset/extreme.data (added)
-
tags/6.3/data/ucss_whitelist.txt (added)
-
tags/6.3/guest.vary.php (added)
-
tags/6.3/inc (added)
-
tags/6.3/inc/object.lib.php (added)
-
tags/6.3/lang (added)
-
tags/6.3/lang/litespeed-cache.pot (added)
-
tags/6.3/lib (added)
-
tags/6.3/lib/css-min (added)
-
tags/6.3/lib/css-min/colors.cls.php (added)
-
tags/6.3/lib/css-min/minifier.cls.php (added)
-
tags/6.3/lib/css-min/urirewriter.cls.php (added)
-
tags/6.3/lib/css-min/utils.cls.php (added)
-
tags/6.3/lib/guest.cls.php (added)
-
tags/6.3/lib/html-min.cls.php (added)
-
tags/6.3/lib/jsmin.cls.php (added)
-
tags/6.3/lib/jsmin_data (added)
-
tags/6.3/lib/jsmin_data/keywords_after.txt (added)
-
tags/6.3/lib/jsmin_data/keywords_before.txt (added)
-
tags/6.3/lib/jsmin_data/keywords_reserved.txt (added)
-
tags/6.3/lib/jsmin_data/operators.txt (added)
-
tags/6.3/lib/jsmin_data/operators_after.txt (added)
-
tags/6.3/lib/jsmin_data/operators_before.txt (added)
-
tags/6.3/lib/object-cache.php (added)
-
tags/6.3/lib/php-compatibility.func.php (added)
-
tags/6.3/litespeed-cache.php (added)
-
tags/6.3/package-lock.json (added)
-
tags/6.3/package.json (added)
-
tags/6.3/qc-ping.txt (added)
-
tags/6.3/readme.txt (added)
-
tags/6.3/security.md (added)
-
tags/6.3/src (added)
-
tags/6.3/src/activation.cls.php (added)
-
tags/6.3/src/admin-display.cls.php (added)
-
tags/6.3/src/admin-settings.cls.php (added)
-
tags/6.3/src/admin.cls.php (added)
-
tags/6.3/src/api.cls.php (added)
-
tags/6.3/src/avatar.cls.php (added)
-
tags/6.3/src/base.cls.php (added)
-
tags/6.3/src/cdn (added)
-
tags/6.3/src/cdn-setup.cls.php (added)
-
tags/6.3/src/cdn.cls.php (added)
-
tags/6.3/src/cdn/cloudflare.cls.php (added)
-
tags/6.3/src/cdn/quic.cls.php (added)
-
tags/6.3/src/cloud.cls.php (added)
-
tags/6.3/src/conf.cls.php (added)
-
tags/6.3/src/control.cls.php (added)
-
tags/6.3/src/core.cls.php (added)
-
tags/6.3/src/crawler-map.cls.php (added)
-
tags/6.3/src/crawler.cls.php (added)
-
tags/6.3/src/css.cls.php (added)
-
tags/6.3/src/data.cls.php (added)
-
tags/6.3/src/data.upgrade.func.php (added)
-
tags/6.3/src/data_structure (added)
-
tags/6.3/src/data_structure/avatar.sql (added)
-
tags/6.3/src/data_structure/crawler.sql (added)
-
tags/6.3/src/data_structure/crawler_blacklist.sql (added)
-
tags/6.3/src/data_structure/img_optm.sql (added)
-
tags/6.3/src/data_structure/img_optming.sql (added)
-
tags/6.3/src/data_structure/url.sql (added)
-
tags/6.3/src/data_structure/url_file.sql (added)
-
tags/6.3/src/db-optm.cls.php (added)
-
tags/6.3/src/debug2.cls.php (added)
-
tags/6.3/src/doc.cls.php (added)
-
tags/6.3/src/error.cls.php (added)
-
tags/6.3/src/esi.cls.php (added)
-
tags/6.3/src/file.cls.php (added)
-
tags/6.3/src/gui.cls.php (added)
-
tags/6.3/src/health.cls.php (added)
-
tags/6.3/src/htaccess.cls.php (added)
-
tags/6.3/src/img-optm.cls.php (added)
-
tags/6.3/src/import.cls.php (added)
-
tags/6.3/src/instance.cls.php (added)
-
tags/6.3/src/lang.cls.php (added)
-
tags/6.3/src/localization.cls.php (added)
-
tags/6.3/src/media.cls.php (added)
-
tags/6.3/src/metabox.cls.php (added)
-
tags/6.3/src/object-cache.cls.php (added)
-
tags/6.3/src/object.lib.php (added)
-
tags/6.3/src/optimize.cls.php (added)
-
tags/6.3/src/optimizer.cls.php (added)
-
tags/6.3/src/placeholder.cls.php (added)
-
tags/6.3/src/preset.cls.php (added)
-
tags/6.3/src/purge.cls.php (added)
-
tags/6.3/src/report.cls.php (added)
-
tags/6.3/src/rest.cls.php (added)
-
tags/6.3/src/root.cls.php (added)
-
tags/6.3/src/router.cls.php (added)
-
tags/6.3/src/str.cls.php (added)
-
tags/6.3/src/tag.cls.php (added)
-
tags/6.3/src/task.cls.php (added)
-
tags/6.3/src/tool.cls.php (added)
-
tags/6.3/src/ucss.cls.php (added)
-
tags/6.3/src/utility.cls.php (added)
-
tags/6.3/src/vary.cls.php (added)
-
tags/6.3/src/vpi.cls.php (added)
-
tags/6.3/thirdparty (added)
-
tags/6.3/thirdparty/aelia-currencyswitcher.cls.php (added)
-
tags/6.3/thirdparty/amp.cls.php (added)
-
tags/6.3/thirdparty/autoptimize.cls.php (added)
-
tags/6.3/thirdparty/avada.cls.php (added)
-
tags/6.3/thirdparty/bbpress.cls.php (added)
-
tags/6.3/thirdparty/beaver-builder.cls.php (added)
-
tags/6.3/thirdparty/caldera-forms.cls.php (added)
-
tags/6.3/thirdparty/divi-theme-builder.cls.php (added)
-
tags/6.3/thirdparty/elementor.cls.php (added)
-
tags/6.3/thirdparty/entry.inc.php (added)
-
tags/6.3/thirdparty/facetwp.cls.php (added)
-
tags/6.3/thirdparty/gravity-forms.cls.php (added)
-
tags/6.3/thirdparty/litespeed-check.cls.php (added)
-
tags/6.3/thirdparty/nextgengallery.cls.php (added)
-
tags/6.3/thirdparty/perfmatters.cls.php (added)
-
tags/6.3/thirdparty/theme-my-login.cls.php (added)
-
tags/6.3/thirdparty/user-switching.cls.php (added)
-
tags/6.3/thirdparty/wc-pdf-product-vouchers.cls.php (added)
-
tags/6.3/thirdparty/wcml.cls.php (added)
-
tags/6.3/thirdparty/woo-paypal.cls.php (added)
-
tags/6.3/thirdparty/woocommerce.cls.php (added)
-
tags/6.3/thirdparty/woocommerce.content.tpl.php (added)
-
tags/6.3/thirdparty/woocommerce.tab.tpl.php (added)
-
tags/6.3/thirdparty/wp-polls.cls.php (added)
-
tags/6.3/thirdparty/wp-postratings.cls.php (added)
-
tags/6.3/thirdparty/wpdiscuz.cls.php (added)
-
tags/6.3/thirdparty/wplister.cls.php (added)
-
tags/6.3/thirdparty/wpml.cls.php (added)
-
tags/6.3/thirdparty/wptouch.cls.php (added)
-
tags/6.3/thirdparty/yith-wishlist.cls.php (added)
-
tags/6.3/tpl (added)
-
tags/6.3/tpl/banner (added)
-
tags/6.3/tpl/banner/ajax.php (added)
-
tags/6.3/tpl/banner/cloud_news.tpl.php (added)
-
tags/6.3/tpl/banner/cloud_promo.tpl.php (added)
-
tags/6.3/tpl/banner/new_version.php (added)
-
tags/6.3/tpl/banner/new_version_dev.tpl.php (added)
-
tags/6.3/tpl/banner/score.php (added)
-
tags/6.3/tpl/banner/slack.php (added)
-
tags/6.3/tpl/cache (added)
-
tags/6.3/tpl/cache/entry.tpl.php (added)
-
tags/6.3/tpl/cache/entry_network.tpl.php (added)
-
tags/6.3/tpl/cache/more_settings_tip.tpl.php (added)
-
tags/6.3/tpl/cache/network_settings-advanced.tpl.php (added)
-
tags/6.3/tpl/cache/network_settings-browser.tpl.php (added)
-
tags/6.3/tpl/cache/network_settings-cache.tpl.php (added)
-
tags/6.3/tpl/cache/network_settings-excludes.tpl.php (added)
-
tags/6.3/tpl/cache/network_settings-object.tpl.php (added)
-
tags/6.3/tpl/cache/network_settings-purge.tpl.php (added)
-
tags/6.3/tpl/cache/settings-advanced.tpl.php (added)
-
tags/6.3/tpl/cache/settings-browser.tpl.php (added)
-
tags/6.3/tpl/cache/settings-cache.tpl.php (added)
-
tags/6.3/tpl/cache/settings-esi.tpl.php (added)
-
tags/6.3/tpl/cache/settings-excludes.tpl.php (added)
-
tags/6.3/tpl/cache/settings-object.tpl.php (added)
-
tags/6.3/tpl/cache/settings-purge.tpl.php (added)
-
tags/6.3/tpl/cache/settings-ttl.tpl.php (added)
-
tags/6.3/tpl/cache/settings_inc.browser.tpl.php (added)
-
tags/6.3/tpl/cache/settings_inc.cache_dropquery.tpl.php (added)
-
tags/6.3/tpl/cache/settings_inc.cache_mobile.tpl.php (added)
-
tags/6.3/tpl/cache/settings_inc.cache_resources.tpl.php (added)
-
tags/6.3/tpl/cache/settings_inc.exclude_cookies.tpl.php (added)
-
tags/6.3/tpl/cache/settings_inc.exclude_useragent.tpl.php (added)
-
tags/6.3/tpl/cache/settings_inc.login_cookie.tpl.php (added)
-
tags/6.3/tpl/cache/settings_inc.object.tpl.php (added)
-
tags/6.3/tpl/cache/settings_inc.purge_on_upgrade.tpl.php (added)
-
tags/6.3/tpl/cdn (added)
-
tags/6.3/tpl/cdn/auto_setup.tpl.php (added)
-
tags/6.3/tpl/cdn/entry.tpl.php (added)
-
tags/6.3/tpl/cdn/manage.tpl.php (added)
-
tags/6.3/tpl/cdn/settings.tpl.php (added)
-
tags/6.3/tpl/crawler (added)
-
tags/6.3/tpl/crawler/blacklist.tpl.php (added)
-
tags/6.3/tpl/crawler/entry.tpl.php (added)
-
tags/6.3/tpl/crawler/map.tpl.php (added)
-
tags/6.3/tpl/crawler/settings-general.tpl.php (added)
-
tags/6.3/tpl/crawler/settings-simulation.tpl.php (added)
-
tags/6.3/tpl/crawler/settings-sitemap.tpl.php (added)
-
tags/6.3/tpl/crawler/summary.tpl.php (added)
-
tags/6.3/tpl/dash (added)
-
tags/6.3/tpl/dash/dashboard.tpl.php (added)
-
tags/6.3/tpl/dash/entry.tpl.php (added)
-
tags/6.3/tpl/dash/network_dash.tpl.php (added)
-
tags/6.3/tpl/db_optm (added)
-
tags/6.3/tpl/db_optm/entry.tpl.php (added)
-
tags/6.3/tpl/db_optm/manage.tpl.php (added)
-
tags/6.3/tpl/db_optm/settings.tpl.php (added)
-
tags/6.3/tpl/esi.tpl.php (added)
-
tags/6.3/tpl/esi_widget_edit.php (added)
-
tags/6.3/tpl/general (added)
-
tags/6.3/tpl/general/entry.tpl.php (added)
-
tags/6.3/tpl/general/network_settings.tpl.php (added)
-
tags/6.3/tpl/general/settings.tpl.php (added)
-
tags/6.3/tpl/general/settings_inc.auto_upgrade.tpl.php (added)
-
tags/6.3/tpl/general/settings_inc.guest.tpl.php (added)
-
tags/6.3/tpl/general/settings_tuning.tpl.php (added)
-
tags/6.3/tpl/img_optm (added)
-
tags/6.3/tpl/img_optm/entry.tpl.php (added)
-
tags/6.3/tpl/img_optm/network_settings.tpl.php (added)
-
tags/6.3/tpl/img_optm/settings.media_webp.tpl.php (added)
-
tags/6.3/tpl/img_optm/settings.tpl.php (added)
-
tags/6.3/tpl/img_optm/summary.tpl.php (added)
-
tags/6.3/tpl/inc (added)
-
tags/6.3/tpl/inc/admin_footer.php (added)
-
tags/6.3/tpl/inc/api_key.php (added)
-
tags/6.3/tpl/inc/check_cache_disabled.php (added)
-
tags/6.3/tpl/inc/check_if_network_disable_all.php (added)
-
tags/6.3/tpl/inc/disabled_all.php (added)
-
tags/6.3/tpl/inc/in_upgrading.php (added)
-
tags/6.3/tpl/inc/metabox.php (added)
-
tags/6.3/tpl/inc/modal.footer.php (added)
-
tags/6.3/tpl/inc/modal.header.php (added)
-
tags/6.3/tpl/inc/show_display_installed.php (added)
-
tags/6.3/tpl/inc/show_error_cookie.php (added)
-
tags/6.3/tpl/inc/show_rule_conflict.php (added)
-
tags/6.3/tpl/page_optm (added)
-
tags/6.3/tpl/page_optm/entry.tpl.php (added)
-
tags/6.3/tpl/page_optm/settings_css.tpl.php (added)
-
tags/6.3/tpl/page_optm/settings_html.tpl.php (added)
-
tags/6.3/tpl/page_optm/settings_js.tpl.php (added)
-
tags/6.3/tpl/page_optm/settings_localization.tpl.php (added)
-
tags/6.3/tpl/page_optm/settings_media.tpl.php (added)
-
tags/6.3/tpl/page_optm/settings_media_exc.tpl.php (added)
-
tags/6.3/tpl/page_optm/settings_tuning.tpl.php (added)
-
tags/6.3/tpl/page_optm/settings_tuning_css.tpl.php (added)
-
tags/6.3/tpl/page_optm/settings_vpi.tpl.php (added)
-
tags/6.3/tpl/presets (added)
-
tags/6.3/tpl/presets/entry.tpl.php (added)
-
tags/6.3/tpl/presets/standard.tpl.php (added)
-
tags/6.3/tpl/toolbox (added)
-
tags/6.3/tpl/toolbox/beta_test.tpl.php (added)
-
tags/6.3/tpl/toolbox/edit_htaccess.tpl.php (added)
-
tags/6.3/tpl/toolbox/entry.tpl.php (added)
-
tags/6.3/tpl/toolbox/heartbeat.tpl.php (added)
-
tags/6.3/tpl/toolbox/import_export.tpl.php (added)
-
tags/6.3/tpl/toolbox/log_viewer.tpl.php (added)
-
tags/6.3/tpl/toolbox/purge.tpl.php (added)
-
tags/6.3/tpl/toolbox/report.tpl.php (added)
-
tags/6.3/tpl/toolbox/settings-debug.tpl.php (added)
-
trunk/assets/css/litespeed.css (modified) (1 diff)
-
trunk/assets/js/instant_click.min.js (modified) (1 diff)
-
trunk/assets/js/instant_click.ori.js (modified) (7 diffs)
-
trunk/changelog.txt (modified) (11 diffs)
-
trunk/data/const.default.ini (modified) (1 diff)
-
trunk/data/const.network_default.ini (modified) (1 diff)
-
trunk/data/css_excludes.txt (modified) (1 diff)
-
trunk/data/esi.nonces.txt (modified) (2 diffs)
-
trunk/data/js_defer_excludes.txt (modified) (1 diff)
-
trunk/data/js_excludes.txt (modified) (3 diffs)
-
trunk/lang/litespeed-cache.pot (modified) (61 diffs)
-
trunk/lib/css-min/minifier.cls.php (modified) (2 diffs)
-
trunk/lib/guest.cls.php (modified) (1 diff)
-
trunk/lib/html-min.cls.php (modified) (3 diffs)
-
trunk/lib/object-cache.php (modified) (3 diffs)
-
trunk/litespeed-cache.php (modified) (5 diffs)
-
trunk/readme.txt (modified) (4 diffs)
-
trunk/src/activation.cls.php (modified) (3 diffs)
-
trunk/src/admin-display.cls.php (modified) (4 diffs)
-
trunk/src/admin-settings.cls.php (modified) (1 diff)
-
trunk/src/api.cls.php (modified) (2 diffs)
-
trunk/src/avatar.cls.php (modified) (1 diff)
-
trunk/src/base.cls.php (modified) (8 diffs)
-
trunk/src/cdn-setup.cls.php (modified) (4 diffs)
-
trunk/src/cdn.cls.php (modified) (2 diffs)
-
trunk/src/cdn/cloudflare.cls.php (modified) (2 diffs)
-
trunk/src/cdn/quic.cls.php (modified) (1 diff)
-
trunk/src/cloud.cls.php (modified) (15 diffs)
-
trunk/src/conf.cls.php (modified) (2 diffs)
-
trunk/src/control.cls.php (modified) (2 diffs)
-
trunk/src/core.cls.php (modified) (5 diffs)
-
trunk/src/crawler-map.cls.php (modified) (2 diffs)
-
trunk/src/crawler.cls.php (modified) (4 diffs)
-
trunk/src/data.cls.php (modified) (6 diffs)
-
trunk/src/data.upgrade.func.php (modified) (3 diffs)
-
trunk/src/debug2.cls.php (modified) (3 diffs)
-
trunk/src/error.cls.php (modified) (2 diffs)
-
trunk/src/esi.cls.php (modified) (6 diffs)
-
trunk/src/gui.cls.php (modified) (3 diffs)
-
trunk/src/img-optm.cls.php (modified) (16 diffs)
-
trunk/src/import.cls.php (modified) (3 diffs)
-
trunk/src/lang.cls.php (modified) (3 diffs)
-
trunk/src/localization.cls.php (modified) (2 diffs)
-
trunk/src/media.cls.php (modified) (5 diffs)
-
trunk/src/metabox.cls.php (modified) (1 diff)
-
trunk/src/object-cache.cls.php (modified) (23 diffs)
-
trunk/src/optimize.cls.php (modified) (1 diff)
-
trunk/src/optimizer.cls.php (modified) (1 diff)
-
trunk/src/placeholder.cls.php (modified) (1 diff)
-
trunk/src/preset.cls.php (modified) (1 diff)
-
trunk/src/purge.cls.php (modified) (1 diff)
-
trunk/src/report.cls.php (modified) (1 diff)
-
trunk/src/root.cls.php (modified) (5 diffs)
-
trunk/src/router.cls.php (modified) (1 diff)
-
trunk/src/task.cls.php (modified) (4 diffs)
-
trunk/src/ucss.cls.php (modified) (1 diff)
-
trunk/src/utility.cls.php (modified) (4 diffs)
-
trunk/src/vary.cls.php (modified) (3 diffs)
-
trunk/src/vpi.cls.php (modified) (1 diff)
-
trunk/tpl/banner/cloud_news.tpl.php (modified) (1 diff)
-
trunk/tpl/banner/new_version.php (modified) (1 diff)
-
trunk/tpl/banner/new_version_dev.tpl.php (modified) (1 diff)
-
trunk/tpl/banner/slack.php (modified) (1 diff)
-
trunk/tpl/cache/settings-advanced.tpl.php (modified) (1 diff)
-
trunk/tpl/cdn/auto_setup.tpl.php (modified) (2 diffs)
-
trunk/tpl/dash/dashboard.tpl.php (modified) (1 diff)
-
trunk/tpl/dash/network_dash.tpl.php (modified) (1 diff)
-
trunk/tpl/img_optm/summary.tpl.php (modified) (2 diffs)
-
trunk/tpl/page_optm/settings_html.tpl.php (modified) (1 diff)
-
trunk/tpl/toolbox/beta_test.tpl.php (modified) (1 diff)
-
trunk/tpl/toolbox/edit_htaccess.tpl.php (modified) (3 diffs)
-
trunk/tpl/toolbox/settings-debug.tpl.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
litespeed-cache/trunk/assets/css/litespeed.css
r3076030 r3123399 3489 3489 } 3490 3490 3491 .litespeed-banner-desc iption-content {3491 .litespeed-banner-description-content { 3492 3492 margin: 0px; 3493 3493 line-height: 1.25em; -
litespeed-cache/trunk/assets/js/instant_click.min.js
r2407814 r3123399 1 let mouseoverTimer,lastTouchTimestamp;const prefetches=new Set,prefetchElement=document.createElement("link"),isSupported=prefetchElement.relList&&prefetchElement.relList.supports&&prefetchElement.relList.supports("prefetch")&&window.IntersectionObserver&&"isIntersecting"in IntersectionObserverEntry.prototype,allowQueryString="instantAllowQueryString"in document.body.dataset,allowExternalLinks="instantAllowExternalLinks"in document.body.dataset,useWhitelist="instantWhitelist"in document.body.dataset,mousedownShortcut="instantMousedownShortcut"in document.body.dataset,DELAY_TO_NOT_BE_CONSIDERED_A_TOUCH_INITIATED_ACTION=1111;let delayOnHover=65,useMousedown=!1,useMousedownOnly=!1,useViewport=!1;if("instantIntensity"in document.body.dataset){const e=document.body.dataset.instantIntensity;if("mousedown"==e.substr(0,"mousedown".length))useMousedown=!0,"mousedown-only"==e&&(useMousedownOnly=!0);else if("viewport"==e.substr(0,"viewport".length))navigator.connection&&(navigator.connection.saveData||navigator.connection.effectiveType&&navigator.connection.effectiveType.includes("2g"))||("viewport"==e?document.documentElement.clientWidth*document.documentElement.clientHeight<45e4&&(useViewport=!0):"viewport-all"==e&&(useViewport=!0));else{const t=parseInt(e);isNaN(t)||(delayOnHover=t)}}if(isSupported){const e={capture:!0,passive:!0};if(useMousedownOnly||document.addEventListener("touchstart",touchstartListener,e),useMousedown?mousedownShortcut||document.addEventListener("mousedown",mousedownListener,e):document.addEventListener("mouseover",mouseoverListener,e),mousedownShortcut&&document.addEventListener("mousedown",mousedownShortcutListener,e),useViewport){let e;(e=window.requestIdleCallback?e=>{requestIdleCallback(e,{timeout:1500})}:e=>{e()})(()=>{const e=new IntersectionObserver(t=>{t.forEach(t=>{if(t.isIntersecting){const n=t.target;e.unobserve(n),preload(n.href)}})});document.querySelectorAll("a").forEach(t=>{isPreloadable(t)&&e.observe(t)})})}}function touchstartListener(e){lastTouchTimestamp=performance.now();const t=e.target.closest("a");isPreloadable(t)&&preload(t.href)}function mouseoverListener(e){if(performance.now()-lastTouchTimestamp<DELAY_TO_NOT_BE_CONSIDERED_A_TOUCH_INITIATED_ACTION)return;const t=e.target.closest("a");isPreloadable(t)&&(t.addEventListener("mouseout",mouseoutListener,{passive:!0}),mouseoverTimer=setTimeout(()=>{preload(t.href),mouseoverTimer=void 0},delayOnHover))}function mousedownListener(e){const t=e.target.closest("a");isPreloadable(t)&&preload(t.href)}function mouseoutListener(e){e.relatedTarget&&e.target.closest("a")==e.relatedTarget.closest("a")||mouseoverTimer&&(clearTimeout(mouseoverTimer),mouseoverTimer=void 0)}function mousedownShortcutListener(e){if(performance.now()-lastTouchTimestamp<DELAY_TO_NOT_BE_CONSIDERED_A_TOUCH_INITIATED_ACTION)return;const t=e.target.closest("a");if(e.which>1||e.metaKey||e.ctrlKey)return;if(!t)return;t.addEventListener("click",function(e){1337!=e.detail&&e.preventDefault()},{capture:!0,passive:!1,once:!0});const n=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1,detail:1337});t.dispatchEvent(n)}function isPreloadable(e){if(e&&e.href&&(!useWhitelist||"instant"in e.dataset)&&(allowExternalLinks||e.origin==location.origin||"instant"in e.dataset)&&["http:","https:"].includes(e.protocol)&&("http:"!=e.protocol||"https:"!=location.protocol)&&(allowQueryString||!e.search||"instant"in e.dataset)&&!(e.hash&&e.pathname+e.search==location.pathname+location.search||"noInstant"in e.dataset))return!0}function preload(e){if(prefetches.has(e))return;const t=document.createElement("link");t.rel="prefetch",t.href=e,document.head.appendChild(t),prefetches.add(e)}1 let t,e,n,o,i,a=null,s=65,c=new Set;const r=1111;function d(t){o=performance.now();const e=t.target.closest("a");m(e)&&p(e.href,"high")}function u(t){if(performance.now()-o<r)return;if(!("closest"in t.target))return;const e=t.target.closest("a");m(e)&&(e.addEventListener("mouseout",f,{passive:!0}),i=setTimeout(()=>{p(e.href,"high"),i=void 0},s))}function l(t){const e=t.target.closest("a");m(e)&&p(e.href,"high")}function f(t){t.relatedTarget&&t.target.closest("a")==t.relatedTarget.closest("a")||i&&(clearTimeout(i),i=void 0)}function h(t){if(performance.now()-o<r)return;const e=t.target.closest("a");if(t.which>1||t.metaKey||t.ctrlKey)return;if(!e)return;e.addEventListener("click",function(t){1337!=t.detail&&t.preventDefault()},{capture:!0,passive:!1,once:!0});const n=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1,detail:1337});e.dispatchEvent(n)}function m(o){if(o&&o.href&&(!n||"instant"in o.dataset)){if(o.origin!=location.origin){if(!(e||"instant"in o.dataset)||!a)return}if(["http:","https:"].includes(o.protocol)&&("http:"!=o.protocol||"https:"!=location.protocol)&&(t||!o.search||"instant"in o.dataset)&&!(o.hash&&o.pathname+o.search==location.pathname+location.search||"noInstant"in o.dataset))return!0}}function p(t,e="auto"){if(c.has(t))return;const n=document.createElement("link");n.rel="prefetch",n.href=t,n.fetchPriority=e,n.as="document",document.head.appendChild(n),c.add(t)}!function(){if(!document.createElement("link").relList.supports("prefetch"))return;const o="instantVaryAccept"in document.body.dataset||"Shopify"in window,i=navigator.userAgent.indexOf("Chrome/");i>-1&&(a=parseInt(navigator.userAgent.substring(i+"Chrome/".length)));if(o&&a&&a<110)return;const c="instantMousedownShortcut"in document.body.dataset;t="instantAllowQueryString"in document.body.dataset,e="instantAllowExternalLinks"in document.body.dataset,n="instantWhitelist"in document.body.dataset;const r={capture:!0,passive:!0};let f=!1,v=!1,g=!1;if("instantIntensity"in document.body.dataset){const t=document.body.dataset.instantIntensity;if(t.startsWith("mousedown"))f=!0,"mousedown-only"==t&&(v=!0);else if(t.startsWith("viewport")){const e=navigator.connection&&navigator.connection.saveData,n=navigator.connection&&navigator.connection.effectiveType&&navigator.connection.effectiveType.includes("2g");e||n||("viewport"==t?document.documentElement.clientWidth*document.documentElement.clientHeight<45e4&&(g=!0):"viewport-all"==t&&(g=!0))}else{const e=parseInt(t);isNaN(e)||(s=e)}}v||document.addEventListener("touchstart",d,r);f?c||document.addEventListener("mousedown",l,r):document.addEventListener("mouseover",u,r);c&&document.addEventListener("mousedown",h,r);if(g){let t=window.requestIdleCallback;t||(t=(t=>{t()})),t(function(){const t=new IntersectionObserver(e=>{e.forEach(e=>{if(e.isIntersecting){const n=e.target;t.unobserve(n),p(n.href)}})});document.querySelectorAll("a").forEach(e=>{m(e)&&t.observe(e)})},{timeout:1500})}}(); -
litespeed-cache/trunk/assets/js/instant_click.ori.js
r2407814 r3123399 1 /*! instant.page v5.1.0 - (C) 2019-2020 Alexandre Dieulot - https://instant.page/license */ 2 3 let mouseoverTimer 4 let lastTouchTimestamp 5 const prefetches = new Set() 6 const prefetchElement = document.createElement('link') 7 const isSupported = prefetchElement.relList && prefetchElement.relList.supports && prefetchElement.relList.supports('prefetch') 8 && window.IntersectionObserver && 'isIntersecting' in IntersectionObserverEntry.prototype 9 const allowQueryString = 'instantAllowQueryString' in document.body.dataset 10 const allowExternalLinks = 'instantAllowExternalLinks' in document.body.dataset 11 const useWhitelist = 'instantWhitelist' in document.body.dataset 12 const mousedownShortcut = 'instantMousedownShortcut' in document.body.dataset 13 const DELAY_TO_NOT_BE_CONSIDERED_A_TOUCH_INITIATED_ACTION = 1111 14 15 let delayOnHover = 65 16 let useMousedown = false 17 let useMousedownOnly = false 18 let useViewport = false 19 20 if ('instantIntensity' in document.body.dataset) { 21 const intensity = document.body.dataset.instantIntensity 22 23 if (intensity.substr(0, 'mousedown'.length) == 'mousedown') { 24 useMousedown = true 25 if (intensity == 'mousedown-only') { 26 useMousedownOnly = true 27 } 28 } 29 else if (intensity.substr(0, 'viewport'.length) == 'viewport') { 30 if (!(navigator.connection && (navigator.connection.saveData || (navigator.connection.effectiveType && navigator.connection.effectiveType.includes('2g'))))) { 31 if (intensity == "viewport") { 32 /* Biggest iPhone resolution (which we want): 414 × 896 = 370944 33 * Small 7" tablet resolution (which we don’t want): 600 × 1024 = 614400 34 * Note that the viewport (which we check here) is smaller than the resolution due to the UI’s chrome */ 35 if (document.documentElement.clientWidth * document.documentElement.clientHeight < 450000) { 36 useViewport = true 37 } 1 /*! instant.page v5.2.0 - (C) 2019-2024 Alexandre Dieulot - https://instant.page/license */ 2 3 let _chromiumMajorVersionInUserAgent = null 4 , _speculationRulesType 5 , _allowQueryString 6 , _allowExternalLinks 7 , _useWhitelist 8 , _delayOnHover = 65 9 , _lastTouchstartEvent 10 , _mouseoverTimer 11 , _preloadedList = new Set() 12 13 init() 14 15 function init() { 16 const supportCheckRelList = document.createElement('link').relList 17 const isSupported = supportCheckRelList.supports('prefetch') 18 && supportCheckRelList.supports('modulepreload') 19 // instant.page is meant to be loaded with <script type=module> 20 // (though sometimes webmasters load it as a regular script). 21 // So it’s normally executed (and must not cause JavaScript errors) in: 22 // - Chromium 61+ 23 // - Gecko in Firefox 60+ 24 // - WebKit in Safari 10.1+ (iOS 10.3+, macOS 10.10+) 25 // 26 // The check above used to check for IntersectionObserverEntry.isIntersecting 27 // but module scripts support implies this compatibility — except in Safari 28 // 10.1–12.0, but this prefetch check takes care of it. 29 // 30 // The modulepreload check is used to drop support for Firefox < 115 in order 31 // to lessen maintenance. 32 // This implies Safari 17+ (if it supported prefetch), if we ever support 33 // fetch()-based preloading for Safari we might want to OR that check with 34 // something that Safari 15.4 or 16.4 supports. 35 // Also implies Chromium 66+. 36 37 if (!isSupported) { 38 return 39 } 40 41 const handleVaryAcceptHeader = 'instantVaryAccept' in document.body.dataset || 'Shopify' in window 42 // The `Vary: Accept` header when received in Chromium 79–109 makes prefetches 43 // unusable, as Chromium used to send a different `Accept` header. 44 // It’s applied on all Shopify sites by default, as Shopify is very popular 45 // and is the main source of this problem. 46 // `window.Shopify` only exists on “classic” Shopify sites. Those using 47 // Hydrogen (Remix SPA) aren’t concerned. 48 49 const chromiumUserAgentIndex = navigator.userAgent.indexOf('Chrome/') 50 if (chromiumUserAgentIndex > -1) { 51 _chromiumMajorVersionInUserAgent = parseInt(navigator.userAgent.substring(chromiumUserAgentIndex + 'Chrome/'.length)) 52 } 53 // The user agent client hints API is a theoretically more reliable way to 54 // get Chromium’s version… but it’s not available in Samsung Internet 20. 55 // It also requires a secure context, which would make debugging harder, 56 // and is only available in recent Chromium versions. 57 // In practice, Chromium browsers never shy from announcing "Chrome" in 58 // their regular user agent string, as that maximizes their compatibility. 59 60 if (handleVaryAcceptHeader && _chromiumMajorVersionInUserAgent && _chromiumMajorVersionInUserAgent < 110) { 61 return 62 } 63 64 _speculationRulesType = 'none' 65 if (HTMLScriptElement.supports && HTMLScriptElement.supports('speculationrules')) { 66 const speculationRulesConfig = document.body.dataset.instantSpecrules 67 if (speculationRulesConfig == 'prerender') { 68 _speculationRulesType = 'prerender' 69 } else if (speculationRulesConfig != 'no') { 70 _speculationRulesType = 'prefetch' 71 } 72 } 73 74 const useMousedownShortcut = 'instantMousedownShortcut' in document.body.dataset 75 _allowQueryString = 'instantAllowQueryString' in document.body.dataset 76 _allowExternalLinks = 'instantAllowExternalLinks' in document.body.dataset 77 _useWhitelist = 'instantWhitelist' in document.body.dataset 78 79 let preloadOnMousedown = false 80 let preloadOnlyOnMousedown = false 81 let preloadWhenVisible = false 82 if ('instantIntensity' in document.body.dataset) { 83 const intensityParameter = document.body.dataset.instantIntensity 84 85 if (intensityParameter == 'mousedown' && !useMousedownShortcut) { 86 preloadOnMousedown = true 87 } 88 89 if (intensityParameter == 'mousedown-only' && !useMousedownShortcut) { 90 preloadOnMousedown = true 91 preloadOnlyOnMousedown = true 92 } 93 94 if (intensityParameter == 'viewport') { 95 const isOnSmallScreen = document.documentElement.clientWidth * document.documentElement.clientHeight < 450000 96 // Smartphones are the most likely to have a slow connection, and 97 // their small screen size limits the number of links (and thus 98 // server load). 99 // 100 // Foldable phones (being expensive as of 2023), tablets and PCs 101 // generally have a decent connection, and a big screen displaying 102 // more links that would put more load on the server. 103 // 104 // iPhone 14 Pro Max (want): 430×932 = 400 760 105 // Samsung Galaxy S22 Ultra with display size set to 80% (want): 106 // 450×965 = 434 250 107 // Small tablet (don’t want): 600×960 = 576 000 108 // Those number are virtual screen size, the viewport (used for 109 // the check above) will be smaller with the browser’s interface. 110 111 const isNavigatorConnectionSaveDataEnabled = navigator.connection && navigator.connection.saveData 112 const isNavigatorConnectionLike2g = navigator.connection && navigator.connection.effectiveType && navigator.connection.effectiveType.includes('2g') 113 const isNavigatorConnectionAdequate = !isNavigatorConnectionSaveDataEnabled && !isNavigatorConnectionLike2g 114 115 if (isOnSmallScreen && isNavigatorConnectionAdequate) { 116 preloadWhenVisible = true 38 117 } 39 else if (intensity == "viewport-all") { 40 useViewport = true 41 } 42 } 43 } 44 else { 45 const milliseconds = parseInt(intensity) 46 if (!isNaN(milliseconds)) { 47 delayOnHover = milliseconds 48 } 49 } 50 } 51 52 if (isSupported) { 118 } 119 120 if (intensityParameter == 'viewport-all') { 121 preloadWhenVisible = true 122 } 123 124 const intensityAsInteger = parseInt(intensityParameter) 125 if (!isNaN(intensityAsInteger)) { 126 _delayOnHover = intensityAsInteger 127 } 128 } 129 53 130 const eventListenersOptions = { 54 131 capture: true, … … 56 133 } 57 134 58 if (!useMousedownOnly) { 135 if (preloadOnlyOnMousedown) { 136 document.addEventListener('touchstart', touchstartEmptyListener, eventListenersOptions) 137 } 138 else { 59 139 document.addEventListener('touchstart', touchstartListener, eventListenersOptions) 60 140 } 61 141 62 if (! useMousedown) {142 if (!preloadOnMousedown) { 63 143 document.addEventListener('mouseover', mouseoverListener, eventListenersOptions) 64 144 } 65 else if (!mousedownShortcut) { 66 document.addEventListener('mousedown', mousedownListener, eventListenersOptions)67 }68 69 if ( mousedownShortcut) {145 146 if (preloadOnMousedown) { 147 document.addEventListener('mousedown', mousedownListener, eventListenersOptions) 148 } 149 if (useMousedownShortcut) { 70 150 document.addEventListener('mousedown', mousedownShortcutListener, eventListenersOptions) 71 151 } 72 152 73 if (useViewport) { 74 let triggeringFunction 75 if (window.requestIdleCallback) { 76 triggeringFunction = (callback) => { 77 requestIdleCallback(callback, { 78 timeout: 1500, 79 }) 153 if (preloadWhenVisible) { 154 let requestIdleCallbackOrFallback = window.requestIdleCallback 155 // Safari has no support as of 16.3: https://webkit.org/b/164193 156 if (!requestIdleCallbackOrFallback) { 157 requestIdleCallbackOrFallback = (callback) => { 158 callback() 159 // A smarter fallback like setTimeout is not used because devices that 160 // may eventually be eligible to a Safari version supporting prefetch 161 // will be very powerful. 162 // The weakest devices that could be eligible are the 2017 iPad and 163 // the 2016 MacBook. 80 164 } 81 165 } 82 else { 83 triggeringFunction = (callback) => { 84 callback() 85 } 86 } 87 88 triggeringFunction(() => { 166 167 requestIdleCallbackOrFallback(function observeIntersection() { 89 168 const intersectionObserver = new IntersectionObserver((entries) => { 90 169 entries.forEach((entry) => { 91 170 if (entry.isIntersecting) { 92 const linkElement = entry.target93 intersectionObserver.unobserve( linkElement)94 preload( linkElement.href)171 const anchorElement = entry.target 172 intersectionObserver.unobserve(anchorElement) 173 preload(anchorElement.href) 95 174 } 96 175 }) 97 176 }) 98 177 99 document.querySelectorAll('a').forEach(( linkElement) => {100 if (isPreloadable( linkElement)) {101 intersectionObserver.observe( linkElement)178 document.querySelectorAll('a').forEach((anchorElement) => { 179 if (isPreloadable(anchorElement)) { 180 intersectionObserver.observe(anchorElement) 102 181 } 103 182 }) 183 }, { 184 timeout: 1500, 104 185 }) 105 186 } … … 107 188 108 189 function touchstartListener(event) { 109 /* Chrome on Android calls mouseover before touchcancel so `lastTouchTimestamp` 110 * must be assigned on touchstart to be measured on mouseover. */ 111 lastTouchTimestamp = performance.now() 112 113 const linkElement = event.target.closest('a') 114 115 if (!isPreloadable(linkElement)) { 116 return 117 } 118 119 preload(linkElement.href) 190 _lastTouchstartEvent = event 191 192 const anchorElement = event.target.closest('a') 193 194 if (!isPreloadable(anchorElement)) { 195 return 196 } 197 198 preload(anchorElement.href, 'high') 199 } 200 201 function touchstartEmptyListener(event) { 202 _lastTouchstartEvent = event 120 203 } 121 204 122 205 function mouseoverListener(event) { 123 if (performance.now() - lastTouchTimestamp < DELAY_TO_NOT_BE_CONSIDERED_A_TOUCH_INITIATED_ACTION) { 124 return 125 } 126 127 const linkElement = event.target.closest('a') 128 129 if (!isPreloadable(linkElement)) { 130 return 131 } 132 133 linkElement.addEventListener('mouseout', mouseoutListener, {passive: true}) 134 135 mouseoverTimer = setTimeout(() => { 136 preload(linkElement.href) 137 mouseoverTimer = undefined 138 }, delayOnHover) 206 if (isEventLikelyTriggeredByTouch(event)) { 207 // This avoids uselessly adding a mouseout event listener and setting a timer. 208 return 209 } 210 211 if (!('closest' in event.target)) { 212 return 213 // Without this check sometimes an error “event.target.closest is not a function” is thrown, for unknown reasons 214 // That error denotes that `event.target` isn’t undefined. My best guess is that it’s the Document. 215 // 216 // Details could be gleaned from throwing such an error: 217 //throw new TypeError(`instant.page non-element event target: timeStamp=${~~event.timeStamp}, type=${event.type}, typeof=${typeof event.target}, nodeType=${event.target.nodeType}, nodeName=${event.target.nodeName}, viewport=${innerWidth}x${innerHeight}, coords=${event.clientX}x${event.clientY}, scroll=${scrollX}x${scrollY}`) 218 } 219 const anchorElement = event.target.closest('a') 220 221 if (!isPreloadable(anchorElement)) { 222 return 223 } 224 225 anchorElement.addEventListener('mouseout', mouseoutListener, {passive: true}) 226 227 _mouseoverTimer = setTimeout(() => { 228 preload(anchorElement.href, 'high') 229 _mouseoverTimer = null 230 }, _delayOnHover) 139 231 } 140 232 141 233 function mousedownListener(event) { 142 const linkElement = event.target.closest('a') 143 144 if (!isPreloadable(linkElement)) { 145 return 146 } 147 148 preload(linkElement.href) 234 if (isEventLikelyTriggeredByTouch(event)) { 235 // When preloading only on mousedown, not touch, we need to stop there 236 // because touches send compatibility mouse events including mousedown. 237 // 238 // (When preloading on touchstart, instructions below this block would 239 // have no effect.) 240 return 241 } 242 243 const anchorElement = event.target.closest('a') 244 245 if (!isPreloadable(anchorElement)) { 246 return 247 } 248 249 preload(anchorElement.href, 'high') 149 250 } 150 251 … … 154 255 } 155 256 156 if ( mouseoverTimer) {157 clearTimeout( mouseoverTimer)158 mouseoverTimer = undefined257 if (_mouseoverTimer) { 258 clearTimeout(_mouseoverTimer) 259 _mouseoverTimer = null 159 260 } 160 261 } 161 262 162 263 function mousedownShortcutListener(event) { 163 if (performance.now() - lastTouchTimestamp < DELAY_TO_NOT_BE_CONSIDERED_A_TOUCH_INITIATED_ACTION) { 164 return 165 } 166 167 const linkElement = event.target.closest('a') 264 if (isEventLikelyTriggeredByTouch(event)) { 265 // Due to a high potential for complications with this mousedown shortcut 266 // combined with other parties’ JavaScript code, we don’t want it to run 267 // at all on touch devices, even though mousedown and click are triggered 268 // at almost the same time on touch. 269 return 270 } 271 272 const anchorElement = event.target.closest('a') 168 273 169 274 if (event.which > 1 || event.metaKey || event.ctrlKey) { … … 171 276 } 172 277 173 if (! linkElement) {174 return 175 } 176 177 linkElement.addEventListener('click', function (event) {278 if (!anchorElement) { 279 return 280 } 281 282 anchorElement.addEventListener('click', function (event) { 178 283 if (event.detail == 1337) { 179 284 return … … 184 289 185 290 const customEvent = new MouseEvent('click', {view: window, bubbles: true, cancelable: false, detail: 1337}) 186 linkElement.dispatchEvent(customEvent) 187 } 188 189 function isPreloadable(linkElement) { 190 if (!linkElement || !linkElement.href) { 191 return 192 } 193 194 if (useWhitelist && !('instant' in linkElement.dataset)) { 195 return 196 } 197 198 if (!allowExternalLinks && linkElement.origin != location.origin && !('instant' in linkElement.dataset)) { 199 return 200 } 201 202 if (!['http:', 'https:'].includes(linkElement.protocol)) { 203 return 204 } 205 206 if (linkElement.protocol == 'http:' && location.protocol == 'https:') { 207 return 208 } 209 210 if (!allowQueryString && linkElement.search && !('instant' in linkElement.dataset)) { 211 return 212 } 213 214 if (linkElement.hash && linkElement.pathname + linkElement.search == location.pathname + location.search) { 215 return 216 } 217 218 if ('noInstant' in linkElement.dataset) { 291 anchorElement.dispatchEvent(customEvent) 292 } 293 294 function isEventLikelyTriggeredByTouch(event) { 295 // Touch devices fire “mouseover” and “mousedown” (and other) events after 296 // a touch for compatibility reasons. 297 // This function checks if it’s likely that we’re dealing with such an event. 298 299 if (!_lastTouchstartEvent || !event) { 300 return false 301 } 302 303 if (event.target != _lastTouchstartEvent.target) { 304 return false 305 } 306 307 const now = event.timeStamp 308 // Chromium (tested Chrome 95 and 122 on Android) sometimes uses the same 309 // event.timeStamp value in touchstart, mouseover, and mousedown. 310 // Testable in test/extras/delay-not-considered-touch.html 311 // This is okay for our purpose: two equivalent timestamps will be less 312 // than the max duration, which means they’re related events. 313 // TODO: fill/find Chromium bug 314 const durationBetweenLastTouchstartAndNow = now - _lastTouchstartEvent.timeStamp 315 316 const MAX_DURATION_TO_BE_CONSIDERED_TRIGGERED_BY_TOUCHSTART = 2500 317 // How long after a touchstart event can a simulated mouseover/mousedown event fire? 318 // /test/extras/delay-not-considered-touch.html tries to answer that question. 319 // I saw up to 1450 ms on an overwhelmed Samsung Galaxy S2. 320 // On the other hand, how soon can an unrelated mouseover event happen after an unrelated touchstart? 321 // Meaning the user taps a link, then grabs their pointing device and clicks another/the same link. 322 // That scenario could occur if a user taps a link, thinks it hasn’t worked, and thus fall back to their pointing device. 323 // I do that in about 1200 ms on a Chromebook. In which case this function returns a false positive. 324 // False positives are okay, as this function is only used to decide to abort handling mouseover/mousedown/mousedownShortcut. 325 // False negatives could lead to unforeseen state, particularly in mousedownShortcutListener. 326 327 return durationBetweenLastTouchstartAndNow < MAX_DURATION_TO_BE_CONSIDERED_TRIGGERED_BY_TOUCHSTART 328 329 // TODO: Investigate if pointer events could be used. 330 // https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerType 331 332 // TODO: Investigate if InputDeviceCapabilities could be used to make it 333 // less hacky on Chromium browsers. 334 // https://developer.mozilla.org/en-US/docs/Web/API/InputDeviceCapabilities_API 335 // https://wicg.github.io/input-device-capabilities/ 336 // Needs careful reading of the spec and tests (notably, what happens with a 337 // mouse connected to an Android or iOS smartphone?) to make sure it’s solid. 338 // Also need to judge if WebKit could implement it differently, as they 339 // don’t mind doing when a spec gives room to interpretation. 340 // It seems to work well on Chrome on ChromeOS. 341 342 // TODO: Consider using event screen position as another heuristic. 343 } 344 345 function isPreloadable(anchorElement) { 346 if (!anchorElement || !anchorElement.href) { 347 return 348 } 349 350 if (_useWhitelist && !('instant' in anchorElement.dataset)) { 351 return 352 } 353 354 if (anchorElement.origin != location.origin) { 355 let allowed = _allowExternalLinks || 'instant' in anchorElement.dataset 356 if (!allowed || !_chromiumMajorVersionInUserAgent) { 357 // Chromium-only: see comment on “restrictive prefetch” and “cross-site speculation rules prefetch” 358 return 359 } 360 } 361 362 if (!['http:', 'https:'].includes(anchorElement.protocol)) { 363 return 364 } 365 366 if (anchorElement.protocol == 'http:' && location.protocol == 'https:') { 367 return 368 } 369 370 if (!_allowQueryString && anchorElement.search && !('instant' in anchorElement.dataset)) { 371 return 372 } 373 374 if (anchorElement.hash && anchorElement.pathname + anchorElement.search == location.pathname + location.search) { 375 return 376 } 377 378 if ('noInstant' in anchorElement.dataset) { 219 379 return 220 380 } … … 223 383 } 224 384 225 function preload(url) { 226 if (prefetches.has(url)) { 227 return 228 } 229 230 const prefetcher = document.createElement('link') 231 prefetcher.rel = 'prefetch' 232 prefetcher.href = url 233 document.head.appendChild(prefetcher) 234 235 prefetches.add(url) 236 } 385 function preload(url, fetchPriority = 'auto') { 386 if (_preloadedList.has(url)) { 387 return 388 } 389 390 if (_speculationRulesType != 'none') { 391 preloadUsingSpeculationRules(url) 392 } else { 393 preloadUsingLinkElement(url, fetchPriority) 394 } 395 396 _preloadedList.add(url) 397 } 398 399 function preloadUsingSpeculationRules(url) { 400 const scriptElement = document.createElement('script') 401 scriptElement.type = 'speculationrules' 402 403 scriptElement.textContent = JSON.stringify({ 404 [_speculationRulesType]: [{ 405 source: 'list', 406 urls: [url] 407 }] 408 }) 409 410 // When using speculation rules, cross-site prefetch is supported, but will 411 // only work if the user has no cookies for the destination site. The 412 // prefetch will not be sent, if the user does have such cookies. 413 414 document.head.appendChild(scriptElement) 415 } 416 417 function preloadUsingLinkElement(url, fetchPriority = 'auto') { 418 const linkElement = document.createElement('link') 419 linkElement.rel = 'prefetch' 420 linkElement.href = url 421 422 linkElement.fetchPriority = fetchPriority 423 // By default, a prefetch is loaded with a low priority. 424 // When there’s a fair chance that this prefetch is going to be used in the 425 // near term (= after a touch/mouse event), giving it a high priority helps 426 // make the page load faster in case there are other resources loading. 427 // Prioritizing it implicitly means deprioritizing every other resource 428 // that’s loading on the page. Due to HTML documents usually being much 429 // smaller than other resources (notably images and JavaScript), and 430 // prefetches happening once the initial page is sufficiently loaded, 431 // this theft of bandwidth should rarely be detrimental. 432 433 linkElement.as = 'document' 434 // as=document is Chromium-only and allows cross-origin prefetches to be 435 // usable for navigation. They call it “restrictive prefetch” and intend 436 // to remove it: https://crbug.com/1352371 437 // 438 // This document from the Chrome team dated 2022-08-10 439 // https://docs.google.com/document/d/1x232KJUIwIf-k08vpNfV85sVCRHkAxldfuIA5KOqi6M 440 // claims (I haven’t tested) that data- and battery-saver modes as well as 441 // the setting to disable preloading do not disable restrictive prefetch, 442 // unlike regular prefetch. That’s good for prefetching on a touch/mouse 443 // event, but might be bad when prefetching every link in the viewport. 444 445 document.head.appendChild(linkElement) 446 } -
litespeed-cache/trunk/changelog.txt
r3009052 r3123399 161 161 * **GUI** Added `litespeed_media_ignore_remote_missing_sizes` API description. 162 162 * **CCSS** Fixed an issue where CCSS was unexpectedly bypassed if `CSS Combine` was OFF and `UCSS Inline` was ON. (Ruikai) 163 * **Debug** Added respo sne headers to debug log. (Kevin)163 * **Debug** Added response headers to debug log. (Kevin) 164 164 165 165 = 4.6 - Mar 29 2022 = … … 227 227 * **Cache** When caching, no longer send a purge request for CSS/JS removal to avoid cache engine conflicts. 228 228 * 🐞**Core** Optimized SQL queries while autoloading if expected options are missing; reduced by 7 and 3 queries on backend and frontend respectively. (#396425 Jackson) 229 * **Page Optimize** Fixed a 404 issue that occur ed when upgrading the plugin manually, with a package upload or through the plugin manager. (Tobolo/Małgorzata/Abe)229 * **Page Optimize** Fixed a 404 issue that occurred when upgrading the plugin manually, with a package upload or through the plugin manager. (Tobolo/Małgorzata/Abe) 230 230 * **API** Added `litespeed_ccss_url` and `litespeed_ucss_url` API to manipulate the request URL for CCSS and UCSS. 231 231 * **REST** Fixed a potential warning when detecting cacheable status on REST call. (rafaucau) … … 245 245 * ☁️**Cloud** Fixed an issue with PHP notices when inquiring about quota usage for a service not currently in use. 246 246 * **GUI** Added GO detail warning. (n111) 247 * **GUI** Moved "quota wil be still in use" warning from Guest Mode to Guest Optimization section.247 * **GUI** Moved "quota will be still in use" warning from Guest Mode to Guest Optimization section. 248 248 * **API** Added `LITESPEED_CFG_HTACCESS` PHP Constant to specify .htaccess path. 249 249 * **API** Added `litespeed_qs_forbidden` hook to bypass `?LSCWP_CTRL=` query string. (minhduc) … … 282 282 * 🐞**UCSS** If UCSS generation fails the generated error will no longer be served inside the file. (Ryan D) 283 283 * **Log** Updated the Debug log to use less code for prefix. 284 * **3rd** Always respect `DONOTCACHEPAGE` constant defin ation to fix DIVI dynamic css calculation process.284 * **3rd** Always respect `DONOTCACHEPAGE` constant definition to fix DIVI dynamic css calculation process. 285 285 286 286 = 4.3 - Aug 16 2021 = … … 414 414 * **CCSS** Fixed CCSS/UCSS manual cron timeout issue. 415 415 * **CCSS** Only 10 items will be kept for CCSS history. 416 * **CCSS** The appearance of CCSS Purge in the topbar menu will be determined by the exist ance of CCSS cache, and not the setting only.416 * **CCSS** The appearance of CCSS Purge in the topbar menu will be determined by the existence of CCSS cache, and not the setting only. 417 417 * **CCSS** To avoid stuck queues when the current request keeps failing, the CCSS queue will always drop once requested. 418 418 * **CCSS** CCSS will no longer hide adminbar. … … 549 549 * **Page Optimize** Refactored CSS/JS optimization. 550 550 * **Page Optimize** CSS and JS Combine now each save to a single file without memory usage issues. 551 * **CSS** Inline CSS Minify is now a part of CSS Minify, and will respect th roriginal priorities. (thanks to @galbaras)551 * **CSS** Inline CSS Minify is now a part of CSS Minify, and will respect the original priorities. (thanks to @galbaras) 552 552 * **JS** JS Combine now generates a single JS file in the footer. (Special thanks to @ankit) 553 553 * **JS** JS Combine now combines external JS files, too. (Thanks to @ankit) … … 589 589 * 🐞**Page Optimize** Fixed CSS optimization compatibility for CSS dynamically generated with PHP. 590 590 * **Page Optimize** Added the ability to defer JS even when the resource is excluded from other JS optimizations. (@slr1979) 591 * **ESI** Added support for ESI last param ater inline value.591 * **ESI** Added support for ESI last parameter inline value. 592 592 * **3rd** YITH Wishlist, when cached for the first time, will no longer send sub requests. 593 593 … … 812 812 * 🌱**REST** New REST TTL setting. (@thekendog) 813 813 * 🌱**CDN** New setting `HTML Attribute To Replace`. CDN can now support any HTML attribute to be replaced. (@danushkaj91) 814 * 🌱**Debug** Debug URI includes/excludes set ings.814 * 🌱**Debug** Debug URI includes/excludes settings. 815 815 * 🌱**Crawler** 🐞 Support for multiple domains in custom sitemap. (@alchem) 816 816 * 🌱**Crawler** New Crawler dashboard. New sitemap w/ crawler status. New blacklist w/ reason. … … 840 840 * **OPcache** Purged all opcache when updating cache file. (@closte #170) 841 841 * **CLI** CLI cmd renamed. 842 * **CLI** Well-format ed table to show all options.842 * **CLI** Well-formatted table to show all options. 843 843 * **Purge** Only purge related posts that have a status of "published" to avoid unnecessary "draft" purges. (@Jakub Knytl) 844 844 * **GUI** Removed basic/adv mode for settings. Moved non-cache settings to its own menu. … … 851 851 * **Conf** Config setting renamed and uniformed. 852 852 * **Conf** Dropped `Conf::option()`. Used `Conf::val()` instead. 853 * **Conf** Improved conf initialization and upgrade conver tion workflow.853 * **Conf** Improved conf initialization and upgrade conversion workflow. 854 854 * **Core** Code base refactored. New namespace LiteSpeed. 855 855 * **API** New API: iframe lazyload exclude filter. … … 1242 1242 = 2.4 - Jul 2 2018 = 1243 1243 * [NEW FEATURE] <strong>Media</strong> Added lossless optimization. 1244 * [NEW FEATURE] <strong>Media</strong> Added Request Orig nal Images ON/OFF.1244 * [NEW FEATURE] <strong>Media</strong> Added Request Original Images ON/OFF. 1245 1245 * [NEW FEATURE] <strong>Media</strong> Added Request WebP ON/OFF. (@JMCA2) 1246 1246 * [IMPROVEMENT] <strong>Media</strong> Improved optimization tools to archive maximum compression and score. -
litespeed-cache/trunk/data/const.default.ini
r3076030 r3123399 267 267 debug-cookie = false 268 268 269 ; O_DEBUG_COLLAPS _QS270 debug-collaps _qs = false269 ; O_DEBUG_COLLAPSE_QS 270 debug-collapse_qs = false 271 271 272 272 ; O_DEBUG_INC -
litespeed-cache/trunk/data/const.network_default.ini
r3076030 r3123399 125 125 debug-cookie = false 126 126 127 ; O_DEBUG_COLLAPS _QS128 debug-collaps _qs = false127 ; O_DEBUG_COLLAPSE_QS 128 debug-collapse_qs = false 129 129 130 130 ; O_DEBUG_INC -
litespeed-cache/trunk/data/css_excludes.txt
r2443924 r3123399 20 20 #banner- 21 21 #map- 22 #text- box-22 #text- 23 23 #page-header- 24 24 #section_ -
litespeed-cache/trunk/data/esi.nonces.txt
r3076030 r3123399 46 46 swpmtxnonce 47 47 48 # The Events Calendar 49 _tec_view_rest_nonce_primary 50 _tec_view_rest_nonce_secondary 51 48 52 # wpDataTables #986128 49 53 wdt* … … 73 77 # Premium Addons for Elementor 74 78 pa-blog-widget-nonce 79 80 # WPUF User Frontend 81 wpuf* private 82 83 # MetForm 84 form_nonce 85 86 # Mobile hamburger menu - jetMenu #306983 #163710 PR#419 87 tgmpa-* 88 bulk-* 89 90 # WP Data Access 91 wpda-* 92 -
litespeed-cache/trunk/data/js_defer_excludes.txt
r3076030 r3123399 6 6 # JS file URL excludes 7 7 adsbygoogle 8 turnstile 9 challenges.cloudflare.com 8 10 9 11 stats.wp.com/e- 10 12 _stq 11 13 ## JetPack Stats 14 15 # Cloudflare turnstile - Tobolo 16 turnstile 17 challenges.cloudflare.com -
litespeed-cache/trunk/data/js_excludes.txt
r2869601 r3123399 12 12 /syntaxhighlighter/ 13 13 spotlight-social-photo-feeds ## https://docs.spotlightwp.com/article/757-autoptimize-compatibility @Tobolo 14 challenges.cloudflare.com 14 15 15 16 # Inline JS excludes … … 19 20 dataLayer 20 21 adsbygoogle 22 turnstile 21 23 22 24 block_tdi_ ## Theme: Newspaper by tagDiv.com … … 29 31 _stq 30 32 ## JetPack Stats 33 34 # Cloudflare turnstile - Tobolo 35 turnstile 36 challenges.cloudflare.com -
litespeed-cache/trunk/lang/litespeed-cache.pot
r3076030 r3123399 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: LiteSpeed Cache 6. 2\n"5 "Project-Id-Version: LiteSpeed Cache 6.3\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n" 7 "POT-Creation-Date: 2024-0 4-23 18:38:49+00:00\n"7 "POT-Creation-Date: 2024-07-22 17:55:22+00:00\n" 8 8 "MIME-Version: 1.0\n" 9 9 "Content-Type: text/plain; charset=UTF-8\n" … … 45 45 msgstr "" 46 46 47 #: src/activation.cls.php:50 8 src/activation.cls.php:51347 #: src/activation.cls.php:509 src/activation.cls.php:514 48 48 msgid "Failed to upgrade." 49 49 msgstr "" 50 50 51 #: src/activation.cls.php:51 751 #: src/activation.cls.php:518 52 52 msgid "Upgraded successfully." 53 53 msgstr "" … … 74 74 msgstr "" 75 75 76 #: src/admin-display.cls.php:132 src/gui.cls.php:6 2876 #: src/admin-display.cls.php:132 src/gui.cls.php:638 77 77 #: tpl/dash/dashboard.tpl.php:52 tpl/dash/network_dash.tpl.php:27 78 78 #: tpl/presets/standard.tpl.php:24 … … 81 81 82 82 #: src/admin-display.cls.php:134 tpl/dash/dashboard.tpl.php:53 83 #: tpl/dash/network_dash.tpl.php:28 83 84 msgid "Page Optimization" 84 85 msgstr "" … … 88 89 msgstr "" 89 90 90 #: src/admin-display.cls.php:138 src/lang.cls.php:25 191 #: src/admin-display.cls.php:138 src/lang.cls.php:253 91 92 msgid "Crawler" 92 93 msgstr "" … … 144 145 msgstr "" 145 146 146 #: src/admin-display.cls.php:295 src/gui.cls.php:6 19147 #: src/admin-display.cls.php:295 src/gui.cls.php:629 147 148 msgid "Settings" 148 149 msgstr "" … … 222 223 #: src/admin-display.cls.php:1230 tpl/cache/settings-esi.tpl.php:95 223 224 #: tpl/page_optm/settings_css.tpl.php:192 224 #: tpl/page_optm/settings_html.tpl.php:1 06225 #: tpl/page_optm/settings_html.tpl.php:123 225 226 #: tpl/page_optm/settings_media.tpl.php:245 226 227 #: tpl/page_optm/settings_media_exc.tpl.php:26 … … 232 233 #: tpl/page_optm/settings_tuning_css.tpl.php:24 233 234 #: tpl/page_optm/settings_tuning_css.tpl.php:84 234 #: tpl/toolbox/edit_htaccess.tpl.php:5 4 tpl/toolbox/edit_htaccess.tpl.php:71235 #: tpl/toolbox/edit_htaccess.tpl.php:58 tpl/toolbox/edit_htaccess.tpl.php:76 235 236 msgid "API" 236 237 msgstr "" … … 309 310 310 311 #: src/cdn-setup.cls.php:79 311 msgid "There was an error during CDNsetup: "312 msgid "There was an error during QUIC.cloud CDN auto setup: " 312 313 msgstr "" 313 314 … … 343 344 msgstr "" 344 345 345 #: src/cdn-setup.cls.php:34 8src/cloud.cls.php:829 src/cloud.cls.php:837346 #: src/cloud.cls.php:125 2346 #: src/cdn-setup.cls.php:349 src/cloud.cls.php:829 src/cloud.cls.php:837 347 #: src/cloud.cls.php:1255 347 348 msgid "Message from QUIC.cloud server" 348 349 msgstr "" 349 350 350 351 #: src/cloud.cls.php:388 src/cloud.cls.php:401 src/cloud.cls.php:445 351 #: src/cloud.cls.php:470 src/cloud.cls.php:623 src/cloud.cls.php:122 1352 #: src/cloud.cls.php:470 src/cloud.cls.php:623 src/cloud.cls.php:1224 352 353 msgid "Cloud Error" 353 354 msgstr "" … … 409 410 msgstr "" 410 411 411 #: src/cloud.cls.php:913 src/cloud.cls.php:124 1412 #: src/cloud.cls.php:913 src/cloud.cls.php:1244 412 413 msgid "Failed to communicate with QUIC.cloud server" 413 414 msgstr "" … … 427 428 msgstr "" 428 429 429 #: src/cloud.cls.php:105 6430 #: src/cloud.cls.php:1057 430 431 msgid "Cloud REST Error" 431 432 msgstr "" 432 433 433 #: src/cloud.cls.php:1076 434 #: src/cloud.cls.php:1060 435 msgid "Unauthorized access to REST API. Your token has expired." 436 msgstr "" 437 438 #: src/cloud.cls.php:1079 434 439 msgid "Unknown error." 435 440 msgstr "" 436 441 437 #: src/cloud.cls.php:108 0442 #: src/cloud.cls.php:1083 438 443 msgid "Contact QUIC.cloud support" 439 444 msgstr "" 440 445 441 #: src/cloud.cls.php:108 2446 #: src/cloud.cls.php:1085 442 447 msgid "Cloud REST API returned error: " 443 448 msgstr "" 444 449 445 #: src/cloud.cls.php:126 0450 #: src/cloud.cls.php:1263 446 451 msgid "" 447 452 "Applied for Domain Key successfully. Please wait for result. Domain Key will " … … 449 454 msgstr "" 450 455 451 #: src/cloud.cls.php:131 6456 #: src/cloud.cls.php:1319 452 457 msgid "" 453 458 "Congratulations, your Domain Key has been approved! The setting has been " … … 455 460 msgstr "" 456 461 457 #: src/cloud.cls.php:141 5462 #: src/cloud.cls.php:1416 458 463 msgid "QUIC.cloud account has been created and successfully linked." 459 464 msgstr "" 460 465 461 #: src/cloud.cls.php:141 7466 #: src/cloud.cls.php:1418 462 467 msgid "QUIC.cloud account has been successfully linked." 463 468 msgstr "" 464 469 465 #: src/cloud.cls.php:1425 470 #: src/cloud.cls.php:1427 471 msgid "Domain Key hash nonce missing." 472 msgstr "" 473 474 #: src/cloud.cls.php:1435 475 msgid "Domain Key hash nonce mismatch. Please correct your server clock." 476 msgstr "" 477 478 #: src/cloud.cls.php:1440 466 479 msgid "Domain Key hash mismatch" 467 480 msgstr "" 468 481 469 #: src/cloud.cls.php:1567 482 #: src/cloud.cls.php:1452 483 msgid "Failed to verify domain nonce." 484 msgstr "" 485 486 #: src/cloud.cls.php:1585 470 487 msgid "Sync credit allowance with Cloud Server successfully." 471 488 msgstr "" … … 533 550 msgstr "" 534 551 535 #: src/data.upgrade.func.php:135 src/lang.cls.php:15 1552 #: src/data.upgrade.func.php:135 src/lang.cls.php:152 536 553 msgid "JS Combine" 537 554 msgstr "" … … 618 635 619 636 #: src/doc.cls.php:92 src/doc.cls.php:147 tpl/cdn/manage.tpl.php:67 620 #: tpl/dash/dashboard.tpl.php:46 tpl/dash/dashboard.tpl.php:61 3637 #: tpl/dash/dashboard.tpl.php:46 tpl/dash/dashboard.tpl.php:618 621 638 #: tpl/img_optm/summary.tpl.php:48 tpl/inc/check_cache_disabled.php:42 622 639 msgid "Learn More" … … 679 696 #: src/error.cls.php:76 680 697 msgid "" 681 "You have too many notified images, please pull down notified images first." 698 "You have images waiting to be pulled. Please wait for the automatic pull to " 699 "complete, or pull them down manually now." 682 700 msgstr "" 683 701 … … 755 773 msgstr "" 756 774 757 #: src/error.cls.php:16 4775 #: src/error.cls.php:163 758 776 msgid "Previous request too recent. Please try again later." 759 777 msgstr "" 760 778 761 #: src/error.cls.php:16 9779 #: src/error.cls.php:168 762 780 msgid "Previous request too recent. Please try again after %s." 763 781 msgstr "" 764 782 765 #: src/error.cls.php:17 5783 #: src/error.cls.php:174 766 784 msgid "Your application is waiting for approval." 767 785 msgstr "" 768 786 769 #: src/error.cls.php:17 9787 #: src/error.cls.php:178 770 788 msgid "The callback validation to your domain failed due to hash mismatch." 771 789 msgstr "" 772 790 773 #: src/error.cls.php:18 3791 #: src/error.cls.php:182 774 792 msgid "" 775 793 "The callback validation to your domain failed. Please make sure there is no " … … 777 795 msgstr "" 778 796 779 #: src/error.cls.php:18 8797 #: src/error.cls.php:187 780 798 msgid "" 781 799 "The callback validation to your domain failed. Please make sure there is no " … … 783 801 msgstr "" 784 802 785 #: src/error.cls.php:19 3803 #: src/error.cls.php:192 786 804 msgid "" 787 805 "Your domain has been forbidden from using our services due to a previous " … … 789 807 msgstr "" 790 808 791 #: src/error.cls.php:19 7809 #: src/error.cls.php:196 792 810 msgid "" 793 811 "You cannot remove this DNS zone, because it is still in use. Please update " … … 796 814 msgstr "" 797 815 798 #: src/error.cls.php:20 4816 #: src/error.cls.php:203 799 817 msgid "Unknown error" 800 818 msgstr "" … … 858 876 #: src/gui.cls.php:487 src/gui.cls.php:495 src/gui.cls.php:503 859 877 #: src/gui.cls.php:512 src/gui.cls.php:522 src/gui.cls.php:532 860 #: src/gui.cls.php:542 src/gui.cls.php:55 1src/gui.cls.php:561861 #: src/gui.cls.php:571 src/gui.cls.php: 637 src/gui.cls.php:645862 #: src/gui.cls.php:65 3 src/gui.cls.php:662src/gui.cls.php:672878 #: src/gui.cls.php:542 src/gui.cls.php:552 src/gui.cls.php:561 879 #: src/gui.cls.php:571 src/gui.cls.php:581 src/gui.cls.php:647 880 #: src/gui.cls.php:655 src/gui.cls.php:663 src/gui.cls.php:672 863 881 #: src/gui.cls.php:682 src/gui.cls.php:692 src/gui.cls.php:702 864 #: src/gui.cls.php:71 1src/gui.cls.php:721 src/gui.cls.php:731865 #: tpl/page_optm/settings_media.tpl.php:131 tpl/toolbox/purge.tpl.php:37866 #: tpl/toolbox/purge.tpl.php: 43 tpl/toolbox/purge.tpl.php:52867 #: tpl/toolbox/purge.tpl.php: 61 tpl/toolbox/purge.tpl.php:70868 #: tpl/toolbox/purge.tpl.php:7 9 tpl/toolbox/purge.tpl.php:88869 #: tpl/toolbox/purge.tpl.php: 97 tpl/toolbox/purge.tpl.php:106870 #: tpl/toolbox/purge.tpl.php:1 15882 #: src/gui.cls.php:712 src/gui.cls.php:721 src/gui.cls.php:731 883 #: src/gui.cls.php:741 tpl/page_optm/settings_media.tpl.php:131 884 #: tpl/toolbox/purge.tpl.php:37 tpl/toolbox/purge.tpl.php:43 885 #: tpl/toolbox/purge.tpl.php:52 tpl/toolbox/purge.tpl.php:61 886 #: tpl/toolbox/purge.tpl.php:70 tpl/toolbox/purge.tpl.php:79 887 #: tpl/toolbox/purge.tpl.php:88 tpl/toolbox/purge.tpl.php:97 888 #: tpl/toolbox/purge.tpl.php:106 tpl/toolbox/purge.tpl.php:115 871 889 msgid "Purge All" 872 890 msgstr "" 873 891 874 #: src/gui.cls.php:495 src/gui.cls.php: 595 src/gui.cls.php:645892 #: src/gui.cls.php:495 src/gui.cls.php:605 src/gui.cls.php:655 875 893 msgid "LSCache" 876 894 msgstr "" 877 895 878 #: src/gui.cls.php:503 src/gui.cls.php:6 53 tpl/toolbox/purge.tpl.php:43896 #: src/gui.cls.php:503 src/gui.cls.php:663 tpl/toolbox/purge.tpl.php:43 879 897 msgid "CSS/JS Cache" 880 898 msgstr "" 881 899 882 #: src/gui.cls.php:512 src/gui.cls.php:672 src/lang.cls.php:117 883 #: tpl/dash/dashboard.tpl.php:420 tpl/toolbox/purge.tpl.php:52 900 #: src/gui.cls.php:512 src/gui.cls.php:672 tpl/cdn/manage.tpl.php:19 901 msgid "Cloudflare" 902 msgstr "" 903 904 #: src/gui.cls.php:522 src/gui.cls.php:682 src/lang.cls.php:118 905 #: tpl/dash/dashboard.tpl.php:425 tpl/toolbox/purge.tpl.php:52 884 906 msgid "Object Cache" 885 907 msgstr "" 886 908 887 #: src/gui.cls.php:5 22 src/gui.cls.php:682 tpl/toolbox/purge.tpl.php:61909 #: src/gui.cls.php:532 src/gui.cls.php:692 tpl/toolbox/purge.tpl.php:61 888 910 msgid "Opcode Cache" 889 911 msgstr "" 890 912 891 #: src/gui.cls.php:5 51 src/gui.cls.php:711 tpl/toolbox/purge.tpl.php:88913 #: src/gui.cls.php:561 src/gui.cls.php:721 tpl/toolbox/purge.tpl.php:88 892 914 msgid "Localized Resources" 893 915 msgstr "" 894 916 895 #: src/gui.cls.php:5 61 src/gui.cls.php:721917 #: src/gui.cls.php:571 src/gui.cls.php:731 896 918 #: tpl/page_optm/settings_media.tpl.php:131 tpl/toolbox/purge.tpl.php:97 897 919 msgid "LQIP Cache" 898 920 msgstr "" 899 921 900 #: src/gui.cls.php:5 71 src/gui.cls.php:731 src/lang.cls.php:182922 #: src/gui.cls.php:581 src/gui.cls.php:741 src/lang.cls.php:184 901 923 #: tpl/presets/standard.tpl.php:42 tpl/toolbox/purge.tpl.php:106 902 924 msgid "Gravatar Cache" 903 925 msgstr "" 904 926 905 #: src/gui.cls.php: 595927 #: src/gui.cls.php:605 906 928 msgid "LiteSpeed Cache Purge All" 907 929 msgstr "" 908 930 909 #: src/gui.cls.php:6 11 tpl/cdn/entry.tpl.php:8 tpl/cdn/settings.tpl.php:194931 #: src/gui.cls.php:621 tpl/cdn/entry.tpl.php:8 tpl/cdn/settings.tpl.php:194 910 932 #: tpl/db_optm/entry.tpl.php:6 911 933 msgid "Manage" 912 934 msgstr "" 913 935 914 #: src/gui.cls.php:662 tpl/cdn/manage.tpl.php:19 915 msgid "Cloudflare" 916 msgstr "" 917 918 #: src/gui.cls.php:751 tpl/img_optm/summary.tpl.php:141 936 #: src/gui.cls.php:761 tpl/img_optm/summary.tpl.php:141 919 937 msgid "Remove all previous unfinished image optimization requests." 920 938 msgstr "" 921 939 922 #: src/gui.cls.php:7 52 tpl/img_optm/summary.tpl.php:143940 #: src/gui.cls.php:762 tpl/img_optm/summary.tpl.php:143 923 941 msgid "Clean Up Unfinished Data" 924 942 msgstr "" 925 943 926 #: src/gui.cls.php:7 71944 #: src/gui.cls.php:781 927 945 msgid "Install %s" 928 946 msgstr "" 929 947 930 #: src/gui.cls.php:7 72948 #: src/gui.cls.php:782 931 949 msgid "Install Now" 932 950 msgstr "" 933 951 934 #: src/gui.cls.php: 792952 #: src/gui.cls.php:802 935 953 msgid "" 936 954 "<a href=\"%1$s\" %2$s>View version %3$s details</a> or <a href=\"%4$s\" %5$s " … … 938 956 msgstr "" 939 957 940 #: src/gui.cls.php: 794958 #: src/gui.cls.php:804 941 959 msgid "View %1$s version %2$s details" 942 960 msgstr "" 943 961 944 #: src/gui.cls.php: 797962 #: src/gui.cls.php:807 945 963 msgid "Update %s now" 946 964 msgstr "" … … 956 974 msgstr "" 957 975 958 #: src/img-optm.cls.php:3 52976 #: src/img-optm.cls.php:343 959 977 msgid "Pushed %1$s to Cloud server, accepted %2$s." 960 978 msgstr "" 961 979 962 #: src/img-optm.cls.php: 600980 #: src/img-optm.cls.php:591 963 981 msgid "Cleared %1$s invalid images." 964 982 msgstr "" 965 983 966 #: src/img-optm.cls.php:65 7984 #: src/img-optm.cls.php:650 967 985 msgid "No valid image found in the current request." 968 986 msgstr "" 969 987 970 #: src/img-optm.cls.php:6 80988 #: src/img-optm.cls.php:673 971 989 msgid "No valid image found by Cloud server in the current request." 972 990 msgstr "" 973 991 974 #: src/img-optm.cls.php:8 66992 #: src/img-optm.cls.php:859 975 993 msgid "Started async image optimization request" 976 994 msgstr "" 977 995 978 #: src/img-optm.cls.php:94 7996 #: src/img-optm.cls.php:940 979 997 msgid "Pull Cron is running" 980 998 msgstr "" 981 999 982 #: src/img-optm.cls.php:10 40 src/img-optm.cls.php:10661000 #: src/img-optm.cls.php:1033 src/img-optm.cls.php:1059 983 1001 msgid "Some optimized image file(s) has expired and was cleared." 984 1002 msgstr "" 985 1003 986 #: src/img-optm.cls.php:10 831004 #: src/img-optm.cls.php:1076 987 1005 msgid "Pulled WebP image md5 does not match the notified WebP image md5." 988 1006 msgstr "" 989 1007 990 #: src/img-optm.cls.php:111 91008 #: src/img-optm.cls.php:1112 991 1009 msgid "One or more pulled images does not match with the notified image md5" 992 1010 msgstr "" 993 1011 994 #: src/img-optm.cls.php:13 121012 #: src/img-optm.cls.php:1305 995 1013 msgid "Cleaned up unfinished data successfully." 996 1014 msgstr "" 997 1015 998 #: src/img-optm.cls.php:13 961016 #: src/img-optm.cls.php:1389 999 1017 msgid "Destroy all optimization data successfully." 1000 1018 msgstr "" 1001 1019 1002 #: src/img-optm.cls.php:145 9 src/img-optm.cls.php:15211020 #: src/img-optm.cls.php:1452 src/img-optm.cls.php:1514 1003 1021 msgid "Rescanned successfully." 1004 1022 msgstr "" 1005 1023 1006 #: src/img-optm.cls.php:15 211024 #: src/img-optm.cls.php:1514 1007 1025 msgid "Rescanned %d images successfully." 1008 1026 msgstr "" 1009 1027 1010 #: src/img-optm.cls.php:158 81028 #: src/img-optm.cls.php:1581 1011 1029 msgid "Calculated backups successfully." 1012 1030 msgstr "" 1013 1031 1014 #: src/img-optm.cls.php:16 821032 #: src/img-optm.cls.php:1675 1015 1033 msgid "Removed backups successfully." 1016 1034 msgstr "" 1017 1035 1018 #: src/img-optm.cls.php:18 341036 #: src/img-optm.cls.php:1827 1019 1037 msgid "Switched images successfully." 1020 1038 msgstr "" 1021 1039 1022 #: src/img-optm.cls.php:19 34 src/img-optm.cls.php:19801040 #: src/img-optm.cls.php:1927 src/img-optm.cls.php:1973 1023 1041 msgid "Switched to optimized file successfully." 1024 1042 msgstr "" 1025 1043 1026 #: src/img-optm.cls.php:19 531044 #: src/img-optm.cls.php:1946 1027 1045 msgid "Disabled WebP file successfully." 1028 1046 msgstr "" 1029 1047 1030 #: src/img-optm.cls.php:195 81048 #: src/img-optm.cls.php:1951 1031 1049 msgid "Enabled WebP file successfully." 1032 1050 msgstr "" 1033 1051 1034 #: src/img-optm.cls.php:19 741052 #: src/img-optm.cls.php:1967 1035 1053 msgid "Restored original file successfully." 1036 1054 msgstr "" 1037 1055 1038 #: src/img-optm.cls.php:20 311056 #: src/img-optm.cls.php:2024 1039 1057 msgid "Reset the optimized data successfully." 1040 1058 msgstr "" … … 1060 1078 msgstr "" 1061 1079 1062 #: src/lang.cls.php:28 tpl/dash/dashboard.tpl.php:36 11080 #: src/lang.cls.php:28 tpl/dash/dashboard.tpl.php:366 1063 1081 msgid "Images requested" 1064 1082 msgstr "" 1065 1083 1066 #: src/lang.cls.php:29 tpl/dash/dashboard.tpl.php:37 11084 #: src/lang.cls.php:29 tpl/dash/dashboard.tpl.php:376 1067 1085 msgid "Images notified to pull" 1068 1086 msgstr "" … … 1107 1125 msgstr "" 1108 1126 1109 #: src/lang.cls.php:95 tpl/dash/dashboard.tpl.php:42 11127 #: src/lang.cls.php:95 tpl/dash/dashboard.tpl.php:426 1110 1128 #: tpl/presets/standard.tpl.php:12 1111 1129 msgid "Browser Cache" … … 1141 1159 1142 1160 #: src/lang.cls.php:103 1161 msgid "AJAX Cache TTL" 1162 msgstr "" 1163 1164 #: src/lang.cls.php:104 1143 1165 msgid "Automatically Upgrade" 1144 1166 msgstr "" 1145 1167 1146 #: src/lang.cls.php:10 41168 #: src/lang.cls.php:105 1147 1169 msgid "Guest Mode" 1148 1170 msgstr "" 1149 1171 1150 #: src/lang.cls.php:10 51172 #: src/lang.cls.php:106 1151 1173 msgid "Guest Optimization" 1152 1174 msgstr "" 1153 1175 1154 #: src/lang.cls.php:10 61176 #: src/lang.cls.php:107 1155 1177 msgid "Notifications" 1156 1178 msgstr "" 1157 1179 1158 #: src/lang.cls.php:10 71180 #: src/lang.cls.php:108 1159 1181 msgid "Cache Logged-in Users" 1160 1182 msgstr "" 1161 1183 1162 #: src/lang.cls.php:10 81184 #: src/lang.cls.php:109 1163 1185 msgid "Cache Commenters" 1164 1186 msgstr "" 1165 1187 1166 #: src/lang.cls.php:1 091188 #: src/lang.cls.php:110 1167 1189 msgid "Cache REST API" 1168 1190 msgstr "" 1169 1191 1170 #: src/lang.cls.php:11 01192 #: src/lang.cls.php:111 1171 1193 msgid "Cache Login Page" 1172 1194 msgstr "" 1173 1195 1174 #: src/lang.cls.php:11 11196 #: src/lang.cls.php:112 1175 1197 msgid "Cache PHP Resources" 1176 1198 msgstr "" 1177 1199 1178 #: src/lang.cls.php:11 2tpl/cache/settings_inc.cache_mobile.tpl.php:711200 #: src/lang.cls.php:113 tpl/cache/settings_inc.cache_mobile.tpl.php:71 1179 1201 msgid "Cache Mobile" 1180 1202 msgstr "" 1181 1203 1182 #: src/lang.cls.php:11 3tpl/cache/settings_inc.cache_mobile.tpl.php:711204 #: src/lang.cls.php:114 tpl/cache/settings_inc.cache_mobile.tpl.php:71 1183 1205 msgid "List of Mobile User Agents" 1184 1206 msgstr "" 1185 1207 1186 #: src/lang.cls.php:11 41208 #: src/lang.cls.php:115 1187 1209 msgid "Private Cached URIs" 1188 1210 msgstr "" 1189 1211 1190 #: src/lang.cls.php:11 51212 #: src/lang.cls.php:116 1191 1213 msgid "Drop Query String" 1192 1214 msgstr "" 1193 1215 1194 #: src/lang.cls.php:11 81216 #: src/lang.cls.php:119 1195 1217 msgid "Method" 1196 1218 msgstr "" 1197 1219 1198 #: src/lang.cls.php:1 191220 #: src/lang.cls.php:120 1199 1221 msgid "Host" 1200 1222 msgstr "" 1201 1223 1202 #: src/lang.cls.php:12 01224 #: src/lang.cls.php:121 1203 1225 msgid "Port" 1204 1226 msgstr "" 1205 1227 1206 #: src/lang.cls.php:12 11228 #: src/lang.cls.php:122 1207 1229 msgid "Default Object Lifetime" 1208 1230 msgstr "" 1209 1231 1210 #: src/lang.cls.php:12 21232 #: src/lang.cls.php:123 1211 1233 msgid "Username" 1212 1234 msgstr "" 1213 1235 1214 #: src/lang.cls.php:12 31236 #: src/lang.cls.php:124 1215 1237 msgid "Password" 1216 1238 msgstr "" 1217 1239 1218 #: src/lang.cls.php:12 41240 #: src/lang.cls.php:125 1219 1241 msgid "Redis Database ID" 1220 1242 msgstr "" 1221 1243 1222 #: src/lang.cls.php:12 51244 #: src/lang.cls.php:126 1223 1245 msgid "Global Groups" 1224 1246 msgstr "" 1225 1247 1226 #: src/lang.cls.php:12 61248 #: src/lang.cls.php:127 1227 1249 msgid "Do Not Cache Groups" 1228 1250 msgstr "" 1229 1251 1230 #: src/lang.cls.php:12 71252 #: src/lang.cls.php:128 1231 1253 msgid "Persistent Connection" 1232 1254 msgstr "" 1233 1255 1234 #: src/lang.cls.php:12 81256 #: src/lang.cls.php:129 1235 1257 msgid "Cache WP-Admin" 1236 1258 msgstr "" 1237 1259 1238 #: src/lang.cls.php:1 291260 #: src/lang.cls.php:130 1239 1261 msgid "Store Transients" 1240 1262 msgstr "" 1241 1263 1242 #: src/lang.cls.php:13 11264 #: src/lang.cls.php:132 1243 1265 msgid "Purge All On Upgrade" 1244 1266 msgstr "" 1245 1267 1246 #: src/lang.cls.php:13 21268 #: src/lang.cls.php:133 1247 1269 msgid "Serve Stale" 1248 1270 msgstr "" 1249 1271 1250 #: src/lang.cls.php:13 3tpl/cache/settings-purge.tpl.php:1301272 #: src/lang.cls.php:134 tpl/cache/settings-purge.tpl.php:130 1251 1273 msgid "Scheduled Purge URLs" 1252 1274 msgstr "" 1253 1275 1254 #: src/lang.cls.php:13 4tpl/cache/settings-purge.tpl.php:1051276 #: src/lang.cls.php:135 tpl/cache/settings-purge.tpl.php:105 1255 1277 msgid "Scheduled Purge Time" 1256 1278 msgstr "" 1257 1279 1258 #: src/lang.cls.php:13 51280 #: src/lang.cls.php:136 1259 1281 msgid "Force Cache URIs" 1260 1282 msgstr "" 1261 1283 1262 #: src/lang.cls.php:13 61284 #: src/lang.cls.php:137 1263 1285 msgid "Force Public Cache URIs" 1264 1286 msgstr "" 1265 1287 1266 #: src/lang.cls.php:13 71288 #: src/lang.cls.php:138 1267 1289 msgid "Do Not Cache URIs" 1268 1290 msgstr "" 1269 1291 1270 #: src/lang.cls.php:13 81292 #: src/lang.cls.php:139 1271 1293 msgid "Do Not Cache Query Strings" 1272 1294 msgstr "" 1273 1295 1274 #: src/lang.cls.php:1 391296 #: src/lang.cls.php:140 1275 1297 msgid "Do Not Cache Categories" 1276 1298 msgstr "" 1277 1299 1278 #: src/lang.cls.php:14 01300 #: src/lang.cls.php:141 1279 1301 msgid "Do Not Cache Tags" 1280 1302 msgstr "" 1281 1303 1282 #: src/lang.cls.php:14 11304 #: src/lang.cls.php:142 1283 1305 msgid "Do Not Cache Roles" 1284 1306 msgstr "" 1285 1307 1286 #: src/lang.cls.php:14 21308 #: src/lang.cls.php:143 1287 1309 msgid "CSS Minify" 1288 1310 msgstr "" 1289 1311 1290 #: src/lang.cls.php:14 31312 #: src/lang.cls.php:144 1291 1313 msgid "CSS Combine" 1292 1314 msgstr "" 1293 1315 1294 #: src/lang.cls.php:14 41316 #: src/lang.cls.php:145 1295 1317 msgid "CSS Combine External and Inline" 1296 1318 msgstr "" 1297 1319 1298 #: src/lang.cls.php:14 51320 #: src/lang.cls.php:146 1299 1321 msgid "Generate UCSS" 1300 1322 msgstr "" 1301 1323 1302 #: src/lang.cls.php:14 61324 #: src/lang.cls.php:147 1303 1325 msgid "UCSS Inline" 1304 1326 msgstr "" 1305 1327 1306 #: src/lang.cls.php:14 71328 #: src/lang.cls.php:148 1307 1329 msgid "UCSS Selector Allowlist" 1308 1330 msgstr "" 1309 1331 1310 #: src/lang.cls.php:14 81332 #: src/lang.cls.php:149 1311 1333 msgid "UCSS File Excludes and Inline" 1312 1334 msgstr "" 1313 1335 1314 #: src/lang.cls.php:1 491336 #: src/lang.cls.php:150 1315 1337 msgid "UCSS URI Excludes" 1316 1338 msgstr "" 1317 1339 1318 #: src/lang.cls.php:15 01340 #: src/lang.cls.php:151 1319 1341 msgid "JS Minify" 1320 1342 msgstr "" 1321 1343 1322 #: src/lang.cls.php:15 21344 #: src/lang.cls.php:153 1323 1345 msgid "JS Combine External and Inline" 1324 1346 msgstr "" 1325 1347 1326 #: src/lang.cls.php:15 31348 #: src/lang.cls.php:154 1327 1349 msgid "HTML Minify" 1328 1350 msgstr "" 1329 1351 1330 #: src/lang.cls.php:15 41352 #: src/lang.cls.php:155 1331 1353 msgid "HTML Lazy Load Selectors" 1332 1354 msgstr "" 1333 1355 1334 #: src/lang.cls.php:155 tpl/page_optm/settings_tuning_css.tpl.php:131 1356 #: src/lang.cls.php:156 1357 msgid "HTML Keep Comments" 1358 msgstr "" 1359 1360 #: src/lang.cls.php:157 tpl/page_optm/settings_tuning_css.tpl.php:131 1335 1361 msgid "Load CSS Asynchronously" 1336 1362 msgstr "" 1337 1363 1338 #: src/lang.cls.php:15 61364 #: src/lang.cls.php:158 1339 1365 msgid "CCSS Per URL" 1340 1366 msgstr "" 1341 1367 1342 #: src/lang.cls.php:15 71368 #: src/lang.cls.php:159 1343 1369 msgid "Inline CSS Async Lib" 1344 1370 msgstr "" 1345 1371 1346 #: src/lang.cls.php:1 58tpl/presets/standard.tpl.php:391372 #: src/lang.cls.php:160 tpl/presets/standard.tpl.php:39 1347 1373 msgid "Font Display Optimization" 1348 1374 msgstr "" 1349 1375 1350 #: src/lang.cls.php:1 591376 #: src/lang.cls.php:161 1351 1377 msgid "Load JS Deferred" 1352 1378 msgstr "" 1353 1379 1354 #: src/lang.cls.php:16 01380 #: src/lang.cls.php:162 1355 1381 msgid "Localize Resources" 1356 1382 msgstr "" 1357 1383 1358 #: src/lang.cls.php:16 11384 #: src/lang.cls.php:163 1359 1385 msgid "Localization Files" 1360 1386 msgstr "" 1361 1387 1362 #: src/lang.cls.php:16 21388 #: src/lang.cls.php:164 1363 1389 msgid "DNS Prefetch" 1364 1390 msgstr "" 1365 1391 1366 #: src/lang.cls.php:16 31392 #: src/lang.cls.php:165 1367 1393 msgid "DNS Prefetch Control" 1368 1394 msgstr "" 1369 1395 1370 #: src/lang.cls.php:16 41396 #: src/lang.cls.php:166 1371 1397 msgid "DNS Preconnect" 1372 1398 msgstr "" 1373 1399 1374 #: src/lang.cls.php:16 51400 #: src/lang.cls.php:167 1375 1401 msgid "CSS Excludes" 1376 1402 msgstr "" 1377 1403 1378 #: src/lang.cls.php:16 61404 #: src/lang.cls.php:168 1379 1405 msgid "JS Delayed Includes" 1380 1406 msgstr "" 1381 1407 1382 #: src/lang.cls.php:16 71408 #: src/lang.cls.php:169 1383 1409 msgid "JS Excludes" 1384 1410 msgstr "" 1385 1411 1386 #: src/lang.cls.php:1 681412 #: src/lang.cls.php:170 1387 1413 msgid "Remove Query Strings" 1388 1414 msgstr "" 1389 1415 1390 #: src/lang.cls.php:1 691416 #: src/lang.cls.php:171 1391 1417 msgid "Load Google Fonts Asynchronously" 1392 1418 msgstr "" 1393 1419 1394 #: src/lang.cls.php:17 01420 #: src/lang.cls.php:172 1395 1421 msgid "Remove Google Fonts" 1396 1422 msgstr "" 1397 1423 1398 #: src/lang.cls.php:17 11424 #: src/lang.cls.php:173 1399 1425 msgid "Critical CSS Rules" 1400 1426 msgstr "" 1401 1427 1402 #: src/lang.cls.php:17 21428 #: src/lang.cls.php:174 1403 1429 msgid "Separate CCSS Cache Post Types" 1404 1430 msgstr "" 1405 1431 1406 #: src/lang.cls.php:17 31432 #: src/lang.cls.php:175 1407 1433 msgid "Separate CCSS Cache URIs" 1408 1434 msgstr "" 1409 1435 1410 #: src/lang.cls.php:17 41436 #: src/lang.cls.php:176 1411 1437 msgid "JS Deferred / Delayed Excludes" 1412 1438 msgstr "" 1413 1439 1414 #: src/lang.cls.php:17 51440 #: src/lang.cls.php:177 1415 1441 msgid "Guest Mode JS Excludes" 1416 1442 msgstr "" 1417 1443 1418 #: src/lang.cls.php:17 6tpl/presets/standard.tpl.php:441444 #: src/lang.cls.php:178 tpl/presets/standard.tpl.php:44 1419 1445 msgid "Remove WordPress Emoji" 1420 1446 msgstr "" 1421 1447 1422 #: src/lang.cls.php:17 7tpl/presets/standard.tpl.php:451448 #: src/lang.cls.php:179 tpl/presets/standard.tpl.php:45 1423 1449 msgid "Remove Noscript Tags" 1424 1450 msgstr "" 1425 1451 1426 #: src/lang.cls.php:1 781452 #: src/lang.cls.php:180 1427 1453 msgid "URI Excludes" 1428 1454 msgstr "" 1429 1455 1430 #: src/lang.cls.php:1 791456 #: src/lang.cls.php:181 1431 1457 msgid "Optimize for Guests Only" 1432 1458 msgstr "" 1433 1459 1434 #: src/lang.cls.php:18 01460 #: src/lang.cls.php:182 1435 1461 msgid "Role Excludes" 1436 1462 msgstr "" 1437 1463 1438 #: src/lang.cls.php:18 31464 #: src/lang.cls.php:185 1439 1465 msgid "Gravatar Cache Cron" 1440 1466 msgstr "" 1441 1467 1442 #: src/lang.cls.php:18 41468 #: src/lang.cls.php:186 1443 1469 msgid "Gravatar Cache TTL" 1444 1470 msgstr "" 1445 1471 1446 #: src/lang.cls.php:18 61472 #: src/lang.cls.php:188 1447 1473 msgid "Lazy Load Images" 1448 1474 msgstr "" 1449 1475 1450 #: src/lang.cls.php:18 71476 #: src/lang.cls.php:189 1451 1477 msgid "Lazy Load Image Excludes" 1452 1478 msgstr "" 1453 1479 1454 #: src/lang.cls.php:1 881480 #: src/lang.cls.php:190 1455 1481 msgid "Lazy Load Image Class Name Excludes" 1456 1482 msgstr "" 1457 1483 1458 #: src/lang.cls.php:1 891484 #: src/lang.cls.php:191 1459 1485 msgid "Lazy Load Image Parent Class Name Excludes" 1460 1486 msgstr "" 1461 1487 1462 #: src/lang.cls.php:19 01488 #: src/lang.cls.php:192 1463 1489 msgid "Lazy Load Iframe Class Name Excludes" 1464 1490 msgstr "" 1465 1491 1466 #: src/lang.cls.php:19 11492 #: src/lang.cls.php:193 1467 1493 msgid "Lazy Load Iframe Parent Class Name Excludes" 1468 1494 msgstr "" 1469 1495 1470 #: src/lang.cls.php:19 21496 #: src/lang.cls.php:194 1471 1497 msgid "Lazy Load URI Excludes" 1472 1498 msgstr "" 1473 1499 1474 #: src/lang.cls.php:19 31500 #: src/lang.cls.php:195 1475 1501 msgid "LQIP Excludes" 1476 1502 msgstr "" 1477 1503 1478 #: src/lang.cls.php:19 41504 #: src/lang.cls.php:196 1479 1505 msgid "Basic Image Placeholder" 1480 1506 msgstr "" 1481 1507 1482 #: src/lang.cls.php:19 51508 #: src/lang.cls.php:197 1483 1509 msgid "Responsive Placeholder" 1484 1510 msgstr "" 1485 1511 1486 #: src/lang.cls.php:19 61512 #: src/lang.cls.php:198 1487 1513 msgid "Responsive Placeholder Color" 1488 1514 msgstr "" 1489 1515 1490 #: src/lang.cls.php:19 71516 #: src/lang.cls.php:199 1491 1517 msgid "Responsive Placeholder SVG" 1492 1518 msgstr "" 1493 1519 1494 #: src/lang.cls.php: 1981520 #: src/lang.cls.php:200 1495 1521 msgid "LQIP Cloud Generator" 1496 1522 msgstr "" 1497 1523 1498 #: src/lang.cls.php: 1991524 #: src/lang.cls.php:201 1499 1525 msgid "LQIP Quality" 1500 1526 msgstr "" 1501 1527 1502 #: src/lang.cls.php:20 01528 #: src/lang.cls.php:202 1503 1529 msgid "LQIP Minimum Dimensions" 1504 1530 msgstr "" 1505 1531 1506 #: src/lang.cls.php:20 21532 #: src/lang.cls.php:204 1507 1533 msgid "Generate LQIP In Background" 1508 1534 msgstr "" 1509 1535 1510 #: src/lang.cls.php:20 31536 #: src/lang.cls.php:205 1511 1537 msgid "Lazy Load Iframes" 1512 1538 msgstr "" 1513 1539 1514 #: src/lang.cls.php:20 41540 #: src/lang.cls.php:206 1515 1541 msgid "Add Missing Sizes" 1516 1542 msgstr "" 1517 1543 1518 #: src/lang.cls.php:20 5src/metabox.cls.php:33 src/metabox.cls.php:341544 #: src/lang.cls.php:207 src/metabox.cls.php:33 src/metabox.cls.php:34 1519 1545 #: tpl/page_optm/settings_vpi.tpl.php:12 1520 1546 msgid "Viewport Images" 1521 1547 msgstr "" 1522 1548 1523 #: src/lang.cls.php:20 61549 #: src/lang.cls.php:208 1524 1550 msgid "Viewport Images Cron" 1525 1551 msgstr "" 1526 1552 1527 #: src/lang.cls.php:2 081553 #: src/lang.cls.php:210 1528 1554 msgid "Auto Request Cron" 1529 1555 msgstr "" 1530 1556 1531 #: src/lang.cls.php:2 091557 #: src/lang.cls.php:211 1532 1558 msgid "Auto Pull Cron" 1533 1559 msgstr "" 1534 1560 1535 #: src/lang.cls.php:21 01561 #: src/lang.cls.php:212 1536 1562 msgid "Optimize Original Images" 1537 1563 msgstr "" 1538 1564 1539 #: src/lang.cls.php:21 11565 #: src/lang.cls.php:213 1540 1566 msgid "Remove Original Backups" 1541 1567 msgstr "" 1542 1568 1543 #: src/lang.cls.php:21 21569 #: src/lang.cls.php:214 1544 1570 msgid "Image WebP Replacement" 1545 1571 msgstr "" 1546 1572 1547 #: src/lang.cls.php:21 31573 #: src/lang.cls.php:215 1548 1574 msgid "Optimize Losslessly" 1549 1575 msgstr "" 1550 1576 1551 #: src/lang.cls.php:21 41577 #: src/lang.cls.php:216 1552 1578 msgid "Preserve EXIF/XMP data" 1553 1579 msgstr "" 1554 1580 1555 #: src/lang.cls.php:21 51581 #: src/lang.cls.php:217 1556 1582 msgid "WebP Attribute To Replace" 1557 1583 msgstr "" 1558 1584 1559 #: src/lang.cls.php:21 61585 #: src/lang.cls.php:218 1560 1586 msgid "WebP For Extra srcset" 1561 1587 msgstr "" 1562 1588 1563 #: src/lang.cls.php:21 71589 #: src/lang.cls.php:219 1564 1590 msgid "WordPress Image Quality Control" 1565 1591 msgstr "" 1566 1592 1567 #: src/lang.cls.php:2 18tpl/esi_widget_edit.php:361593 #: src/lang.cls.php:220 tpl/esi_widget_edit.php:36 1568 1594 msgid "Enable ESI" 1569 1595 msgstr "" 1570 1596 1571 #: src/lang.cls.php:2 191597 #: src/lang.cls.php:221 1572 1598 msgid "Cache Admin Bar" 1573 1599 msgstr "" 1574 1600 1575 #: src/lang.cls.php:22 01601 #: src/lang.cls.php:222 1576 1602 msgid "Cache Comment Form" 1577 1603 msgstr "" 1578 1604 1579 #: src/lang.cls.php:22 11605 #: src/lang.cls.php:223 1580 1606 msgid "ESI Nonces" 1581 1607 msgstr "" 1582 1608 1583 #: src/lang.cls.php:22 2tpl/page_optm/settings_css.tpl.php:1211609 #: src/lang.cls.php:224 tpl/page_optm/settings_css.tpl.php:121 1584 1610 #: tpl/page_optm/settings_css.tpl.php:238 tpl/page_optm/settings_vpi.tpl.php:67 1585 1611 msgid "Vary Group" 1586 1612 msgstr "" 1587 1613 1588 #: src/lang.cls.php:22 31614 #: src/lang.cls.php:225 1589 1615 msgid "Purge All Hooks" 1590 1616 msgstr "" 1591 1617 1592 #: src/lang.cls.php:22 41618 #: src/lang.cls.php:226 1593 1619 msgid "Improve HTTP/HTTPS Compatibility" 1594 1620 msgstr "" 1595 1621 1596 #: src/lang.cls.php:22 51622 #: src/lang.cls.php:227 1597 1623 msgid "Instant Click" 1598 1624 msgstr "" 1599 1625 1600 #: src/lang.cls.php:22 61626 #: src/lang.cls.php:228 1601 1627 msgid "Do Not Cache Cookies" 1602 1628 msgstr "" 1603 1629 1604 #: src/lang.cls.php:22 71630 #: src/lang.cls.php:229 1605 1631 msgid "Do Not Cache User Agents" 1606 1632 msgstr "" 1607 1633 1608 #: src/lang.cls.php:2 281634 #: src/lang.cls.php:230 1609 1635 msgid "Login Cookie" 1610 1636 msgstr "" 1611 1637 1612 #: src/lang.cls.php:2 291638 #: src/lang.cls.php:231 1613 1639 msgid "Vary Cookies" 1614 1640 msgstr "" 1615 1641 1616 #: src/lang.cls.php:23 11642 #: src/lang.cls.php:233 1617 1643 msgid "Frontend Heartbeat Control" 1618 1644 msgstr "" 1619 1645 1620 #: src/lang.cls.php:23 21646 #: src/lang.cls.php:234 1621 1647 msgid "Frontend Heartbeat TTL" 1622 1648 msgstr "" 1623 1649 1624 #: src/lang.cls.php:23 31650 #: src/lang.cls.php:235 1625 1651 msgid "Backend Heartbeat Control" 1626 1652 msgstr "" 1627 1653 1628 #: src/lang.cls.php:23 41654 #: src/lang.cls.php:236 1629 1655 msgid "Backend Heartbeat TTL" 1630 1656 msgstr "" 1631 1657 1632 #: src/lang.cls.php:23 51658 #: src/lang.cls.php:237 1633 1659 msgid "Editor Heartbeat" 1634 1660 msgstr "" 1635 1661 1636 #: src/lang.cls.php:23 61662 #: src/lang.cls.php:238 1637 1663 msgid "Editor Heartbeat TTL" 1638 1664 msgstr "" 1639 1665 1640 #: src/lang.cls.php:2 381666 #: src/lang.cls.php:240 1641 1667 msgid "QUIC.cloud CDN" 1642 1668 msgstr "" 1643 1669 1644 #: src/lang.cls.php:2 391670 #: src/lang.cls.php:241 1645 1671 msgid "Use CDN Mapping" 1646 1672 msgstr "" 1647 1673 1648 #: src/lang.cls.php:24 01674 #: src/lang.cls.php:242 1649 1675 msgid "CDN URL" 1650 1676 msgstr "" 1651 1677 1652 #: src/lang.cls.php:24 11678 #: src/lang.cls.php:243 1653 1679 msgid "Include Images" 1654 1680 msgstr "" 1655 1681 1656 #: src/lang.cls.php:24 21682 #: src/lang.cls.php:244 1657 1683 msgid "Include CSS" 1658 1684 msgstr "" 1659 1685 1660 #: src/lang.cls.php:24 31686 #: src/lang.cls.php:245 1661 1687 msgid "Include JS" 1662 1688 msgstr "" 1663 1689 1664 #: src/lang.cls.php:24 4tpl/cdn/settings.tpl.php:1021690 #: src/lang.cls.php:246 tpl/cdn/settings.tpl.php:102 1665 1691 msgid "Include File Types" 1666 1692 msgstr "" 1667 1693 1668 #: src/lang.cls.php:24 51694 #: src/lang.cls.php:247 1669 1695 msgid "HTML Attribute To Replace" 1670 1696 msgstr "" 1671 1697 1672 #: src/lang.cls.php:24 61698 #: src/lang.cls.php:248 1673 1699 msgid "Original URLs" 1674 1700 msgstr "" 1675 1701 1676 #: src/lang.cls.php:24 71702 #: src/lang.cls.php:249 1677 1703 msgid "Included Directories" 1678 1704 msgstr "" 1679 1705 1680 #: src/lang.cls.php:2 481706 #: src/lang.cls.php:250 1681 1707 msgid "Exclude Path" 1682 1708 msgstr "" 1683 1709 1684 #: src/lang.cls.php:2 491710 #: src/lang.cls.php:251 1685 1711 msgid "Cloudflare API" 1686 1712 msgstr "" 1687 1713 1688 #: src/lang.cls.php:25 21714 #: src/lang.cls.php:254 1689 1715 msgid "Delay" 1690 1716 msgstr "" 1691 1717 1692 #: src/lang.cls.php:25 31718 #: src/lang.cls.php:255 1693 1719 msgid "Run Duration" 1694 1720 msgstr "" 1695 1721 1696 #: src/lang.cls.php:25 41722 #: src/lang.cls.php:256 1697 1723 msgid "Interval Between Runs" 1698 1724 msgstr "" 1699 1725 1700 #: src/lang.cls.php:25 51726 #: src/lang.cls.php:257 1701 1727 msgid "Crawl Interval" 1702 1728 msgstr "" 1703 1729 1704 #: src/lang.cls.php:25 61730 #: src/lang.cls.php:258 1705 1731 msgid "Threads" 1706 1732 msgstr "" 1707 1733 1708 #: src/lang.cls.php:25 71734 #: src/lang.cls.php:259 1709 1735 msgid "Timeout" 1710 1736 msgstr "" 1711 1737 1712 #: src/lang.cls.php:2 581738 #: src/lang.cls.php:260 1713 1739 msgid "Server Load Limit" 1714 1740 msgstr "" 1715 1741 1716 #: src/lang.cls.php:2 591742 #: src/lang.cls.php:261 1717 1743 msgid "Role Simulation" 1718 1744 msgstr "" 1719 1745 1720 #: src/lang.cls.php:26 01746 #: src/lang.cls.php:262 1721 1747 msgid "Cookie Simulation" 1722 1748 msgstr "" 1723 1749 1724 #: src/lang.cls.php:26 11750 #: src/lang.cls.php:263 1725 1751 msgid "Custom Sitemap" 1726 1752 msgstr "" 1727 1753 1728 #: src/lang.cls.php:26 21754 #: src/lang.cls.php:264 1729 1755 msgid "Drop Domain from Sitemap" 1730 1756 msgstr "" 1731 1757 1732 #: src/lang.cls.php:26 31758 #: src/lang.cls.php:265 1733 1759 msgid "Sitemap Timeout" 1734 1760 msgstr "" 1735 1761 1736 #: src/lang.cls.php:26 5tpl/inc/disabled_all.php:51762 #: src/lang.cls.php:267 tpl/inc/disabled_all.php:5 1737 1763 msgid "Disable All Features" 1738 1764 msgstr "" 1739 1765 1740 #: src/lang.cls.php:26 6tpl/toolbox/log_viewer.tpl.php:111766 #: src/lang.cls.php:268 tpl/toolbox/log_viewer.tpl.php:11 1741 1767 msgid "Debug Log" 1742 1768 msgstr "" 1743 1769 1744 #: src/lang.cls.php:26 71770 #: src/lang.cls.php:269 1745 1771 msgid "Admin IPs" 1746 1772 msgstr "" 1747 1773 1748 #: src/lang.cls.php:2 681774 #: src/lang.cls.php:270 1749 1775 msgid "Debug Level" 1750 1776 msgstr "" 1751 1777 1752 #: src/lang.cls.php:2 691778 #: src/lang.cls.php:271 1753 1779 msgid "Log File Size Limit" 1754 1780 msgstr "" 1755 1781 1756 #: src/lang.cls.php:27 01782 #: src/lang.cls.php:272 1757 1783 msgid "Log Cookies" 1758 1784 msgstr "" 1759 1785 1760 #: src/lang.cls.php:27 11786 #: src/lang.cls.php:273 1761 1787 msgid "Collapse Query Strings" 1762 1788 msgstr "" 1763 1789 1764 #: src/lang.cls.php:27 21790 #: src/lang.cls.php:274 1765 1791 msgid "Debug URI Includes" 1766 1792 msgstr "" 1767 1793 1768 #: src/lang.cls.php:27 31794 #: src/lang.cls.php:275 1769 1795 msgid "Debug URI Excludes" 1770 1796 msgstr "" 1771 1797 1772 #: src/lang.cls.php:27 41798 #: src/lang.cls.php:276 1773 1799 msgid "Debug String Excludes" 1774 1800 msgstr "" 1775 1801 1776 #: src/lang.cls.php:27 61802 #: src/lang.cls.php:278 1777 1803 msgid "Revisions Max Number" 1778 1804 msgstr "" 1779 1805 1780 #: src/lang.cls.php:27 71806 #: src/lang.cls.php:279 1781 1807 msgid "Revisions Max Age" 1782 1808 msgstr "" … … 1891 1917 msgstr "" 1892 1918 1893 #: src/object-cache.cls.php:4 771919 #: src/object-cache.cls.php:494 1894 1920 msgid "Redis encountered a fatal error: %s (code: %d)" 1895 1921 msgstr "" … … 1904 1930 msgstr "" 1905 1931 1906 #: src/placeholder.cls.php:88 tpl/dash/network_dash.tpl.php:301932 #: src/placeholder.cls.php:88 1907 1933 msgid "LQIP" 1908 1934 msgstr "" … … 2019 2045 2020 2046 #: thirdparty/woocommerce.content.tpl.php:22 2021 #: tpl/cache/settings-advanced.tpl.php:1 22047 #: tpl/cache/settings-advanced.tpl.php:14 2022 2048 #: tpl/cache/settings_inc.browser.tpl.php:12 tpl/toolbox/heartbeat.tpl.php:14 2023 2049 #: tpl/toolbox/report.tpl.php:29 … … 2120 2146 msgstr "" 2121 2147 2122 #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 6. 2) #-#-#-#-#2148 #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 6.3) #-#-#-#-# 2123 2149 #. Plugin Name of the plugin/theme 2124 2150 #: tpl/banner/new_version.php:59 tpl/banner/new_version_dev.tpl.php:12 … … 2136 2162 2137 2163 #: tpl/banner/new_version.php:71 tpl/banner/new_version_dev.tpl.php:24 2138 #: tpl/toolbox/beta_test.tpl.php: 642164 #: tpl/toolbox/beta_test.tpl.php:58 2139 2165 msgid "Upgrade" 2140 2166 msgstr "" … … 2160 2186 msgstr "" 2161 2187 2162 #: tpl/banner/score.php:28 tpl/dash/dashboard.tpl.php:2 092188 #: tpl/banner/score.php:28 tpl/dash/dashboard.tpl.php:214 2163 2189 msgid "Page Load Time" 2164 2190 msgstr "" 2165 2191 2166 2192 #: tpl/banner/score.php:34 tpl/banner/score.php:74 2167 #: tpl/dash/dashboard.tpl.php:22 3 tpl/dash/dashboard.tpl.php:2922193 #: tpl/dash/dashboard.tpl.php:228 tpl/dash/dashboard.tpl.php:297 2168 2194 msgid "Before" 2169 2195 msgstr "" 2170 2196 2171 2197 #: tpl/banner/score.php:45 tpl/banner/score.php:84 2172 #: tpl/dash/dashboard.tpl.php:23 2 tpl/dash/dashboard.tpl.php:3002198 #: tpl/dash/dashboard.tpl.php:237 tpl/dash/dashboard.tpl.php:305 2173 2199 msgid "After" 2174 2200 msgstr "" 2175 2201 2176 2202 #: tpl/banner/score.php:55 tpl/banner/score.php:94 2177 #: tpl/dash/dashboard.tpl.php:24 0 tpl/dash/dashboard.tpl.php:3082203 #: tpl/dash/dashboard.tpl.php:245 tpl/dash/dashboard.tpl.php:313 2178 2204 msgid "Improved by" 2179 2205 msgstr "" 2180 2206 2181 #: tpl/banner/score.php:68 tpl/dash/dashboard.tpl.php:2 672207 #: tpl/banner/score.php:68 tpl/dash/dashboard.tpl.php:272 2182 2208 msgid "PageSpeed Score" 2183 2209 msgstr "" … … 2272 2298 2273 2299 #: tpl/cache/network_settings-advanced.tpl.php:7 2274 #: tpl/cache/settings-advanced.tpl.php: 72300 #: tpl/cache/settings-advanced.tpl.php:9 2275 2301 msgid "Advanced Settings" 2276 2302 msgstr "" … … 2312 2338 msgstr "" 2313 2339 2314 #: tpl/cache/settings-advanced.tpl.php:1 32340 #: tpl/cache/settings-advanced.tpl.php:15 2315 2341 msgid "These settings are meant for ADVANCED USERS ONLY." 2316 2342 msgstr "" 2317 2343 2318 #: tpl/cache/settings-advanced.tpl.php:32 2344 #: tpl/cache/settings-advanced.tpl.php:33 2345 msgid "" 2346 "Specify an AJAX action in POST/GET and the number of seconds to cache that " 2347 "request, separated by a space." 2348 msgstr "" 2349 2350 #: tpl/cache/settings-advanced.tpl.php:53 2319 2351 msgid "" 2320 2352 "Enable this option if you are using both HTTP and HTTPS in the same domain " … … 2322 2354 msgstr "" 2323 2355 2324 #: tpl/cache/settings-advanced.tpl.php: 462356 #: tpl/cache/settings-advanced.tpl.php:67 2325 2357 msgid "" 2326 2358 "When a visitor hovers over a page link, preload that page. This will speed " … … 2328 2360 msgstr "" 2329 2361 2330 #: tpl/cache/settings-advanced.tpl.php: 502362 #: tpl/cache/settings-advanced.tpl.php:72 2331 2363 msgid "" 2332 2364 "This will generate extra requests to the server, which will increase server " … … 3119 3151 msgstr "" 3120 3152 3121 #: tpl/cdn/auto_setup.tpl.php:140 tpl/dash/dashboard.tpl.php: 1963122 #: tpl/dash/dashboard.tpl.php: 198tpl/general/settings.tpl.php:783153 #: tpl/cdn/auto_setup.tpl.php:140 tpl/dash/dashboard.tpl.php:200 3154 #: tpl/dash/dashboard.tpl.php:202 tpl/general/settings.tpl.php:78 3123 3155 #: tpl/general/settings.tpl.php:80 tpl/general/settings.tpl.php:109 3124 3156 msgid "Link to QUIC.cloud" … … 3576 3608 msgstr "" 3577 3609 3578 #: tpl/crawler/map.tpl.php:68 tpl/dash/dashboard.tpl.php:5 683610 #: tpl/crawler/map.tpl.php:68 tpl/dash/dashboard.tpl.php:573 3579 3611 msgid "Crawler Status" 3580 3612 msgstr "" … … 3725 3757 msgstr "" 3726 3758 3727 #: tpl/crawler/summary.tpl.php:85 tpl/dash/dashboard.tpl.php:58 13759 #: tpl/crawler/summary.tpl.php:85 tpl/dash/dashboard.tpl.php:586 3728 3760 msgid "Current crawler started at" 3729 3761 msgstr "" … … 3733 3765 msgstr "" 3734 3766 3735 #: tpl/crawler/summary.tpl.php:97 tpl/dash/dashboard.tpl.php:5 883767 #: tpl/crawler/summary.tpl.php:97 tpl/dash/dashboard.tpl.php:593 3736 3768 msgid "Last interval" 3737 3769 msgstr "" 3738 3770 3739 #: tpl/crawler/summary.tpl.php:104 tpl/dash/dashboard.tpl.php: 5953771 #: tpl/crawler/summary.tpl.php:104 tpl/dash/dashboard.tpl.php:600 3740 3772 msgid "Ended reason" 3741 3773 msgstr "" … … 3833 3865 msgstr "" 3834 3866 3835 #: tpl/dash/dashboard.tpl.php:41 tpl/dash/dashboard.tpl.php:21 23836 #: tpl/dash/dashboard.tpl.php:27 03867 #: tpl/dash/dashboard.tpl.php:41 tpl/dash/dashboard.tpl.php:217 3868 #: tpl/dash/dashboard.tpl.php:275 3837 3869 msgid "Sync" 3838 3870 msgstr "" … … 3846 3878 msgstr "" 3847 3879 3848 #: tpl/dash/dashboard.tpl.php:55 tpl/dash/dashboard.tpl.php:504 3880 #: tpl/dash/dashboard.tpl.php:55 tpl/dash/dashboard.tpl.php:509 3881 #: tpl/dash/network_dash.tpl.php:30 3849 3882 msgid "Low Quality Image Placeholder" 3850 3883 msgstr "" … … 3890 3923 msgstr "" 3891 3924 3892 #: tpl/dash/dashboard.tpl.php:19 43925 #: tpl/dash/dashboard.tpl.php:198 3893 3926 msgid "Go to QUIC.cloud dashboard" 3894 3927 msgstr "" 3895 3928 3896 #: tpl/dash/dashboard.tpl.php:21 33929 #: tpl/dash/dashboard.tpl.php:218 3897 3930 msgid "Refresh page load time" 3898 3931 msgstr "" 3899 3932 3900 #: tpl/dash/dashboard.tpl.php:25 4 tpl/dash/dashboard.tpl.php:3243901 #: tpl/dash/dashboard.tpl.php:46 4 tpl/dash/dashboard.tpl.php:4963902 #: tpl/dash/dashboard.tpl.php:5 28 tpl/dash/dashboard.tpl.php:5603933 #: tpl/dash/dashboard.tpl.php:259 tpl/dash/dashboard.tpl.php:329 3934 #: tpl/dash/dashboard.tpl.php:469 tpl/dash/dashboard.tpl.php:501 3935 #: tpl/dash/dashboard.tpl.php:533 tpl/dash/dashboard.tpl.php:565 3903 3936 msgid "Last requested" 3904 3937 msgstr "" 3905 3938 3906 #: tpl/dash/dashboard.tpl.php:2 593939 #: tpl/dash/dashboard.tpl.php:264 3907 3940 msgid "Current closest Cloud server is %s. Click to redetect." 3908 3941 msgstr "" 3909 3942 3910 #: tpl/dash/dashboard.tpl.php:2 59tpl/img_optm/summary.tpl.php:433943 #: tpl/dash/dashboard.tpl.php:264 tpl/img_optm/summary.tpl.php:43 3911 3944 #: tpl/page_optm/settings_css.tpl.php:101 3912 3945 #: tpl/page_optm/settings_css.tpl.php:218 … … 3917 3950 msgstr "" 3918 3951 3919 #: tpl/dash/dashboard.tpl.php:2 59tpl/general/settings.tpl.php:1303952 #: tpl/dash/dashboard.tpl.php:264 tpl/general/settings.tpl.php:130 3920 3953 #: tpl/img_optm/summary.tpl.php:43 tpl/img_optm/summary.tpl.php:45 3921 3954 #: tpl/page_optm/settings_css.tpl.php:101 … … 3926 3959 msgstr "" 3927 3960 3928 #: tpl/dash/dashboard.tpl.php:27 13961 #: tpl/dash/dashboard.tpl.php:276 3929 3962 msgid "Refresh page score" 3930 3963 msgstr "" 3931 3964 3932 #: tpl/dash/dashboard.tpl.php:33 2tpl/img_optm/entry.tpl.php:63965 #: tpl/dash/dashboard.tpl.php:337 tpl/img_optm/entry.tpl.php:6 3933 3966 msgid "Image Optimization Summary" 3934 3967 msgstr "" 3935 3968 3936 #: tpl/dash/dashboard.tpl.php:333 tpl/dash/dashboard.tpl.php:413 3937 #: tpl/dash/dashboard.tpl.php:441 tpl/dash/dashboard.tpl.php:473 3938 #: tpl/dash/dashboard.tpl.php:505 tpl/dash/dashboard.tpl.php:537 3939 #: tpl/dash/dashboard.tpl.php:569 3940 msgid "More" 3941 msgstr "" 3942 3943 #: tpl/dash/dashboard.tpl.php:344 tpl/img_optm/summary.tpl.php:64 3944 msgid "Send Optimization Request" 3945 msgstr "" 3946 3947 #: tpl/dash/dashboard.tpl.php:350 tpl/img_optm/summary.tpl.php:269 3948 msgid "Total Reduction" 3949 msgstr "" 3950 3951 #: tpl/dash/dashboard.tpl.php:353 tpl/img_optm/summary.tpl.php:272 3952 msgid "Images Pulled" 3953 msgstr "" 3954 3955 #: tpl/dash/dashboard.tpl.php:381 tpl/img_optm/summary.tpl.php:275 3956 msgid "Last Request" 3957 msgstr "" 3958 3959 #: tpl/dash/dashboard.tpl.php:384 3960 msgid "Last Pull" 3961 msgstr "" 3962 3963 #: tpl/dash/dashboard.tpl.php:412 3964 msgid "Cache Status" 3965 msgstr "" 3966 3967 #: tpl/dash/dashboard.tpl.php:418 3968 msgid "Public Cache" 3969 msgstr "" 3970 3971 #: tpl/dash/dashboard.tpl.php:419 3972 msgid "Private Cache" 3973 msgstr "" 3974 3975 #: tpl/dash/dashboard.tpl.php:440 tpl/toolbox/purge.tpl.php:70 3976 msgid "Critical CSS" 3977 msgstr "" 3978 3969 #: tpl/dash/dashboard.tpl.php:338 tpl/dash/dashboard.tpl.php:418 3979 3970 #: tpl/dash/dashboard.tpl.php:446 tpl/dash/dashboard.tpl.php:478 3980 3971 #: tpl/dash/dashboard.tpl.php:510 tpl/dash/dashboard.tpl.php:542 3972 #: tpl/dash/dashboard.tpl.php:574 3973 msgid "More" 3974 msgstr "" 3975 3976 #: tpl/dash/dashboard.tpl.php:349 tpl/img_optm/summary.tpl.php:64 3977 msgid "Send Optimization Request" 3978 msgstr "" 3979 3980 #: tpl/dash/dashboard.tpl.php:355 tpl/img_optm/summary.tpl.php:269 3981 msgid "Total Reduction" 3982 msgstr "" 3983 3984 #: tpl/dash/dashboard.tpl.php:358 tpl/img_optm/summary.tpl.php:272 3985 msgid "Images Pulled" 3986 msgstr "" 3987 3988 #: tpl/dash/dashboard.tpl.php:386 tpl/img_optm/summary.tpl.php:275 3989 msgid "Last Request" 3990 msgstr "" 3991 3992 #: tpl/dash/dashboard.tpl.php:389 3993 msgid "Last Pull" 3994 msgstr "" 3995 3996 #: tpl/dash/dashboard.tpl.php:417 3997 msgid "Cache Status" 3998 msgstr "" 3999 4000 #: tpl/dash/dashboard.tpl.php:423 4001 msgid "Public Cache" 4002 msgstr "" 4003 4004 #: tpl/dash/dashboard.tpl.php:424 4005 msgid "Private Cache" 4006 msgstr "" 4007 4008 #: tpl/dash/dashboard.tpl.php:445 tpl/toolbox/purge.tpl.php:70 4009 msgid "Critical CSS" 4010 msgstr "" 4011 4012 #: tpl/dash/dashboard.tpl.php:451 tpl/dash/dashboard.tpl.php:483 4013 #: tpl/dash/dashboard.tpl.php:515 tpl/dash/dashboard.tpl.php:547 3981 4014 #: tpl/page_optm/settings_css.tpl.php:92 tpl/page_optm/settings_css.tpl.php:209 3982 4015 #: tpl/page_optm/settings_media.tpl.php:176 … … 3985 4018 msgstr "" 3986 4019 3987 #: tpl/dash/dashboard.tpl.php:449 tpl/dash/dashboard.tpl.php:4813988 #: tpl/dash/dashboard.tpl.php:513 tpl/dash/dashboard.tpl.php:5453989 msgid "Time to execute previous request"3990 msgstr ""3991 3992 4020 #: tpl/dash/dashboard.tpl.php:454 tpl/dash/dashboard.tpl.php:486 3993 4021 #: tpl/dash/dashboard.tpl.php:518 tpl/dash/dashboard.tpl.php:550 4022 msgid "Time to execute previous request" 4023 msgstr "" 4024 4025 #: tpl/dash/dashboard.tpl.php:459 tpl/dash/dashboard.tpl.php:491 4026 #: tpl/dash/dashboard.tpl.php:523 tpl/dash/dashboard.tpl.php:555 3994 4027 msgid "Requests in queue" 3995 4028 msgstr "" 3996 4029 3997 #: tpl/dash/dashboard.tpl.php:4 56 tpl/dash/dashboard.tpl.php:4883998 #: tpl/dash/dashboard.tpl.php:52 0 tpl/dash/dashboard.tpl.php:5524030 #: tpl/dash/dashboard.tpl.php:461 tpl/dash/dashboard.tpl.php:493 4031 #: tpl/dash/dashboard.tpl.php:525 tpl/dash/dashboard.tpl.php:557 3999 4032 msgid "Force cron" 4000 4033 msgstr "" 4001 4034 4002 #: tpl/dash/dashboard.tpl.php:47 2tpl/toolbox/purge.tpl.php:794035 #: tpl/dash/dashboard.tpl.php:477 tpl/toolbox/purge.tpl.php:79 4003 4036 msgid "Unique CSS" 4004 4037 msgstr "" 4005 4038 4006 #: tpl/dash/dashboard.tpl.php:5 364039 #: tpl/dash/dashboard.tpl.php:541 4007 4040 msgid "Viewport Image" 4008 4041 msgstr "" 4009 4042 4010 #: tpl/dash/dashboard.tpl.php:57 34043 #: tpl/dash/dashboard.tpl.php:578 4011 4044 msgid "Crawler(s)" 4012 4045 msgstr "" 4013 4046 4014 #: tpl/dash/dashboard.tpl.php:5 764047 #: tpl/dash/dashboard.tpl.php:581 4015 4048 msgid "Currently active crawler" 4016 4049 msgstr "" 4017 4050 4018 #: tpl/dash/dashboard.tpl.php:60 24051 #: tpl/dash/dashboard.tpl.php:607 4019 4052 msgid "<b>Last crawled:</b> %d item(s)" 4020 4053 msgstr "" 4021 4054 4022 #: tpl/dash/dashboard.tpl.php:6 164055 #: tpl/dash/dashboard.tpl.php:621 4023 4056 msgid "Try QUIC.cloud CDN!" 4024 4057 msgstr "" 4025 4058 4026 #: tpl/dash/dashboard.tpl.php:6 194059 #: tpl/dash/dashboard.tpl.php:624 4027 4060 msgid "Best available WordPress performance" 4028 4061 msgstr "" 4029 4062 4030 #: tpl/dash/dashboard.tpl.php:62 24063 #: tpl/dash/dashboard.tpl.php:627 4031 4064 msgid "Globally fast TTFB, easy setup, and <a %s>more</a>!" 4032 4065 msgstr "" … … 4042 4075 #: tpl/dash/network_dash.tpl.php:19 4043 4076 msgid "Usage Statistics" 4044 msgstr ""4045 4046 #: tpl/dash/network_dash.tpl.php:284047 msgid "CCSS"4048 4077 msgstr "" 4049 4078 … … 4669 4698 4670 4699 #: tpl/img_optm/summary.tpl.php:241 4671 msgid "Congratulations, all requested!"4700 msgid "Congratulations, all gathered!" 4672 4701 msgstr "" 4673 4702 … … 4995 5024 4996 5025 #: tpl/page_optm/settings_css.tpl.php:185 4997 #: tpl/page_optm/settings_html.tpl.php:1 50tpl/page_optm/settings_js.tpl.php:735026 #: tpl/page_optm/settings_html.tpl.php:167 tpl/page_optm/settings_js.tpl.php:73 4998 5027 msgid "" 4999 5028 "This can improve your speed score in services like Pingdom, GTmetrix and " … … 5087 5116 5088 5117 #: tpl/page_optm/settings_html.tpl.php:98 5118 msgid "" 5119 "When minifying HTML do not discard comments that match a specified pattern." 5120 msgstr "" 5121 5122 #: tpl/page_optm/settings_html.tpl.php:100 5123 msgid "If comment to be kept is like: %s write: %s" 5124 msgstr "" 5125 5126 #: tpl/page_optm/settings_html.tpl.php:115 5089 5127 msgid "Remove query strings from internal static resources." 5090 5128 msgstr "" 5091 5129 5092 #: tpl/page_optm/settings_html.tpl.php:1 025130 #: tpl/page_optm/settings_html.tpl.php:119 5093 5131 msgid "Google reCAPTCHA will be bypassed automatically." 5094 5132 msgstr "" 5095 5133 5096 #: tpl/page_optm/settings_html.tpl.php:1 075134 #: tpl/page_optm/settings_html.tpl.php:124 5097 5135 msgid "Append query string %s to the resources to bypass this action." 5098 5136 msgstr "" 5099 5137 5100 #: tpl/page_optm/settings_html.tpl.php:1 215138 #: tpl/page_optm/settings_html.tpl.php:138 5101 5139 msgid "" 5102 5140 "Use Web Font Loader library to load Google Fonts asynchronously while " … … 5104 5142 msgstr "" 5105 5143 5106 #: tpl/page_optm/settings_html.tpl.php:1 225144 #: tpl/page_optm/settings_html.tpl.php:139 5107 5145 msgid "" 5108 5146 "This will also add a preconnect to Google Fonts to establish a connection " … … 5110 5148 msgstr "" 5111 5149 5112 #: tpl/page_optm/settings_html.tpl.php:1 365150 #: tpl/page_optm/settings_html.tpl.php:153 5113 5151 msgid "Prevent Google Fonts from loading on all pages." 5114 5152 msgstr "" 5115 5153 5116 #: tpl/page_optm/settings_html.tpl.php:1 495154 #: tpl/page_optm/settings_html.tpl.php:166 5117 5155 msgid "" 5118 5156 "Stop loading WordPress.org emoji. Browser default emoji will be displayed " … … 5120 5158 msgstr "" 5121 5159 5122 #: tpl/page_optm/settings_html.tpl.php:1 635160 #: tpl/page_optm/settings_html.tpl.php:180 5123 5161 msgid "This option will remove all %s tags from HTML." 5124 5162 msgstr "" … … 5226 5264 5227 5265 #: tpl/page_optm/settings_localization.tpl.php:127 5228 #: tpl/toolbox/beta_test.tpl.php: 325266 #: tpl/toolbox/beta_test.tpl.php:26 5229 5267 msgid "Example" 5230 5268 msgstr "" … … 5764 5802 msgstr "" 5765 5803 5766 #: tpl/toolbox/beta_test.tpl.php:2 75804 #: tpl/toolbox/beta_test.tpl.php:21 5767 5805 msgid "Try GitHub Version" 5768 5806 msgstr "" 5769 5807 5770 #: tpl/toolbox/beta_test.tpl.php: 315808 #: tpl/toolbox/beta_test.tpl.php:25 5771 5809 msgid "" 5772 5810 "Use this section to switch plugin versions. To beta test a GitHub commit, " … … 5774 5812 msgstr "" 5775 5813 5776 #: tpl/toolbox/beta_test.tpl.php:3 65814 #: tpl/toolbox/beta_test.tpl.php:30 5777 5815 msgid "Use latest GitHub Dev commit" 5778 5816 msgstr "" 5779 5817 5780 #: tpl/toolbox/beta_test.tpl.php:3 85818 #: tpl/toolbox/beta_test.tpl.php:32 5781 5819 msgid "Use latest GitHub Master commit" 5782 5820 msgstr "" 5783 5821 5784 #: tpl/toolbox/beta_test.tpl.php: 40 tpl/toolbox/beta_test.tpl.php:565822 #: tpl/toolbox/beta_test.tpl.php:34 tpl/toolbox/beta_test.tpl.php:50 5785 5823 msgid "Use latest WordPress release version" 5786 5824 msgstr "" 5787 5825 5788 #: tpl/toolbox/beta_test.tpl.php: 405826 #: tpl/toolbox/beta_test.tpl.php:34 5789 5827 msgid "OR" 5790 5828 msgstr "" 5791 5829 5792 #: tpl/toolbox/beta_test.tpl.php: 515830 #: tpl/toolbox/beta_test.tpl.php:45 5793 5831 msgid "" 5794 5832 "Downgrade not recommended. May cause fatal error due to refactored code." 5795 5833 msgstr "" 5796 5834 5797 #: tpl/toolbox/beta_test.tpl.php: 555835 #: tpl/toolbox/beta_test.tpl.php:49 5798 5836 msgid "" 5799 5837 "Press the %s button to use the most recent GitHub commit. Master is for " … … 5801 5839 msgstr "" 5802 5840 5803 #: tpl/toolbox/beta_test.tpl.php: 555841 #: tpl/toolbox/beta_test.tpl.php:49 5804 5842 msgid "Use latest GitHub Dev/Master commit" 5805 5843 msgstr "" 5806 5844 5807 #: tpl/toolbox/beta_test.tpl.php:5 65845 #: tpl/toolbox/beta_test.tpl.php:50 5808 5846 msgid "" 5809 5847 "Press the %s button to stop beta testing and go back to the current release " … … 5811 5849 msgstr "" 5812 5850 5813 #: tpl/toolbox/beta_test.tpl.php: 615851 #: tpl/toolbox/beta_test.tpl.php:55 5814 5852 msgid "" 5815 5853 "In order to avoid an upgrade error, you must be using %1$s or later before " … … 5817 5855 msgstr "" 5818 5856 5819 #: tpl/toolbox/edit_htaccess.tpl.php:3 65857 #: tpl/toolbox/edit_htaccess.tpl.php:38 5820 5858 msgid "LiteSpeed Cache View .htaccess" 5821 5859 msgstr "" 5822 5860 5823 #: tpl/toolbox/edit_htaccess.tpl.php:4 15861 #: tpl/toolbox/edit_htaccess.tpl.php:43 5824 5862 msgid ".htaccess Path" 5825 5863 msgstr "" 5826 5864 5827 #: tpl/toolbox/edit_htaccess.tpl.php: 475865 #: tpl/toolbox/edit_htaccess.tpl.php:50 5828 5866 msgid "Frontend .htaccess Path" 5829 5867 msgstr "" 5830 5868 5831 #: tpl/toolbox/edit_htaccess.tpl.php:5 2 tpl/toolbox/edit_htaccess.tpl.php:695869 #: tpl/toolbox/edit_htaccess.tpl.php:55 tpl/toolbox/edit_htaccess.tpl.php:73 5832 5870 msgid "Default path is" 5833 5871 msgstr "" 5834 5872 5835 #: tpl/toolbox/edit_htaccess.tpl.php:5 5 tpl/toolbox/edit_htaccess.tpl.php:725873 #: tpl/toolbox/edit_htaccess.tpl.php:59 tpl/toolbox/edit_htaccess.tpl.php:77 5836 5874 msgid "PHP Constant %s is supported." 5837 5875 msgstr "" 5838 5876 5839 #: tpl/toolbox/edit_htaccess.tpl.php: 56 tpl/toolbox/edit_htaccess.tpl.php:735877 #: tpl/toolbox/edit_htaccess.tpl.php:60 tpl/toolbox/edit_htaccess.tpl.php:78 5840 5878 msgid "You can use this code %1$s in %2$s to specify the htaccess file path." 5841 5879 msgstr "" 5842 5880 5843 #: tpl/toolbox/edit_htaccess.tpl.php:6 45881 #: tpl/toolbox/edit_htaccess.tpl.php:68 5844 5882 msgid "Backend .htaccess Path" 5845 5883 msgstr "" 5846 5884 5847 #: tpl/toolbox/edit_htaccess.tpl.php:8 25885 #: tpl/toolbox/edit_htaccess.tpl.php:88 5848 5886 msgid "Current %s Contents" 5849 5887 msgstr "" -
litespeed-cache/trunk/lib/css-min/minifier.cls.php
r2869601 r3123399 124 124 125 125 /** 126 * Sets the approximate column after which long lines will be split tedin the output126 * Sets the approximate column after which long lines will be split in the output 127 127 * with a linebreak. 128 128 * @param int $position … … 313 313 314 314 // Process quoted unquotable attribute selectors to unquote them. Covers most common cases. 315 // Likel yhood of a quoted attribute selector being a substring in a string: Very very low.315 // Likelihood of a quoted attribute selector being a substring in a string: Very very low. 316 316 $css = preg_replace( 317 317 '/\[\s*([a-z][a-z-]+)\s*([\*\|\^\$~]?=)\s*[\'"](-?[a-z_][a-z0-9-_]+)[\'"]\s*\]/Ssi', -
litespeed-cache/trunk/lib/guest.cls.php
r2977143 r3123399 24 24 25 25 /** 26 * Constru tor26 * Constructor 27 27 * 28 28 * @since 4.1 -
litespeed-cache/trunk/lib/html-min.cls.php
r3031822 r3123399 27 27 */ 28 28 protected $_jsCleanComments = true; 29 protected $_skipComments = array(); 29 30 30 31 /** … … 85 86 if (isset($options['jsCleanComments'])) { 86 87 $this->_jsCleanComments = (bool)$options['jsCleanComments']; 88 } 89 if (isset($options['skipComments'])) { 90 $this->_skipComments = $options['skipComments']; 87 91 } 88 92 } … … 167 171 } 168 172 173 /** 174 * From LSCWP 6.2: Changed the function to test for special comments that will be skipped. See: https://github.com/litespeedtech/lscache_wp/pull/622 175 */ 169 176 protected function _commentCB($m) 170 177 { 171 return (0 === strpos($m[1], '[') || false !== strpos($m[1], '<![')) 172 ? $m[0] 173 : ''; 178 // If is IE conditional comment return it. 179 if(0 === strpos($m[1], '[') || false !== strpos($m[1], '<![')) return $m[0]; 180 181 // Check if comment text is present in Page Optimization -> HTML Settings -> HTML Keep comments 182 if(count($this->_skipComments) > 0){ 183 foreach ($this->_skipComments as $comment) { 184 if ($comment && strpos($m[1], $comment) !== false) { 185 return $m[0]; 186 } 187 } 188 } 189 190 // Comment can be removed. 191 return ''; 174 192 } 175 193 -
litespeed-cache/trunk/lib/object-cache.php
r2761310 r3123399 1 1 <?php 2 defined( 'WPINC' ) || exit; 2 3 /** 4 * Plugin Name: LiteSpeed Cache - Object Cache (Drop-in) 5 * Plugin URI: https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration 6 * Description: High-performance page caching and site optimization from LiteSpeed. 7 * Version: 6.3 8 * Author: LiteSpeed Technologies 9 * Author URI: https://www.litespeedtech.com 10 */ 11 12 defined('WPINC') || exit; 3 13 /** 4 14 * LiteSpeed Object Cache … … 7 17 */ 8 18 9 ! defined( 'LSCWP_OBJECT_CACHE' ) && define( 'LSCWP_OBJECT_CACHE', true);19 !defined('LSCWP_OBJECT_CACHE') && define('LSCWP_OBJECT_CACHE', true); 10 20 11 // Initialize const `LSCWP_DIR` and locate LSCWP plugin foder 12 $lscwp_dir = ( defined( 'WP_PLUGIN_DIR' ) ? WP_PLUGIN_DIR : WP_CONTENT_DIR . '/plugins' ) . '/litespeed-cache/'; 21 // Initialize const `LSCWP_DIR` and locate LSCWP plugin folder 22 $lscwp_dir = (defined('WP_PLUGIN_DIR') ? WP_PLUGIN_DIR : WP_CONTENT_DIR . '/plugins') . '/litespeed-cache/'; 23 13 24 // Use plugin as higher priority than MU plugin 14 if ( ! file_exists( $lscwp_dir . 'litespeed-cache.php' )) {25 if (!file_exists($lscwp_dir . 'litespeed-cache.php')) { 15 26 // Check if is mu plugin or not 16 $lscwp_dir = ( defined( 'WPMU_PLUGIN_DIR' ) ? WPMU_PLUGIN_DIR : WP_CONTENT_DIR . '/mu-plugins') . '/litespeed-cache/';17 if ( ! file_exists( $lscwp_dir . 'litespeed-cache.php' )) {27 $lscwp_dir = (defined('WPMU_PLUGIN_DIR') ? WPMU_PLUGIN_DIR : WP_CONTENT_DIR . '/mu-plugins') . '/litespeed-cache/'; 28 if (!file_exists($lscwp_dir . 'litespeed-cache.php')) { 18 29 $lscwp_dir = ''; 19 30 } … … 24 35 25 36 // Can't find LSCWP location, terminate object cache process 26 if ( ! $lscwp_dir || ! file_exists( $data_file ) || ( ! file_exists( $lib_file ) )) {27 if ( ! is_admin()) { // Bypass object cache for frontend37 if (!$lscwp_dir || !file_exists($data_file) || (!file_exists($lib_file))) { 38 if (!is_admin()) { // Bypass object cache for frontend 28 39 require_once ABSPATH . WPINC . '/cache.php'; 40 } else { 41 $err = 'Can NOT find LSCWP path for object cache initialization in ' . __FILE__; 42 error_log($err); 43 add_action(is_network_admin() ? 'network_admin_notices' : 'admin_notices', function () use (&$err) { 44 echo $err; 45 }); 29 46 } 30 else { 31 $err = 'Can NOT find LSCWP path for object cache initialization in ' . __FILE__; 32 error_log( $err ); 33 add_action( is_network_admin() ? 'network_admin_notices' : 'admin_notices', function() use ( &$err ) { 34 echo $err; 35 } ); 36 } 37 } 38 else { 39 if ( ! LSCWP_OBJECT_CACHE ) { // Disable cache 47 } else { 48 if (!LSCWP_OBJECT_CACHE) { // Disable cache 40 49 wp_using_ext_object_cache(false); 41 50 } 42 51 // Init object cache & LSCWP 43 else if ( file_exists( $lib_file )) {52 else if (file_exists($lib_file)) { 44 53 require_once $lib_file; 45 54 } -
litespeed-cache/trunk/litespeed-cache.php
r3077216 r3123399 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: 6. 2.0.17 * Version: 6.3 8 8 * Author: LiteSpeed Technologies 9 9 * Author URI: https://www.litespeedtech.com … … 35 35 } 36 36 37 !defined('LSCWP_V') && define('LSCWP_V', '6. 2.0.1');37 !defined('LSCWP_V') && define('LSCWP_V', '6.3'); 38 38 39 39 !defined('LSCWP_CONTENT_DIR') && define('LSCWP_CONTENT_DIR', WP_CONTENT_DIR); … … 58 58 * @since 3.0 59 59 */ 60 !defined('LITESPEED_STATIC_URL') && define('LITESPEED_STATIC_URL', $WP_CONTENT_URL . '/litespeed'); // Full static cache folder URL '//example.com/wp-content/litespeed' 61 !defined('LITESPEED_STATIC_DIR') && define('LITESPEED_STATIC_DIR', LSCWP_CONTENT_DIR . '/litespeed'); // Full static cache folder path '/var/www/html/***/wp-content/litespeed' 60 !defined('LITESPEED_DATA_FOLDER') && define('LITESPEED_DATA_FOLDER', 'litespeed'); 61 !defined('LITESPEED_STATIC_URL') && define('LITESPEED_STATIC_URL', $WP_CONTENT_URL . '/' . LITESPEED_DATA_FOLDER); // Full static cache folder URL '//example.com/wp-content/litespeed' 62 !defined('LITESPEED_STATIC_DIR') && define('LITESPEED_STATIC_DIR', LSCWP_CONTENT_DIR . '/' . LITESPEED_DATA_FOLDER); // Full static cache folder path '/var/www/html/***/wp-content/litespeed' 62 63 63 64 !defined('LITESPEED_TIME_OFFSET') && define('LITESPEED_TIME_OFFSET', get_option('gmt_offset') * 60 * 60); … … 103 104 } 104 105 105 // ESI const defin ation106 // ESI const definition 106 107 if (!defined('LSWCP_ESI_SUPPORT')) { 107 108 define('LSWCP_ESI_SUPPORT', LITESPEED_SERVER_TYPE !== 'LITESPEED_SERVER_OLS' ? true : false); … … 123 124 124 125 /** 125 * Overwri de the WP nonce funcs outside of LiteSpeed namespace126 * Overwrite the WP nonce funcs outside of LiteSpeed namespace 126 127 * @since 3.0 127 128 */ -
litespeed-cache/trunk/readme.txt
r3077240 r3123399 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. 5.26 Stable tag: 6. 2.0.15 Tested up to: 6.6 6 Stable tag: 6.3 7 7 License: GPLv3 8 8 License URI: http://www.gnu.org/licenses/gpl.html … … 251 251 == Changelog == 252 252 253 = 6.3 - Jul 22 2024 = 254 * 🌱**Page Optimize** HTML Keep Comments: When minifying HTML do not discard comments that match a specified pattern. (#328853) 255 * 🌱**Cache** Cache POST requests. Now can configure POST/GET AJAX requests to be cached. (#647300) 256 * **Cache** Bypass admin initialization when doing ajax call. (Tim) 257 * **Cache** Better control over the cache location #541 (Gal Baras/Tanvir Israq) 258 * **Cloud** Added nonce for callback validation to enhance security. (Chloe@Wordfence) 259 * **Cloud** Fixed an error message for daily quota. 260 * **Cloud** Display error message when communicating with QUIC.cloud causes a token error. 261 * **ESI** Bypass ESI at an earlier stage when getting `DONOTCACHEPAGE`. 262 * **ESI** Added ESI nonce for Events Calendar and jetMenu mobile hamburger menu. (#306983 #163710 PR#419) 263 * **ESI** Added WP Data Access nonce (PR#665) 264 * **ESI** Added WP User Frontend ESI nonce (PR#675) 265 * **Media** Ignored images from JS in image size detection (PR#660) 266 * **GUI** Moved Preset menu from network level to site level for multisite networks. 267 * **GUI** Suppressed sitemap generation message if not triggered manually. 268 * **GUI** Added CloudFlare purge to front end menu. 269 * **GUI** Allowed customized partner CDN login link on dash. 270 * **Page Optimize** Cleaned up litespeed_url table when clearing url files. (PR#664) 271 * **Page Optimize** Updated Instant Click library to version 5.2.0. 272 * **Page Optimize** Added Flatsome theme random string excludes. (PR#415) 273 * **Page Optimize** Exclude Cloudflare turnstile from JS optimizations. (Tobolo) 274 * **Page Optimize** Fixed Cloudflare Turnstile issues. (Contributolo PR#671/672) 275 * **Object** Improved debug log for object cache status. (PR#669) 276 * **Object** Added brief parseable header comments to the drop-in file. (OllieJones) 277 * **Debug** Trimmed debug log. 278 * **Misc** Improved compatibility and sped up resolving for JSON functions `json_encode/json_decode`. (hosni/szepeviktor #693) 279 * **Misc** Fixed typos in params and comments. (szepeviktor #688) 280 * **Image Optimization** Fixed an issue which suppressed new requests when there were no new images in the library but there were unprocessed images in the send queue. 281 * **Image Optimization** Improved Cloud side quota check by disallowing new requests if notified but not pulled. 282 * **Image Optimization** Keep image attributes when replacing dimensions. (PR#686 #381779) 283 253 284 = 6.2.0.1 - Apr 25 2024 = 254 285 * 🔥🐞**Page Optimize** Fixed the image display issue that occurs with Elementor's `data-settings` attribute when the WebP image is not yet ready. (kanten/cbwwebmaster/reedock #132840 #680939 #326525) … … 317 348 * **Image Optimize** Increased time limit for pull process. 318 349 * **Image Optimize** Last pull time and cron tag now included in optimization summary. 319 * **Image Optimize** Fixed Elementors Slideshow unus al background images. (Ryan D)350 * **Image Optimize** Fixed Elementors Slideshow unusual background images. (Ryan D) 320 351 * 🐞**Database Optimize** Fix an issue where cleaning post revisions would fail while cleaning postmeta. (Tynan #596) 321 352 * **Crawler** Added status updates to CLI. (Lars) … … 345 376 * **GUI** Stopped WebP tip from wrongly displaying when Guest Mode is off. 346 377 * **GUI** Added QUIC.cloud promotion postbox on dashboard page. 347 * **3rd** Added `pagespeed ninja` to blocklist due to its bad b ahavior.378 * **3rd** Added `pagespeed ninja` to blocklist due to its bad behavior. -
litespeed-cache/trunk/src/activation.cls.php
r3076030 r3123399 353 353 if ($options[self::O_OBJECT]) { 354 354 $this_ids = array( 355 self::O_DEBUG, 355 356 self::O_OBJECT_KIND, 356 357 self::O_OBJECT_HOST, … … 370 371 371 372 if ($options[self::O_GUEST]) { 372 $this_ids = array(self::HASH, self::O_CACHE_LOGIN_COOKIE, self::O_DEBUG , self::O_DEBUG_IPS, self::O_UTIL_NO_HTTPS_VARY, self::O_GUEST_UAS, self::O_GUEST_IPS);373 $this_ids = array(self::HASH, self::O_CACHE_LOGIN_COOKIE, self::O_DEBUG_IPS, self::O_UTIL_NO_HTTPS_VARY, self::O_GUEST_UAS, self::O_GUEST_IPS); 373 374 $ids = array_merge($ids, $this_ids); 374 375 } … … 378 379 $data[$v] = $options[$v]; 379 380 } 380 $data = json_encode($data);381 $data = \json_encode($data); 381 382 382 383 $old_data = File::read(self::$_data_file); -
litespeed-cache/trunk/src/admin-display.cls.php
r3076030 r3123399 122 122 $this->_add_submenu(__('Dashboard', 'litespeed-cache'), 'litespeed', 'show_menu_dash'); 123 123 124 $this->_add_submenu(__('Presets', 'litespeed-cache'), 'litespeed-presets', 'show_menu_presets');124 !$this->_is_network_admin && $this->_add_submenu(__('Presets', 'litespeed-cache'), 'litespeed-presets', 'show_menu_presets'); 125 125 126 126 $this->_add_submenu(__('General', 'litespeed-cache'), 'litespeed-general', 'show_menu_general'); … … 205 205 if ($_GET['page'] == 'litespeed-crawler' || $_GET['page'] == 'litespeed-cdn') { 206 206 // Babel JS type correction 207 add_filter('script_loader_tag', array($this, 'bab le_type'), 10, 3);207 add_filter('script_loader_tag', array($this, 'babel_type'), 10, 3); 208 208 209 209 wp_enqueue_script(Core::PLUGIN_NAME . '-lib-react', LSWCP_PLUGIN_URL . 'assets/js/react.min.js', array(), Core::VER, false); … … 273 273 * @since 3.6 274 274 */ 275 public function bab le_type($tag, $handle, $src)275 public function babel_type($tag, $handle, $src) 276 276 { 277 277 if ($handle != Core::PLUGIN_NAME . '-crawler' && $handle != Core::PLUGIN_NAME . '-cdn') { … … 412 412 if (is_numeric($k)) { 413 413 $k = md5($str); 414 } // Use key to make it overwrit eable to previous same msg414 } // Use key to make it overwritable to previous same msg 415 415 $filtered_msgs[$k] = $str; 416 416 } -
litespeed-cache/trunk/src/admin-settings.cls.php
r3009052 r3123399 354 354 if (!strpos($_SERVER['HTTP_REFERER'], '/wp-admin/customize.php')) { 355 355 if (!$current || $esi != $current[ESI::WIDGET_O_ESIENABLE]) { 356 Purge::purge_all('W diget ESI_enable changed');356 Purge::purge_all('Widget ESI_enable changed'); 357 357 } elseif ($ttl != 0 && $ttl != $current[ESI::WIDGET_O_TTL]) { 358 358 Purge::add(Tag::TYPE_WIDGET . $widget->id); 359 359 } 360 360 361 Purge::purge_all('W diget saved');361 Purge::purge_all('Widget saved'); 362 362 } 363 363 return $instance; -
litespeed-cache/trunk/src/api.cls.php
r3009052 r3123399 49 49 * Define hooks to be used in other plugins. 50 50 * 51 * The benefit to use hooks other than functions is no need to det ech if LSCWP enabled and function existed or not anymore51 * The benefit to use hooks other than functions is no need to detach if LSCWP enabled and function existed or not anymore 52 52 * 53 53 * @since 3.0 … … 144 144 * Cloud 145 145 */ 146 add_filter('litespeed_is_from_cloud', array($this, 'is_from_cloud')); // Check if current request is from QC (us ally its to check REST access) // @see https://wordpress.org/support/topic/image-optimization-not-working-3/146 add_filter('litespeed_is_from_cloud', array($this, 'is_from_cloud')); // Check if current request is from QC (usually its to check REST access) // @see https://wordpress.org/support/topic/image-optimization-not-working-3/ 147 147 148 148 /** -
litespeed-cache/trunk/src/avatar.cls.php
r3009052 r3123399 59 59 } 60 60 /** 61 * Get gravatar URL from DB and regen arate61 * Get gravatar URL from DB and regenerate 62 62 * 63 63 * @since 3.0 -
litespeed-cache/trunk/src/base.cls.php
r3076030 r3123399 64 64 const O_CACHE_TTL_STATUS = 'cache-ttl_status'; 65 65 const O_CACHE_TTL_BROWSER = 'cache-ttl_browser'; 66 const O_CACHE_AJAX_TTL = 'cache-ajax_ttl'; 66 67 const O_CACHE_LOGIN_COOKIE = 'cache-login_cookie'; 67 68 const O_CACHE_VARY_COOKIES = 'cache-vary_cookies'; … … 111 112 const O_DEBUG_FILESIZE = 'debug-filesize'; 112 113 const O_DEBUG_COOKIE = 'debug-cookie'; 113 const O_DEBUG_COLLAPS_QS = 'debug-collaps_qs'; 114 const O_DEBUG_COLLAPSE_QS = 'debug-collapse_qs'; 115 const O_DEBUG_COLLAPS_QS = 'debug-collapse_qs'; // For backwards compatibility, will drop after v6.5 114 116 const O_DEBUG_INC = 'debug-inc'; 115 117 const O_DEBUG_EXC = 'debug-exc'; … … 141 143 const O_OPTM_HTML_MIN = 'optm-html_min'; 142 144 const O_OPTM_HTML_LAZY = 'optm-html_lazy'; 145 const O_OPTM_HTML_SKIP_COMMENTS = 'optm-html_skip_comment'; 143 146 const O_OPTM_QS_RM = 'optm-qs_rm'; 144 147 const O_OPTM_GGFONTS_RM = 'optm-ggfonts_rm'; … … 366 369 self::O_CACHE_TTL_STATUS => array(), 367 370 self::O_CACHE_LOGIN_COOKIE => '', 371 self::O_CACHE_AJAX_TTL => array(), 368 372 self::O_CACHE_VARY_COOKIES => array(), 369 373 self::O_CACHE_VARY_GROUP => array(), … … 404 408 self::O_DEBUG_FILESIZE => 0, 405 409 self::O_DEBUG_COOKIE => false, 406 self::O_DEBUG_COLLAPS _QS => false,410 self::O_DEBUG_COLLAPSE_QS => false, 407 411 self::O_DEBUG_INC => array(), 408 412 self::O_DEBUG_EXC => array(), … … 430 434 self::O_OPTM_HTML_MIN => false, 431 435 self::O_OPTM_HTML_LAZY => array(), 436 self::O_OPTM_HTML_SKIP_COMMENTS => array(), 432 437 self::O_OPTM_QS_RM => false, 433 438 self::O_OPTM_GGFONTS_RM => false, … … 590 595 self::O_DEBUG_FILESIZE => 0, 591 596 self::O_DEBUG_COOKIE => false, 592 self::O_DEBUG_COLLAPS _QS => false,597 self::O_DEBUG_COLLAPSE_QS => false, 593 598 self::O_DEBUG_INC => array(), 594 599 self::O_DEBUG_EXC => array(), … … 794 799 795 800 /** 796 * Append a new multi swit h max limit for the bool option801 * Append a new multi switch max limit for the bool option 797 802 * 798 803 * @since 3.0 -
litespeed-cache/trunk/src/cdn-setup.cls.php
r3076030 r3123399 43 43 public function maybe_extract_token() 44 44 { 45 $ params = $this->cls('Cloud')->parse_qc_redir(array('token'));46 47 if ( isset($params['token'])) {48 $this->_setup_token = esc_html($ params['token']);45 $token = $this->cls('Cloud')->parse_qc_redir(true); 46 47 if ($token) { 48 $this->_setup_token = esc_html($token); 49 49 $this->cls('Conf')->update_confs(array(self::O_QC_TOKEN => $this->_setup_token)); 50 50 unset($_GET['token']); … … 77 77 $msg = wp_kses_post($_POST['result']['_msg']); 78 78 self::save_summary(array('cdn_setup_err' => $msg)); 79 Admin_Display::error(__('There was an error during CDNsetup: ', 'litespeed-cache') . $msg);79 Admin_Display::error(__('There was an error during QUIC.cloud CDN auto setup: ', 'litespeed-cache') . $msg); 80 80 } else { 81 81 $this->_process_cdn_status($_POST['result']); … … 255 255 'site_url' => home_url(), 256 256 'ref' => get_admin_url(null, 'admin.php?page=litespeed-cdn'), 257 'nonce' => wp_create_nonce('litespeed_qc_link'), 257 258 ); 258 259 $api_key = $this->conf(self::O_API_KEY); … … 260 261 $data['domain_hash'] = md5(substr($api_key, 0, 8)); 261 262 } 262 263 self::debug2('qc link created', $data); 263 264 wp_redirect(Cloud::CLOUD_SERVER_DASH . '/u/wptoken?data=' . Utility::arr2str($data)); 264 265 exit(); -
litespeed-cache/trunk/src/cdn.cls.php
r3076030 r3123399 303 303 /** 304 304 * Excludes `\` from URL matching 305 * @see #959152 - Word press LSCache CDN Mapping causing malformed URLS305 * @see #959152 - WordPress LSCache CDN Mapping causing malformed URLS 306 306 * @see #685485 307 307 * @since 3.0 … … 496 496 497 497 /** 498 * Check if is orig nal URL of CDN or not498 * Check if is original URL of CDN or not 499 499 * 500 500 * @since 2.1 -
litespeed-cache/trunk/src/cdn/cloudflare.cls.php
r3009052 r3123399 243 243 if ($data) { 244 244 if (is_array($data)) { 245 $data = json_encode($data);245 $data = \json_encode($data); 246 246 } 247 247 $wp_args['body'] = $data; … … 259 259 $result = wp_remote_retrieve_body($resp); 260 260 261 $json = json_decode($result, true);261 $json = \json_decode($result, true); 262 262 263 263 if ($json && $json['success'] && $json['result']) { -
litespeed-cache/trunk/src/cdn/quic.cls.php
r3009052 r3123399 77 77 $options['_tp_cookies'] = apply_filters('litespeed_vary_cookies', array()); 78 78 79 $conf_md5 = md5( json_encode($options));79 $conf_md5 = md5(\json_encode($options)); 80 80 if (!empty($this->_summary['conf_md5']) && $conf_md5 == $this->_summary['conf_md5']) { 81 81 if (!$force) { -
litespeed-cache/trunk/src/cloud.cls.php
r3076030 r3123399 48 48 const API_REPORT = 'wp/report'; 49 49 const API_NEWS = 'news'; 50 const API_VER = 'ver ';50 const API_VER = 'ver_check'; 51 51 const API_BETA_TEST = 'beta_test'; 52 52 … … 168 168 ); 169 169 if (defined('LITESPEED_ERR')) { 170 $req_data['err'] = base64_encode(!is_string(LITESPEED_ERR) ? json_encode(LITESPEED_ERR) : LITESPEED_ERR);171 } 172 $data = self:: get(self::API_VER, $req_data);170 $req_data['err'] = base64_encode(!is_string(LITESPEED_ERR) ? \json_encode(LITESPEED_ERR) : LITESPEED_ERR); 171 } 172 $data = self::post(self::API_VER, $req_data); 173 173 174 174 return $data; … … 326 326 } 327 327 328 self::debug('sync_usage ' . json_encode($usage));328 self::debug('sync_usage ' . \json_encode($usage)); 329 329 330 330 foreach (self::$SERVICES as $v) { … … 399 399 400 400 if ($json) { 401 $msg = __('Cloud Error', 'litespeed-cache') . ": [Service] $service [Info] " . json_encode($json);401 $msg = __('Cloud Error', 'litespeed-cache') . ": [Service] $service [Info] " . \json_encode($json); 402 402 Admin_Display::error($msg); 403 403 } … … 461 461 } 462 462 463 $curr_load = json_decode($response['body'], true);463 $curr_load = \json_decode($response['body'], true); 464 464 if (!empty($curr_load['_res']) && $curr_load['_res'] == 'ok' && isset($curr_load['load'])) { 465 465 $valid_cloud_loads[$v] = $curr_load['load']; … … 730 730 } 731 731 732 $json = json_decode($response['body'], true);732 $json = \json_decode($response['body'], true); 733 733 734 734 if (!is_array($json)) { … … 1038 1038 ), 1039 1039 ); 1040 self::debug('Req rest api to QC [api] ' . $api); 1040 1041 if (!empty($body)) { 1041 $req_args['body'] = json_encode($body);1042 $req_args['body'] = \json_encode($body); 1042 1043 1043 1044 $response = wp_remote_post(self::CLOUD_SERVER . '/v2' . $api, $req_args); … … 1057 1058 return $error_message; 1058 1059 } elseif (wp_remote_retrieve_response_code($response) == '401') { 1060 Admin_Display::error(__('Unauthorized access to REST API. Your token has expired.', 'litespeed-cache')); 1059 1061 return 'unauthorized access to REST API.'; 1060 1062 } 1061 1063 1062 $json = json_decode($response['body'], true); 1064 $json = \json_decode($response['body'], true); 1065 self::debug('QC response', $json); 1063 1066 1064 1067 if (!$json['success']) { … … 1223 1226 } 1224 1227 1225 $json = json_decode($response['body'], true);1228 $json = \json_decode($response['body'], true); 1226 1229 1227 1230 // Save token option … … 1398 1401 * @since 5.0 renamed update_is_linked_status -> parse_qc_redir, add param for additional args. Return args if exist. 1399 1402 */ 1400 public function parse_qc_redir($extra = array()) 1401 { 1402 $extraRet = array(); 1403 $qsDrop = array(); 1403 public function parse_qc_redir($check_token = false) 1404 { 1404 1405 if (!$this->_api_key() && !empty($this->_summary['is_linked'])) { 1405 1406 $this->_summary['is_linked'] = 0; … … 1408 1409 1409 1410 if (empty($_GET['qc_res'])) { 1410 return $extraRet;1411 return false; 1411 1412 } 1412 1413 … … 1419 1420 } 1420 1421 1422 $qsDrop = array(); 1421 1423 $qsDrop[] = ".replace( '&qc_res=" . sanitize_key($_GET['qc_res']) . ', \'\' )'; 1422 1424 1423 1425 if (!empty($_GET['domain_hash'])) { 1426 if (empty($_GET['domain_hash_nonce'])) { 1427 Admin_Display::error(__('Domain Key hash nonce missing.', 'litespeed-cache'), true); 1428 return false; 1429 } 1430 $salt = substr($this->_api_key(), 3, 8); 1431 $tick = ceil(time() / 43200); 1432 $nonce = md5($salt . $tick); 1433 $nonce2 = md5($salt . ($tick - 1)); 1434 if ($_GET['domain_hash_nonce'] != $nonce && $_GET['domain_hash_nonce'] != $nonce2) { 1435 Admin_Display::error(__('Domain Key hash nonce mismatch. Please correct your server clock.', 'litespeed-cache'), true); 1436 return false; 1437 } 1438 1424 1439 if (md5(substr($this->_api_key(), 2, 8)) !== $_GET['domain_hash']) { 1425 1440 Admin_Display::error(__('Domain Key hash mismatch', 'litespeed-cache'), true); 1426 return $extraRet;1441 return false; 1427 1442 } 1428 1443 … … 1431 1446 } 1432 1447 1433 if (!empty($extra)) { 1434 foreach ($extra as $key) { 1435 if (!empty($_GET[$key])) { 1436 $extraRet[$key] = $_GET[$key]; 1437 $qsDrop[] = ".replace( '&$key=" . urlencode($_GET[$key]) . ', \'\' )'; 1438 } 1439 } 1448 $token = ''; 1449 if ($check_token && !empty($_GET['token'])) { 1450 // Validate nonce `litespeed_qc_link` 1451 if (empty($_GET['nonce']) || !wp_verify_nonce($_GET['nonce'], 'litespeed_qc_link')) { 1452 Admin_Display::error(__('Failed to verify domain nonce.', 'litespeed-cache'), true); 1453 return false; 1454 } 1455 1456 $token = preg_replace('/[^0-9a-zA-Z]/', '', $_GET['token']); 1457 $qsDrop[] = ".replace( '&token=" . urlencode($_GET['token']) . ', \'\' )'; 1440 1458 } 1441 1459 … … 1444 1462 // Drop QS 1445 1463 echo "<script>window.history.pushState( 'remove_gen_link', document.title, window.location.href" . $replaceStr . ' );</script>'; 1446 return $ extraRet;1464 return $token; 1447 1465 } 1448 1466 … … 1502 1520 } 1503 1521 1504 $json = json_decode($response['body'], true);1522 $json = \json_decode($response['body'], true); 1505 1523 1506 1524 self::debug('Load ips', $json); -
litespeed-cache/trunk/src/conf.cls.php
r3009052 r3123399 324 324 */ 325 325 if ($ver && $ver != Core::VER) { 326 // Site plugin versi n will change inside326 // Site plugin version will change inside 327 327 Data::cls()->conf_site_upgrade($ver); 328 328 } … … 513 513 514 514 // Update related tables 515 $this->cls('Data')->correct_tb_exist ance();515 $this->cls('Data')->correct_tb_existence(); 516 516 517 517 // Update related files -
litespeed-cache/trunk/src/control.cls.php
r3076030 r3123399 135 135 } 136 136 137 // AJAX cache 138 $ajax_cache = $this->conf(Base::O_CACHE_AJAX_TTL); 139 foreach ($ajax_cache as $v) { 140 $v = explode(' ', $v); 141 if (empty($v[0]) || empty($v[1])) { 142 continue; 143 } 144 // self::debug("Initializing cacheable status for wp_ajax_nopriv_" . $v[0]); 145 add_action( 146 'wp_ajax_nopriv_' . $v[0], 147 function () use ($v) { 148 self::set_custom_ttl($v[1]); 149 self::force_cacheable('ajax Cache setting for action ' . $v[0]); 150 }, 151 4 152 ); 153 } 154 137 155 // Check error page 138 156 add_filter('status_header', array($this, 'check_error_codes'), 10, 2); … … 146 164 * @param $status_header 147 165 * @param $code 148 * @return $er or_status166 * @return $error_status 149 167 */ 150 168 public function check_error_codes($status_header, $code) -
litespeed-cache/trunk/src/core.cls.php
r3076030 r3123399 193 193 } 194 194 195 if (is_admin() ) {195 if (is_admin() && !(defined('DOING_AJAX') && DOING_AJAX)) { 196 196 $this->cls('Admin'); 197 197 } … … 290 290 $this->cls('Localization')->init(); 291 291 292 // Hook cdn for attach ements292 // Hook cdn for attachments 293 293 $this->cls('CDN')->init(); 294 294 … … 394 394 395 395 /** 396 * T igger coment info display hook396 * Trigger comment info display hook 397 397 * 398 398 * @since 1.3 … … 453 453 * For compatibility with those plugins have 'Bad' logic that forced all buffer output even it is NOT their buffer :( 454 454 * 455 * Usually this is called after send_headers() if following orig nal WP process455 * Usually this is called after send_headers() if following original WP process 456 456 * 457 457 * @since 1.1.5 … … 529 529 530 530 if (apply_filters('litespeed_is_json', false)) { 531 if ( json_decode($buffer, true) == null) {531 if (\json_decode($buffer, true) == null) { 532 532 Debug2::debug('[Core] Buffer converting to JSON'); 533 $buffer = json_encode($buffer);533 $buffer = \json_encode($buffer); 534 534 $buffer = trim($buffer, '"'); 535 535 } else { -
litespeed-cache/trunk/src/crawler-map.cls.php
r3076030 r3123399 366 366 * @access public 367 367 */ 368 public function gen( )368 public function gen($manual = false) 369 369 { 370 370 $count = $this->_gen(); … … 375 375 } 376 376 377 if (!defined('DOING_CRON') ) {377 if (!defined('DOING_CRON') && $manual) { 378 378 $msg = sprintf(__('Sitemap created successfully: %d items', 'litespeed-cache'), $count); 379 379 Admin_Display::succeed($msg); -
litespeed-cache/trunk/src/crawler.cls.php
r3031822 r3123399 145 145 146 146 /** 147 * Overwri de get_summary to init elements147 * Overwrite get_summary to init elements 148 148 * 149 149 * @since 3.0 … … 189 189 190 190 /** 191 * Overwri de save_summary191 * Overwrite save_summary 192 192 * 193 193 * @since 3.0 … … 205 205 parent::save_summary($data, $reload, $overwrite); 206 206 207 File::save(LITESPEED_STATIC_DIR . '/crawler/' . $instance->_sitemeta, json_encode($data), true);207 File::save(LITESPEED_STATIC_DIR . '/crawler/' . $instance->_sitemeta, \json_encode($data), true); 208 208 } 209 209 … … 1303 1303 switch ($type) { 1304 1304 case self::TYPE_REFRESH_MAP: 1305 $this->cls('Crawler_Map')->gen( );1305 $this->cls('Crawler_Map')->gen(true); 1306 1306 break; 1307 1307 -
litespeed-cache/trunk/src/data.cls.php
r3009052 r3123399 59 59 60 60 /** 61 * Correct table exist ance62 * 63 * Call when activate -> up adte_confs()64 * Call when up adte_confs()61 * Correct table existence 62 * 63 * Call when activate -> update_confs() 64 * Call when update_confs() 65 65 * 66 66 * @since 3.0 67 67 * @access public 68 68 */ 69 public function correct_tb_exist ance()69 public function correct_tb_existence() 70 70 { 71 71 // Gravatar … … 129 129 $this->cls('Conf')->load_options(); 130 130 131 $this->correct_tb_exist ance();131 $this->correct_tb_existence(); 132 132 133 133 // Update related files … … 292 292 $this->cls('Conf')->load_options(); 293 293 294 $this->correct_tb_exist ance();294 $this->correct_tb_existence(); 295 295 296 296 !defined('LSWCP_EMPTYCACHE') && define('LSWCP_EMPTYCACHE', true); // clear all sites caches … … 466 466 $q = 'DELETE FROM ' . $this->tb('url_file') . ' WHERE `type` = %d'; 467 467 $wpdb->query($wpdb->prepare($q, $type)); 468 469 // Added to cleanup url table. See issue: https://wordpress.org/support/topic/wp_litespeed_url-1-1-gb-in-db-huge-big/ 470 $wpdb->query( 471 'DELETE d 472 FROM `' . 473 $this->tb('url') . 474 '` AS d 475 LEFT JOIN `' . 476 $this->tb('url_file') . 477 '` AS f ON d.`id` = f.`url_id` 478 WHERE f.`url_id` IS NULL' 479 ); 468 480 } 469 481 … … 592 604 { 593 605 global $wpdb; 606 $tb_url = $this->tb('url'); 594 607 595 608 Debug2::debug('[Data] Try to mark as expired: ' . $request_url); 596 $tb_url = $this->tb('url');597 609 $q = "SELECT * FROM `$tb_url` WHERE url=%s"; 598 610 $url_row = $wpdb->get_row($wpdb->prepare($q, $request_url), ARRAY_A); … … 603 615 Debug2::debug('[Data] Mark url_id=' . $url_row['id'] . ' as expired'); 604 616 605 $tb_url = $this->tb('url');606 617 $tb_url_file = $this->tb('url_file'); 607 618 -
litespeed-cache/trunk/src/data.upgrade.func.php
r3009052 r3123399 358 358 'log_file_size' => 'debug-filesize', 359 359 'debug_cookie' => 'debug-cookie', 360 'collaps _qs' => 'debug-collaps_qs',360 'collapse_qs' => 'debug-collapse_qs', 361 361 // 'log_filters' => 'debug-log_filters', 362 362 … … 448 448 continue; 449 449 } 450 // The foll lowing values must be array450 // The following values must be array 451 451 if (!is_array($previous_options[$k])) { 452 452 if (in_array($v, array('cdn-ori', 'cache-exc_cat', 'cache-exc_tag'))) { … … 606 606 continue; 607 607 } 608 // The foll lowing values must be array608 // The following values must be array 609 609 if (!is_array($previous_site_options[$k])) { 610 610 if (in_array($v, array('cache-mobile_rules', 'cache-exc_useragents', 'cache-exc_cookies'))) { -
litespeed-cache/trunk/src/debug2.cls.php
r3009052 r3123399 247 247 248 248 $qs = !empty($server['QUERY_STRING']) ? $server['QUERY_STRING'] : ''; 249 if ($this->conf(Base::O_DEBUG_COLLAPS_QS)) { 250 if (strlen($qs) > 53) { 251 $qs = substr($qs, 0, 53) . '...'; 252 } 249 if ($this->conf(Base::O_DEBUG_COLLAPSE_QS)) { 250 $qs = $this->_omit_long_message($qs); 253 251 if ($qs) { 254 252 $param .= ' ? ' . $qs; … … 261 259 262 260 if (!empty($_SERVER['HTTP_REFERER'])) { 263 $params[] = 'HTTP_REFERER: ' . $ server['HTTP_REFERER'];261 $params[] = 'HTTP_REFERER: ' . $this->_omit_long_message($server['HTTP_REFERER']); 264 262 } 265 263 266 264 if (defined('LSCWP_LOG_MORE')) { 267 $params[] = 'User Agent: ' . $ server['HTTP_USER_AGENT'];265 $params[] = 'User Agent: ' . $this->_omit_long_message($server['HTTP_USER_AGENT']); 268 266 $params[] = 'Accept: ' . $server['HTTP_ACCEPT']; 269 267 $params[] = 'Accept Encoding: ' . $server['HTTP_ACCEPT_ENCODING']; … … 291 289 292 290 File::append($log_file, $request); 291 } 292 293 /** 294 * Trim long msg to keep log neat 295 * @since 6.3 296 */ 297 private function _omit_long_message($msg) 298 { 299 if (strlen($msg) > 53) { 300 $msg = substr($msg, 0, 53) . '...'; 301 } 302 return $msg; 293 303 } 294 304 -
litespeed-cache/trunk/src/error.cls.php
r3009052 r3123399 74 74 75 75 case 'too_many_notified': 76 $msg = __('You have too many notified images, please pull down notified images first.', 'litespeed-cache');76 $msg = __('You have images waiting to be pulled. Please wait for the automatic pull to complete, or pull them down manually now.', 'litespeed-cache'); 77 77 break; 78 78 … … 160 160 break; 161 161 162 /*** QC error code ***/ 163 case 'try_later': 162 case 'try_later': // QC error code 164 163 $msg = __('Previous request too recent. Please try again later.', 'litespeed-cache'); 165 164 break; -
litespeed-cache/trunk/src/esi.cls.php
r3031822 r3123399 63 63 } 64 64 65 // If page is not cacheable 66 if (defined('DONOTCACHEPAGE') && apply_filters('litespeed_const_DONOTCACHEPAGE', DONOTCACHEPAGE)) { 67 return; 68 } 69 65 70 // Init ESI in `after_setup_theme` hook after detected if LITESPEED_DISABLE_ALL is ON or not 66 71 $this->_hooks(); … … 103 108 * Shortcode ESI 104 109 * 105 * To use it, just change the origi anl shortcode as below:110 * To use it, just change the original shortcode as below: 106 111 * old: [someshortcode aa='bb'] 107 112 * new: [esi someshortcode aa='bb' cache='private,no-vary' ttl='600'] … … 454 459 * @param bool $silence If generate wrapper comment or not 455 460 * @param bool $preserved If this ESI block is used in any filter, need to temporarily convert it to a string to avoid the HTML tag being removed/filtered. 456 * @param bool $svar If store the value in memory or not, in memory wil be faster461 * @param bool $svar If store the value in memory or not, in memory will be faster 457 462 * @param array $inline_val If show the current value for current request( this can avoid multiple esi requests in first time cache generating process ) 458 463 */ … … 503 508 } 504 509 if ($params) { 505 $appended_params[self::QS_PARAMS] = base64_encode( json_encode($params));510 $appended_params[self::QS_PARAMS] = base64_encode(\json_encode($params)); 506 511 Debug2::debug2('[ESI] param ', $params); 507 512 } … … 609 614 Debug2::debug2('[ESI] parms', $unencrypted); 610 615 // $unencoded = urldecode($unencrypted); no need to do this as $_GET is already parsed 611 $params = json_decode($unencrypted, true);616 $params = \json_decode($unencrypted, true); 612 617 613 618 return $params; … … 1007 1012 1008 1013 /** 1009 * Replace prese ved blocks1014 * Replace preserved blocks 1010 1015 * 1011 1016 * @since 2.6 -
litespeed-cache/trunk/src/gui.cls.php
r3076030 r3123399 76 76 77 77 /** 78 * Print a loading message when redirecting CCSS/UCSS page to av iod whiteboard confusion78 * Print a loading message when redirecting CCSS/UCSS page to avoid whiteboard confusion 79 79 */ 80 80 public static function print_loading($counter, $type) … … 210 210 if (Router::is_ajax()) { 211 211 // All dismiss actions are considered as ajax call, so just exit 212 exit( json_encode(array('success' => 1)));212 exit(\json_encode(array('success' => 1))); 213 213 } 214 214 … … 506 506 )); 507 507 508 if ($this->conf(self::O_CDN_CLOUDFLARE)) { 509 $wp_admin_bar->add_menu(array( 510 'parent' => 'litespeed-menu', 511 'id' => 'litespeed-purge-cloudflare', 512 'title' => __('Purge All', 'litespeed-cache') . ' - ' . __('Cloudflare', 'litespeed-cache'), 513 'href' => Utility::build_url(Router::ACTION_CDN_CLOUDFLARE, CDN\Cloudflare::TYPE_PURGE_ALL), 514 'meta' => array('tabindex' => '0'), 515 )); 516 } 517 508 518 if (defined('LSCWP_OBJECT_CACHE')) { 509 519 $wp_admin_bar->add_menu(array( -
litespeed-cache/trunk/src/img-optm.cls.php
r3076030 r3123399 211 211 212 212 // Check if has credit to push 213 $allowance = Cloud::cls()->allowance(Cloud::SVC_IMG_OPTM); 213 $err = false; 214 $allowance = Cloud::cls()->allowance(Cloud::SVC_IMG_OPTM, $err); 214 215 215 216 $wet_limit = $this->wet_limit(); … … 222 223 if (!$allowance) { 223 224 self::debug('❌ No credit'); 224 Admin_Display::error(Error::msg( 'out_of_quota'));225 Admin_Display::error(Error::msg($err)); 225 226 $this->_finished_running(); 226 227 return; … … 243 244 } 244 245 246 $allowance -= $total_requested; 247 248 if ($allowance < 1) { 249 self::debug('❌ Too many requested images ' . $total_requested); 250 Admin_Display::error(Error::msg('too_many_requested')); 251 $this->_finished_running(); 252 return; 253 } 254 245 255 // Limit maximum number of items waiting to be pulled 246 256 $q = "SELECT COUNT(1) FROM `$this->_table_img_optming` WHERE optm_status = %d"; 247 257 $q = $wpdb->prepare($q, array(self::STATUS_NOTIFIED)); 248 258 $total_notified = $wpdb->get_var($q); 249 $max_notified = $allowance * 5; 250 251 if ($total_notified > $max_notified) { 252 self::debug('❌ Too many notified images (' . $total_notified . ' > ' . $max_notified . ')'); 259 if ($total_notified > 0) { 260 self::debug('❌ Too many notified images (' . $total_notified . ')'); 253 261 Admin_Display::error(Error::msg('too_many_notified')); 254 262 $this->_finished_running(); … … 259 267 $q = $wpdb->prepare($q, array(self::STATUS_NEW, self::STATUS_RAW)); 260 268 $total_new = $wpdb->get_var($q); 261 $allowance -= $total_new;262 263 // Getimages269 // $allowance -= $total_new; 270 271 // May need to get more images 264 272 $list = array(); 265 if ($allowance > 0) { 273 $more = $allowance - $total_new; 274 if ($more > 0) { 266 275 $q = "SELECT b.post_id, b.meta_value 267 276 FROM `$wpdb->posts` a … … 275 284 LIMIT %d 276 285 "; 277 $q = $wpdb->prepare($q, array($this->_summary['next_post_id'], $ allowance));286 $q = $wpdb->prepare($q, array($this->_summary['next_post_id'], $more)); 278 287 $list = $wpdb->get_results($q); 279 }280 281 if (!$list) {282 // $msg = __('No new image to send.', 'litespeed-cache');283 // Admin_Display::succeed($msg);284 285 // self::debug('new_req() bypass: no new image found');286 // $this->_finished_running();287 // return;288 }289 290 if ($list) {291 288 foreach ($list as $v) { 292 289 if (!$v->post_id) { … … 316 313 self::save_summary(); 317 314 318 if (!$this->_img_in_queue) {319 self::debug('gather_images bypass: empty _img_in_queue');320 $this->_finished_running();321 return;322 }323 324 315 $num_a = count($this->_img_in_queue); 325 316 self::debug('Images found: ' . $num_a); … … 341 332 342 333 // Push to Cloud server 343 $accepted_imgs = $this->_send_request( );334 $accepted_imgs = $this->_send_request($allowance); 344 335 345 336 $this->_finished_running(); … … 610 601 * @access private 611 602 */ 612 private function _send_request( )603 private function _send_request($allowance) 613 604 { 614 605 global $wpdb; 615 606 616 $_img_in_queue = $wpdb->get_results("SELECT id,src,post_id FROM `$this->_table_img_optming` WHERE optm_status=" . self::STATUS_RAW); 607 $q = "SELECT id, src, post_id FROM `$this->_table_img_optming` WHERE optm_status=%d LIMIT %d"; 608 $q = $wpdb->prepare($q, array(self::STATUS_RAW, $allowance)); 609 $_img_in_queue = $wpdb->get_results($q); 617 610 if (!$_img_in_queue) { 618 611 return; … … 662 655 $data = array( 663 656 'action' => self::CLOUD_ACTION_NEW_REQ, 664 'list' => json_encode($list),657 'list' => \json_encode($list), 665 658 'optm_ori' => $this->conf(self::O_IMG_OPTM_ORI) ? 1 : 0, 666 659 'optm_webp' => $this->conf(self::O_IMG_OPTM_WEBP) ? 1 : 0, … … 708 701 } 709 702 710 $post_data = json_decode(file_get_contents('php://input'), true);703 $post_data = \json_decode(file_get_contents('php://input'), true); 711 704 if (is_null($post_data)) { 712 705 $post_data = $_POST; … … 811 804 // Update status and data in working table 812 805 $q = "UPDATE `$this->_table_img_optming` SET optm_status = %d, server_info = %s WHERE id = %d "; 813 $wpdb->query($wpdb->prepare($q, array($status, json_encode($server_info), $v->id)));806 $wpdb->query($wpdb->prepare($q, array($status, \json_encode($server_info), $v->id))); 814 807 815 808 // Update postmeta for optm summary … … 991 984 foreach ($img_rows as $row_img) { 992 985 // request original image 993 $server_info = json_decode($row_img->server_info, true);986 $server_info = \json_decode($row_img->server_info, true); 994 987 if (!empty($server_info['ori'])) { 995 988 $image_url = $server_info['server'] . '/' . $server_info['ori']; … … 1032 1025 $row_img = $row_data['data']; 1033 1026 $local_file = $this->wp_upload_dir['basedir'] . '/' . $row_img->src; 1034 $server_info = json_decode($row_img->server_info, true);1027 $server_info = \json_decode($row_img->server_info, true); 1035 1028 1036 1029 if (empty($response->success)) { … … 1324 1317 global $wpdb; 1325 1318 1326 self::debug('ex cuting DESTROY process');1319 self::debug('executing DESTROY process'); 1327 1320 1328 1321 $offset = !empty($_GET['litespeed_i']) ? $_GET['litespeed_i'] : 0; … … 1507 1500 } 1508 1501 1509 self::debug('rescan ed [img] ' . count($this->_img_in_queue));1502 self::debug('rescanned [img] ' . count($this->_img_in_queue)); 1510 1503 1511 1504 $count = count($this->_img_in_queue); … … 2119 2112 break; 2120 2113 2121 /**2122 * Batch switch2123 * @since 1.6.32124 */2125 2114 case self::TYPE_BATCH_SWITCH_ORI: 2126 2115 case self::TYPE_BATCH_SWITCH_OPTM: -
litespeed-cache/trunk/src/import.cls.php
r3009052 r3123399 43 43 $data = array(); 44 44 foreach ($raw_data as $k => $v) { 45 $data[] = json_encode(array($k, $v));45 $data[] = \json_encode(array($k, $v)); 46 46 } 47 47 … … 77 77 if (!$file) { 78 78 if (empty($_FILES['ls_file']['name']) || substr($_FILES['ls_file']['name'], -5) != '.data' || empty($_FILES['ls_file']['tmp_name'])) { 79 Debug2::debug('Import: Failed to import, wron tls_file');79 Debug2::debug('Import: Failed to import, wrong ls_file'); 80 80 81 81 $msg = __('Import failed due to file error.', 'litespeed-cache'); … … 109 109 continue; 110 110 } 111 list($k, $v) = json_decode($v, true);111 list($k, $v) = \json_decode($v, true); 112 112 $ori_data[$k] = $v; 113 113 } 114 114 } else { 115 $ori_data = json_decode(base64_decode($data), true);115 $ori_data = \json_decode(base64_decode($data), true); 116 116 } 117 117 } catch (\Exception $ex) { -
litespeed-cache/trunk/src/lang.cls.php
r3076030 r3123399 101 101 self::O_CACHE_TTL_STATUS => __('Default HTTP Status Code Page TTL', 'litespeed-cache'), 102 102 self::O_CACHE_TTL_BROWSER => __('Browser Cache TTL', 'litespeed-cache'), 103 self::O_CACHE_AJAX_TTL => __('AJAX Cache TTL', 'litespeed-cache'), 103 104 self::O_AUTO_UPGRADE => __('Automatically Upgrade', 'litespeed-cache'), 104 105 self::O_GUEST => __('Guest Mode', 'litespeed-cache'), … … 153 154 self::O_OPTM_HTML_MIN => __('HTML Minify', 'litespeed-cache'), 154 155 self::O_OPTM_HTML_LAZY => __('HTML Lazy Load Selectors', 'litespeed-cache'), 156 self::O_OPTM_HTML_SKIP_COMMENTS => __('HTML Keep Comments', 'litespeed-cache'), 155 157 self::O_OPTM_CSS_ASYNC => __('Load CSS Asynchronously', 'litespeed-cache'), 156 158 self::O_OPTM_CCSS_PER_URL => __('CCSS Per URL', 'litespeed-cache'), … … 269 271 self::O_DEBUG_FILESIZE => __('Log File Size Limit', 'litespeed-cache'), 270 272 self::O_DEBUG_COOKIE => __('Log Cookies', 'litespeed-cache'), 271 self::O_DEBUG_COLLAPS _QS => __('Collapse Query Strings', 'litespeed-cache'),273 self::O_DEBUG_COLLAPSE_QS => __('Collapse Query Strings', 'litespeed-cache'), 272 274 self::O_DEBUG_INC => __('Debug URI Includes', 'litespeed-cache'), 273 275 self::O_DEBUG_EXC => __('Debug URI Excludes', 'litespeed-cache'), -
litespeed-cache/trunk/src/localization.cls.php
r3009052 r3123399 52 52 $type = 'js'; 53 53 $domain = $v; 54 // Try to parse space split tedvalue54 // Try to parse space split value 55 55 if (strpos($v, ' ')) { 56 56 $v = explode(' ', $v); … … 171 171 $type = 'js'; 172 172 $domain = $v; 173 // Try to parse space split tedvalue173 // Try to parse space split value 174 174 if (strpos($v, ' ')) { 175 175 $v = explode(' ', $v); -
litespeed-cache/trunk/src/media.cls.php
r3077216 r3123399 660 660 $placeholder_list = array(); 661 661 662 $content = preg_replace(array('#<!--.*-->#sU', '#<noscript([^>]*)>.*</noscript>#isU'), '', $this->content); 662 $content = preg_replace( 663 array( 664 '#<!--.*-->#sU', 665 '#<noscript([^>]*)>.*</noscript>#isU', 666 '#<script([^>]*)>.*</script>#isU', // Added to remove warning of file not found when image size detection is turned ON. 667 ), 668 '', 669 $this->content 670 ); 663 671 /** 664 672 * Exclude parent classes … … 751 759 $attrs['width'] = $ori_width; 752 760 $attrs['height'] = $ori_height; 753 $new_html = preg_replace('#\s+(width|height)=(["\'])[^\2]* \2#', '', $match[0]);761 $new_html = preg_replace('#\s+(width|height)=(["\'])[^\2]*?\2#', '', $match[0]); 754 762 $new_html = preg_replace('#<img\s+#i', '<img width="' . $attrs['width'] . '" height="' . $attrs['height'] . '" ', $new_html); 755 763 self::debug('Add missing sizes ' . $attrs['width'] . 'x' . $attrs['height'] . ' to ' . $attrs['src']); … … 959 967 $url = trim($url, '\'"'); 960 968 961 // Fix Elementors Slideshow unus al background images like style="background-image: url("https://xxxx.png");"969 // Fix Elementors Slideshow unusual background images like style="background-image: url("https://xxxx.png");" 962 970 if (strpos($url, '"') === 0 && substr($url, -6) == '"') { 963 971 $url = substr($url, 6, -6); … … 995 1003 $jsonString = html_entity_decode($match[1]); 996 1004 997 $jsonData = json_decode($jsonString, true);1005 $jsonData = \json_decode($jsonString, true); 998 1006 999 1007 if (json_last_error() === JSON_ERROR_NONE) { … … 1013 1021 if ($did_webp_replace) { 1014 1022 // Re-encode the modified array back to a JSON string 1015 $newJsonString = json_encode($jsonData);1023 $newJsonString = \json_encode($jsonData); 1016 1024 1017 1025 // Re-encode the JSON string to HTML entities only if it was originally encoded -
litespeed-cache/trunk/src/metabox.cls.php
r3009052 r3123399 48 48 49 49 /** 50 * Reg siter meta box50 * Register meta box 51 51 * @since 4.7 52 52 */ -
litespeed-cache/trunk/src/object-cache.cls.php
r3076030 r3123399 15 15 class Object_Cache extends Root 16 16 { 17 const O_DEBUG = 'debug'; 17 18 const O_OBJECT = 'object'; 18 19 const O_OBJECT_KIND = 'object-kind'; … … 30 31 31 32 private $_conn; 33 private $_cfg_debug; 32 34 private $_cfg_enabled; 33 35 private $_cfg_method; … … 57 59 public function __construct($cfg = false) 58 60 { 59 defined('LSCWP_LOG') && Debug2::debug2('[Object] init'); 61 $this->debug_oc('-------------'); 62 $this->debug_oc('init'); 60 63 61 64 if ($cfg) { … … 66 69 $cfg[Base::O_OBJECT_NON_PERSISTENT_GROUPS] = explode("\n", $cfg[Base::O_OBJECT_NON_PERSISTENT_GROUPS]); 67 70 } 71 $this->_cfg_debug = $cfg[Base::O_DEBUG] ? $cfg[Base::O_DEBUG] : false; 68 72 $this->_cfg_method = $cfg[Base::O_OBJECT_KIND] ? true : false; 69 73 $this->_cfg_host = $cfg[Base::O_OBJECT_HOST]; … … 84 88 $this->_cfg_enabled = $cfg[Base::O_OBJECT] && class_exists($this->_oc_driver) && $this->_cfg_host; 85 89 86 defined('LSCWP_LOG') && Debug2::debug('[Object]init with cfg result : ', $this->_cfg_enabled);90 $this->debug_oc('init with cfg result : ', $this->_cfg_enabled); 87 91 } 88 92 // If OC is OFF, will hit here to init OC after conf initialized 89 93 elseif (defined('LITESPEED_CONF_LOADED')) { 94 $this->_cfg_debug = $this->conf(Base::O_DEBUG) ? $this->conf(Base::O_DEBUG) : false; 90 95 $this->_cfg_method = $this->conf(Base::O_OBJECT_KIND) ? true : false; 91 96 $this->_cfg_host = $this->conf(Base::O_OBJECT_HOST); … … 108 113 // Get cfg from _data_file 109 114 // Use self::const to avoid loading more classes 110 $cfg = json_decode(file_get_contents(WP_CONTENT_DIR . '/' . self::CONF_FILE), true);115 $cfg = \json_decode(file_get_contents(WP_CONTENT_DIR . '/' . self::CONF_FILE), true); 111 116 if (!empty($cfg[self::O_OBJECT_HOST])) { 117 $this->_cfg_debug = !empty($cfg[Base::O_DEBUG]) ? $cfg[Base::O_DEBUG] : false; 112 118 $this->_cfg_method = !empty($cfg[self::O_OBJECT_KIND]) ? $cfg[self::O_OBJECT_KIND] : false; 113 119 $this->_cfg_host = $cfg[self::O_OBJECT_HOST]; … … 136 142 137 143 /** 144 * Add debug. 145 * 146 * @since 6.3 147 * @access private 148 */ 149 private function debug_oc($text, $show_error = false) 150 { 151 if (defined('LSCWP_LOG')) { 152 Debug2::debug($text); 153 154 return; 155 } 156 157 if (!$show_error && !$this->_cfg_debug) { 158 return; 159 } 160 161 error_log(gmdate('m/d/y H:i:s') . ' - ' . $text . PHP_EOL, 3, WP_CONTENT_DIR . '/debug.log'); 162 } 163 164 /** 138 165 * Get `Store Transients` setting value 139 166 * … … 173 200 // Update cls file 174 201 if (!file_exists($_oc_wp_file) || md5_file($_oc_wp_file) !== md5_file($_oc_ori_file)) { 175 defined('LSCWP_LOG') && Debug2::debug('[Object]copying object-cache.php file to ' . $_oc_wp_file);202 $this->debug_oc('copying object-cache.php file to ' . $_oc_wp_file); 176 203 copy($_oc_ori_file, $_oc_wp_file); 177 204 … … 200 227 201 228 if (file_exists($_oc_wp_file) && md5_file($_oc_wp_file) === md5_file($_oc_ori_file)) { 202 defined('LSCWP_LOG') && Debug2::debug('[Object]removing ' . $_oc_wp_file);229 $this->debug_oc('removing ' . $_oc_wp_file); 203 230 unlink($_oc_wp_file); 204 231 } … … 224 251 private function _reconnect($cfg) 225 252 { 226 defined('LSCWP_LOG') && Debug2::debug('[Object] Reconnecting'); 227 // error_log( 'Object: reconnect !' ); 253 $this->debug_oc('Reconnecting'); 228 254 if (isset($this->_conn)) { 229 // error_log( 'Object: Quit ing existing connection!' );230 defined('LSCWP_LOG') && Debug2::debug('[Object] Quiting existing connection');255 // error_log( 'Object: Quitting existing connection!' ); 256 $this->debug_oc('Quitting existing connection'); 231 257 $this->flush(); 232 258 $this->_conn = null; … … 262 288 } 263 289 264 defined('LSCWP_LOG') && Debug2::debug('[Object] connecting to ' . $this->_cfg_host . ':' . $this->_cfg_port); 290 $this->debug_oc('Init ' . $this->_oc_driver . ' connection'); 291 $this->debug_oc('connecting to ' . $this->_cfg_host . ':' . $this->_cfg_port); 265 292 266 293 $failed = false; … … 272 299 */ 273 300 if ($this->_oc_driver == 'Redis') { 274 defined('LSCWP_LOG') && Debug2::debug('[Object] Init ' . $this->_oc_driver . ' connection');275 276 301 set_error_handler('litespeed_exception_handler'); 277 302 try { … … 311 336 } 312 337 } catch (\Exception $e) { 313 error_log($e->getMessage());338 $this->debug_oc('Redis connect exception: ' . $e->getMessage(), true); 314 339 $failed = true; 315 340 } catch (\ErrorException $e) { 316 error_log($e->getMessage());341 $this->debug_oc('Redis connect error: ' . $e->getMessage(), true); 317 342 $failed = true; 318 343 } … … 321 346 * Connect to Memcached 322 347 */ else { 323 defined('LSCWP_LOG') && Debug2::debug('[Object] Init ' . $this->_oc_driver . ' connection');324 348 if ($this->_cfg_persistent) { 325 349 $this->_conn = new \Memcached($this->_get_mem_id()); … … 328 352 if ($this->_validate_mem_server()) { 329 353 // error_log( 'Object: _validate_mem_server' ); 330 defined('LSCWP_LOG') && Debug2::debug('[Object]Got persistent ' . $this->_oc_driver . ' connection');354 $this->debug_oc('Got persistent ' . $this->_oc_driver . ' connection'); 331 355 return true; 332 356 } 333 357 334 defined('LSCWP_LOG') && Debug2::debug('[Object]No persistent ' . $this->_oc_driver . ' server list!');358 $this->debug_oc('No persistent ' . $this->_oc_driver . ' server list!'); 335 359 } else { 336 360 // error_log( 'Object: new memcached!' ); … … 359 383 // If failed to connect 360 384 if ($failed) { 361 defined('LSCWP_LOG') && Debug2::debug('[Object] Failed to connect ' . $this->_oc_driver . ' server!');385 $this->debug_oc('❌ Failed to connect ' . $this->_oc_driver . ' server!', true); 362 386 $this->_conn = null; 363 387 $this->_cfg_enabled = false; … … 367 391 } 368 392 369 defined('LSCWP_LOG') && Debug2::debug2('[Object]Connected');393 $this->debug_oc('Connected'); 370 394 371 395 return true; … … 432 456 return null; 433 457 } 434 435 // defined( 'LSCWP_LOG' ) && Debug2::debug2( '[Object] get ' . $key );436 458 437 459 $res = $this->_conn->get($key); … … 463 485 return null; 464 486 } 465 466 // defined( 'LSCWP_LOG' ) && Debug2::debug2( '[Object] set ' . $key );467 468 // error_log( 'Object: set ' . $key );469 470 487 $ttl = $expire ?: $this->_cfg_life; 471 488 … … 476 493 $res = false; 477 494 $msg = sprintf(__('Redis encountered a fatal error: %s (code: %d)', 'litespeed-cache'), $ex->getMessage(), $ex->getCode()); 478 Debug2::debug('[Object] ' .$msg);495 $this->debug_oc($msg); 479 496 Admin_Display::error($msg); 480 497 } … … 515 532 return null; 516 533 } 517 518 // defined( 'LSCWP_LOG' ) && Debug2::debug2( '[Object] delete ' . $key );519 534 520 535 if ($this->_oc_driver == 'Redis') { … … 536 551 { 537 552 if (!$this->_cfg_enabled) { 538 defined('LSCWP_LOG') && Debug2::debug('[Object]bypass flushing');553 $this->debug_oc('bypass flushing'); 539 554 return null; 540 555 } … … 544 559 } 545 560 546 defined('LSCWP_LOG') && Debug2::debug('[Object]flush!');561 $this->debug_oc('flush!'); 547 562 548 563 if ($this->_oc_driver == 'Redis') { -
litespeed-cache/trunk/src/optimize.cls.php
r3076030 r3123399 847 847 848 848 $qs_hash = substr(md5(self::get_option(self::ITEM_TIMESTAMP_PURGE_CSS)), -5); 849 // As filename is alrea y realted to filecon md5, no need QS anymore849 // As filename is already related to filecon md5, no need QS anymore 850 850 $filepath_prefix = $this->_build_filepath_prefix($type); 851 851 return LITESPEED_STATIC_URL . $filepath_prefix . $filename . '?ver=' . $qs_hash; -
litespeed-cache/trunk/src/optimizer.cls.php
r3009052 r3123399 45 45 } 46 46 47 $skip_comments = $this->conf(Base::O_OPTM_HTML_SKIP_COMMENTS); 48 if ($skip_comments) { 49 $options['skipComments'] = $skip_comments; 50 } 51 47 52 /** 48 53 * Added exception capture when minify -
litespeed-cache/trunk/src/placeholder.cls.php
r3009052 r3123399 393 393 $file = $this->_placeholder_realpath($src, $size); 394 394 395 // Local generate SVG to serve ( Repeat ly doing this here to remove stored cron queue in case the setting _conf_lqip is changed )395 // Local generate SVG to serve ( Repeatedly doing this here to remove stored cron queue in case the setting _conf_lqip is changed ) 396 396 if (!$this->_conf_lqip || !$this->_lqip_size_check($size)) { 397 397 $data = $this->_generate_placeholder_locally($size); -
litespeed-cache/trunk/src/preset.cls.php
r3009052 r3123399 219 219 continue; 220 220 } 221 list($key, $value) = json_decode($line, true);221 list($key, $value) = \json_decode($line, true); 222 222 $parsed[$key] = $value; 223 223 } 224 224 } else { 225 $parsed = json_decode(base64_decode($contents), true);225 $parsed = \json_decode(base64_decode($contents), true); 226 226 } 227 227 } catch (\Exception $ex) { -
litespeed-cache/trunk/src/purge.cls.php
r3009052 r3123399 1119 1119 1120 1120 /** 1121 * Check if this purge b longs to a subsite purge1121 * Check if this purge belongs to a subsite purge 1122 1122 * 1123 1123 * @since 4.0 -
litespeed-cache/trunk/src/report.cls.php
r3076030 r3123399 185 185 $buf = $this->_format_report_section('Server Variables', $server_vars); 186 186 187 $buf .= $this->_format_report_section('Word press Specific Extras', $extras);187 $buf .= $this->_format_report_section('WordPress Specific Extras', $extras); 188 188 189 189 $buf .= $this->_format_report_section('LSCache Plugin Options', $options); -
litespeed-cache/trunk/src/root.cls.php
r3009052 r3123399 156 156 $queue = array(); 157 157 if (file_exists($static_path)) { 158 $queue = json_decode(file_get_contents($static_path), true) ?: array();158 $queue = \json_decode(file_get_contents($static_path), true) ?: array(); 159 159 } 160 160 … … 173 173 $static_path = LITESPEED_STATIC_DIR . $filepath_prefix . '.litespeed_conf.dat'; 174 174 175 $data = json_encode($list);175 $data = \json_encode($list); 176 176 177 177 File::save($static_path, $data, true); … … 368 368 } 369 369 370 // Network orig nal value will be in _network_options370 // Network original value will be in _network_options 371 371 if (!is_network_admin() || !$this->has_network_conf($id)) { 372 372 return self::$_options[$id]; … … 541 541 { 542 542 if (!is_array($v)) { 543 $v2 = json_decode($v, true);543 $v2 = \json_decode($v, true); 544 544 if ($v2 !== null) { 545 545 $v = $v2; … … 557 557 { 558 558 if (is_array($v)) { 559 $v = json_encode($v) ?: $v; // Non utf-8 encoded value will get failed, then used ori value559 $v = \json_encode($v) ?: $v; // Non utf-8 encoded value will get failed, then used ori value 560 560 } 561 561 return $v; -
litespeed-cache/trunk/src/router.cls.php
r3009052 r3123399 618 618 619 619 default: 620 Debug2::debug('[Router] LSCWP_CTRL match fa lied: ' . $action);620 Debug2::debug('[Router] LSCWP_CTRL match failed: ' . $action); 621 621 return; 622 622 } -
litespeed-cache/trunk/src/task.cls.php
r3031822 r3123399 28 28 private static $_guest_options = array(Base::O_OPTM_CSS_ASYNC, Base::O_OPTM_UCSS, Base::O_MEDIA_VPI); 29 29 30 const FI TLER_CRAWLER = 'litespeed_crawl_filter';31 const FI TLER = 'litespeed_filter';30 const FILTER_CRAWLER = 'litespeed_crawl_filter'; 31 const FILTER = 'litespeed_filter'; 32 32 33 33 /** … … 63 63 self::debug('Cron hook register [name] ' . $trigger['name']); 64 64 65 wp_schedule_event(time(), $id == Base::O_CRAWLER ? self::FI TLER_CRAWLER : self::FITLER, $trigger['name']);65 wp_schedule_event(time(), $id == Base::O_CRAWLER ? self::FILTER_CRAWLER : self::FILTER, $trigger['name']); 66 66 } 67 67 … … 172 172 public function lscache_cron_filter($schedules) 173 173 { 174 if (!array_key_exists(self::FI TLER, $schedules)) {175 $schedules[self::FI TLER] = array(174 if (!array_key_exists(self::FILTER, $schedules)) { 175 $schedules[self::FILTER] = array( 176 176 'interval' => 60, 177 177 'display' => __('Every Minute', 'litespeed-cache'), … … 191 191 $interval = $this->conf(Base::O_CRAWLER_RUN_INTERVAL); 192 192 // $wp_schedules = wp_get_schedules(); 193 if (!array_key_exists(self::FI TLER_CRAWLER, $schedules)) {193 if (!array_key_exists(self::FILTER_CRAWLER, $schedules)) { 194 194 // self::debug('Crawler cron log: cron filter '.$interval.' added'); 195 $schedules[self::FI TLER_CRAWLER] = array(195 $schedules[self::FILTER_CRAWLER] = array( 196 196 'interval' => $interval, 197 197 'display' => __('LiteSpeed Crawler Cron', 'litespeed-cache'), -
litespeed-cache/trunk/src/ucss.cls.php
r3009052 r3123399 502 502 public function notify() 503 503 { 504 $post_data = json_decode(file_get_contents('php://input'), true);504 $post_data = \json_decode(file_get_contents('php://input'), true); 505 505 if (is_null($post_data)) { 506 506 $post_data = $_POST; -
litespeed-cache/trunk/src/utility.cls.php
r3031822 r3123399 189 189 * @access public 190 190 */ 191 public static function readable_time($seconds_or_timestamp, $timeout = 3600, $forw ord = false)191 public static function readable_time($seconds_or_timestamp, $timeout = 3600, $forward = false) 192 192 { 193 193 if (strlen($seconds_or_timestamp) == 10) { … … 233 233 234 234 if (!$res) { 235 return $forw ord ? __('right now', 'litespeed-cache') : __('just now', 'litespeed-cache');236 } 237 238 $res = $forw ord ? $res : sprintf(__(' %s ago', 'litespeed-cache'), $res);235 return $forward ? __('right now', 'litespeed-cache') : __('just now', 'litespeed-cache'); 236 } 237 238 $res = $forward ? $res : sprintf(__(' %s ago', 'litespeed-cache'), $res); 239 239 240 240 return $res; … … 253 253 } 254 254 255 return base64_encode( json_encode($arr));255 return base64_encode(\json_encode($arr)); 256 256 } 257 257 … … 616 616 617 617 if (in_array('trailingslash', $types)) { 618 $arr = array_map('trailingslashit', $arr); // Append trailing sla ch, `https://example.com` -> `https://example.com/`618 $arr = array_map('trailingslashit', $arr); // Append trailing slash, `https://example.com` -> `https://example.com/` 619 619 $changed = true; 620 620 } -
litespeed-cache/trunk/src/vary.cls.php
r3009052 r3123399 172 172 // If is the request to update vary, then no guest 173 173 // Don't need anymore as it is always ajax call 174 // Still keep it in case some WP blocked the lightweigh guest vary update script, WP can still update the vary174 // Still keep it in case some WP blocked the lightweight guest vary update script, WP can still update the vary 175 175 if (!empty($_GET['litespeed_guest'])) { 176 176 return; … … 214 214 215 215 // return json 216 echo json_encode(array('reload' => 'yes'));216 echo \json_encode(array('reload' => 'yes')); 217 217 exit(); 218 218 } … … 715 715 } 716 716 717 return $values_json ? json_encode($cookies) : $cookies;717 return $values_json ? \json_encode($cookies) : $cookies; 718 718 } 719 719 -
litespeed-cache/trunk/src/vpi.cls.php
r3009052 r3123399 89 89 public function notify() 90 90 { 91 $post_data = json_decode(file_get_contents('php://input'), true);91 $post_data = \json_decode(file_get_contents('php://input'), true); 92 92 if (is_null($post_data)) { 93 93 $post_data = $_POST; -
litespeed-cache/trunk/tpl/banner/cloud_news.tpl.php
r2407814 r3123399 12 12 <div class="litespeed-banner-description" style="flex-direction: column;"> 13 13 <div class="litespeed-banner-description-padding-right-15"> 14 <p class="litespeed-banner-desc iption-content">14 <p class="litespeed-banner-description-content"> 15 15 <?php echo $this->_summary[ 'news.content' ]; ?> 16 16 </p> -
litespeed-cache/trunk/tpl/banner/new_version.php
r3076030 r3123399 60 60 <div class="litespeed-banner-description"> 61 61 <div class="litespeed-banner-description-padding-right-15"> 62 <p class="litespeed-banner-desc iption-content">62 <p class="litespeed-banner-description-content"> 63 63 <?php echo sprintf(__('New release %s is available now.', 'litespeed-cache'), 'v' . $this->_summary['new_version.v']); ?> 64 64 </p> -
litespeed-cache/trunk/tpl/banner/new_version_dev.tpl.php
r2292926 r3123399 13 13 <div class="litespeed-banner-description"> 14 14 <div class="litespeed-banner-description-padding-right-15"> 15 <p class="litespeed-banner-desc iption-content">15 <p class="litespeed-banner-description-content"> 16 16 <?php echo sprintf( __( 'New developer version %s is available now.', 'litespeed-cache' ), 'v' . $this->_summary[ 'version.dev' ] ) ; ?> 17 17 </p> -
litespeed-cache/trunk/tpl/banner/slack.php
r2292926 r3123399 10 10 <div class="litespeed-banner-description"> 11 11 <div class="litespeed-banner-description-padding-right-15"> 12 <p class="litespeed-banner-desc iption-content">12 <p class="litespeed-banner-description-content"> 13 13 <?php echo __( 'Want to connect with other LiteSpeed users?', 'litespeed-cache' ) ; ?> 14 14 <?php echo sprintf( __( 'Join the %s community.', 'litespeed-cache' ), '<a href="https://join.slack.com/t/golitespeed/shared_invite/enQtMzE5ODgxMTUyNTgzLTNiNWQ1MWZlYmI4YjEzNTM4NjdiODY2YTQ0OWVlMzBlNGZkY2E3Y2E4MjIzNmNmZmU0ZjIyNWM1ZmNmMWRlOTk" target="_blank" class="litespeed-banner-promo-slack-textlink">LiteSpeed Slack</a>' ) ; ?> -
litespeed-cache/trunk/tpl/cache/settings-advanced.tpl.php
r2683957 r3123399 1 1 <?php 2 2 3 namespace LiteSpeed; 3 defined( 'WPINC' ) || exit; 4 5 defined('WPINC') || exit; 4 6 ?> 5 7 6 8 <h3 class="litespeed-title-short"> 7 <?php echo __( 'Advanced Settings', 'litespeed-cache'); ?>8 <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/cache/#advanced-tab'); ?>9 <?php echo __('Advanced Settings', 'litespeed-cache'); ?> 10 <?php Doc::learn_more('https://docs.litespeedtech.com/lscache/lscwp/cache/#advanced-tab'); ?> 9 11 </h3> 10 12 11 13 <div class="litespeed-callout notice notice-warning inline"> 12 <h4><?php echo __( 'NOTICE:', 'litespeed-cache'); ?></h4>13 <p><?php echo __( 'These settings are meant for ADVANCED USERS ONLY.', 'litespeed-cache'); ?></p>14 <h4><?php echo __('NOTICE:', 'litespeed-cache'); ?></h4> 15 <p><?php echo __('These settings are meant for ADVANCED USERS ONLY.', 'litespeed-cache'); ?></p> 14 16 </div> 15 17 16 <table class="wp-list-table striped litespeed-table"><tbody> 18 <table class="wp-list-table striped litespeed-table"> 19 <tbody> 17 20 18 <?php 19 if ( ! $this->_is_multisite ) : 21 <tr> 22 <th> 23 <?php $id = Base::O_CACHE_AJAX_TTL; ?> 24 <?php $this->title($id); ?> 25 </th> 26 <td> 27 <div class="litespeed-textarea-recommended"> 28 <div> 29 <?php $this->build_textarea($id, 60); ?> 30 </div> 31 </div> 32 <div class="litespeed-desc"> 33 <?php echo __('Specify an AJAX action in POST/GET and the number of seconds to cache that request, separated by a space.', 'litespeed-cache'); ?> 34 <?php Doc::one_per_line(); ?> 35 </div> 36 </td> 37 </tr> 38 39 <?php 40 if (!$this->_is_multisite) : 20 41 require LSCWP_DIR . 'tpl/cache/settings_inc.login_cookie.tpl.php'; 21 42 endif; 22 ?>43 ?> 23 44 24 <tr>25 <th>26 <?php $id = Base::O_UTIL_NO_HTTPS_VARY; ?>27 <?php $this->title( $id); ?>28 </th>29 <td>30 <?php $this->build_switch( $id); ?>31 <div class="litespeed-desc">32 <?php echo __( 'Enable this option if you are using both HTTP and HTTPS in the same domain and are noticing cache irregularities.', 'litespeed-cache'); ?>33 <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/cache/#improve-httphttps-compatibility'); ?>34 </div>35 </td>36 </tr>45 <tr> 46 <th> 47 <?php $id = Base::O_UTIL_NO_HTTPS_VARY; ?> 48 <?php $this->title($id); ?> 49 </th> 50 <td> 51 <?php $this->build_switch($id); ?> 52 <div class="litespeed-desc"> 53 <?php echo __('Enable this option if you are using both HTTP and HTTPS in the same domain and are noticing cache irregularities.', 'litespeed-cache'); ?> 54 <?php Doc::learn_more('https://docs.litespeedtech.com/lscache/lscwp/cache/#improve-httphttps-compatibility'); ?> 55 </div> 56 </td> 57 </tr> 37 58 38 <tr> 39 <th> 40 <?php $id = Base::O_UTIL_INSTANT_CLICK; ?> 41 <?php $this->title( $id ); ?> 42 </th> 43 <td> 44 <?php $this->build_switch( $id ); ?> 45 <div class="litespeed-desc"> 46 <?php echo __( 'When a visitor hovers over a page link, preload that page. This will speed up the visit to that link.', 'litespeed-cache' ); ?> 47 <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/cache/#instant-click' ); ?> 48 <br /><font class="litespeed-danger"> 49 ⚠️ 50 <?php echo __( 'This will generate extra requests to the server, which will increase server load.', 'litespeed-cache' ); ?> 51 </font> 59 <tr> 60 <th> 61 <?php $id = Base::O_UTIL_INSTANT_CLICK; ?> 62 <?php $this->title($id); ?> 63 </th> 64 <td> 65 <?php $this->build_switch($id); ?> 66 <div class="litespeed-desc"> 67 <?php echo __('When a visitor hovers over a page link, preload that page. This will speed up the visit to that link.', 'litespeed-cache'); ?> 68 <?php Doc::learn_more('https://docs.litespeedtech.com/lscache/lscwp/cache/#instant-click'); ?> 69 <br /> 70 <font class="litespeed-danger"> 71 ⚠️ 72 <?php echo __('This will generate extra requests to the server, which will increase server load.', 'litespeed-cache'); ?> 73 </font> 52 74 53 </div>54 </td>55 </tr>75 </div> 76 </td> 77 </tr> 56 78 57 </tbody></table> 79 </tbody> 80 </table> -
litespeed-cache/trunk/tpl/cdn/auto_setup.tpl.php
r3076030 r3123399 20 20 $has_setup_token = $__cdnsetup->has_cdn_setup_token(); 21 21 22 if (!empty($setup_summary['cdn_setup_err'])) { 23 $cdn_setup_err = $setup_summary['cdn_setup_err']; 24 } 25 22 26 if (!empty($setup_summary['cdn_setup_ts'])) { 23 27 $cdn_setup_ts = $setup_summary['cdn_setup_ts']; 24 25 if (!empty($setup_summary['cdn_setup_err'])) {26 $cdn_setup_err = $setup_summary['cdn_setup_err'];27 }28 28 29 29 if ($this->conf(Base::O_QC_NAMESERVERS)) { … … 41 41 42 42 if ($cdn_setup_done_ts) { 43 $curr_status = '<span class="litespeed-success dashicons dashicons-yes"></span> ' . __('Done', 'litespeed-cache');43 $curr_status = '<span class="litespeed-success dashicons dashicons-yes"></span> ' . __('Done', 'litespeed-cache'); 44 44 // wp_date requires WP v5.3+ 45 45 if (function_exists('wp_date')) { 46 $curr_status .= ' <span class="litespeed-desc litespeed-left10">' . sprintf(__('Completed at %s', 'litespeed-cache'), wp_date(get_option('date_format') . ' ' . get_option('time_format'), $cdn_setup_done_ts)). '</span>';46 $curr_status .= ' <span class="litespeed-desc litespeed-left10">' . sprintf(__('Completed at %s', 'litespeed-cache'), wp_date(get_option('date_format') . ' ' . get_option('time_format'), $cdn_setup_done_ts)) . '</span>'; 47 47 } 48 48 $disabled = 'disabled'; -
litespeed-cache/trunk/tpl/dash/dashboard.tpl.php
r3031822 r3123399 191 191 192 192 <p class="litespeed-right litespeed-qc-dashboard-link"> 193 <?php if (!empty($cloud_summary['is_linked'])) : ?> 194 <a href="<?php echo Cloud::cls()->qc_link(); ?>" class="litespeed-link-with-icon" target="_blank"><?php echo __('Go to QUIC.cloud dashboard', 'litespeed-cache'); ?> <span class="dashicons dashicons-external"></span></a> 195 <?php elseif ($__cloud->can_link_qc()) : ?> 196 <?php Doc::learn_more(Utility::build_url(Router::ACTION_CLOUD, Cloud::TYPE_LINK), __('Link to QUIC.cloud', 'litespeed-cache'), true, 'button litespeed-btn-warning'); ?> 193 <?php if (!empty($cloud_summary['partner']) && !empty($cloud_summary['partner']['login_title']) && !empty($cloud_summary['partner']['login_link'])) : ?> 194 <?php Doc::learn_more($cloud_summary['partner']['login_link'], $cloud_summary['partner']['login_title'], true, 'button litespeed-btn-warning'); ?> 195 <?php elseif (!empty($cloud_summary['partner']) && !empty($cloud_summary['partner']['disable_qc_login'])) : ?> 197 196 <?php else : ?> 198 <?php Doc::learn_more('javascript:;', __('Link to QUIC.cloud', 'litespeed-cache'), true, 'button disabled litespeed-btn-warning'); ?> 197 <?php if (!empty($cloud_summary['is_linked'])) : ?> 198 <a href="<?php echo Cloud::cls()->qc_link(); ?>" class="litespeed-link-with-icon" target="_blank"><?php echo __('Go to QUIC.cloud dashboard', 'litespeed-cache'); ?> <span class="dashicons dashicons-external"></span></a> 199 <?php elseif ($__cloud->can_link_qc()) : ?> 200 <?php Doc::learn_more(Utility::build_url(Router::ACTION_CLOUD, Cloud::TYPE_LINK), __('Link to QUIC.cloud', 'litespeed-cache'), true, 'button litespeed-btn-warning'); ?> 201 <?php else : ?> 202 <?php Doc::learn_more('javascript:;', __('Link to QUIC.cloud', 'litespeed-cache'), true, 'button disabled litespeed-btn-warning'); ?> 203 <?php endif; ?> 199 204 <?php endif; ?> 200 205 </p> -
litespeed-cache/trunk/tpl/dash/network_dash.tpl.php
r2634373 r3123399 25 25 <?php 26 26 $cat_list = array( 27 'img_optm' => __( 'Image Optimization', 'litespeed-cache'),28 ' ccss' => __( 'CCSS', 'litespeed-cache'),29 'cdn' => __( 'CDN Bandwidth', 'litespeed-cache'),30 'lqip' => __( 'LQIP', 'litespeed-cache'),27 'img_optm' => __('Image Optimization', 'litespeed-cache'), 28 'page_optm' => __('Page Optimization', 'litespeed-cache'), 29 'cdn' => __('CDN Bandwidth', 'litespeed-cache'), 30 'lqip' => __('Low Quality Image Placeholder', 'litespeed-cache'), 31 31 ); 32 32 -
litespeed-cache/trunk/tpl/img_optm/summary.tpl.php
r3009052 r3123399 137 137 138 138 <p><?php echo sprintf( 139 '<a href="%1$s" class="button button-secondary " data-balloon-pos="right" aria-label="%2$s" %3$s><span class="dashicons dashicons-editor-removeformatting"></span> %4$s</a>',139 '<a href="%1$s" class="button button-secondary litespeed-btn-warning" data-balloon-pos="right" aria-label="%2$s" %3$s><span class="dashicons dashicons-editor-removeformatting"></span> %4$s</a>', 140 140 ($unfinished_num ? Utility::build_url(Router::ACTION_IMG_OPTM, Img_Optm::TYPE_CLEAN) : 'javascript:;'), 141 141 __('Remove all previous unfinished image optimization requests.', 'litespeed-cache'), … … 239 239 <code><?php echo Admin_Display::print_plural($img_count['groups_new'], 'group'); ?></code> 240 240 <?php else : ?> 241 <font class="litespeed-congratulate"><?php echo __('Congratulations, all requested!', 'litespeed-cache'); ?></font>241 <font class="litespeed-congratulate"><?php echo __('Congratulations, all gathered!', 'litespeed-cache'); ?></font> 242 242 <?php endif; ?> 243 243 -
litespeed-cache/trunk/tpl/page_optm/settings_html.tpl.php
r2977143 r3123399 90 90 <tr> 91 91 <th> 92 <?php $id = Base::O_OPTM_HTML_SKIP_COMMENTS; ?> 93 <?php $this->title($id); ?> 94 </th> 95 <td> 96 <?php $this->build_textarea($id); ?> 97 <div class="litespeed-desc"> 98 <?php echo __('When minifying HTML do not discard comments that match a specified pattern.', 'litespeed-cache'); ?> 99 <br /> 100 <?php echo sprintf( __('If comment to be kept is like: %s write: %s', 'litespeed-cache'), '<code><!-- A comment that needs to be here --></code>', '<code>A comment that needs to be here</code>'); ?> 101 <br /> 102 <?php Doc::one_per_line(); ?> 103 </div> 104 </td> 105 </tr> 106 107 <tr> 108 <th> 92 109 <?php $id = Base::O_OPTM_QS_RM; ?> 93 110 <?php $this->title($id); ?> -
litespeed-cache/trunk/tpl/toolbox/beta_test.tpl.php
r3077216 r3123399 7 7 // Existing public version list 8 8 $v_list = array( 9 '6.3', 9 10 '6.2.0.1', 10 11 '6.1', -
litespeed-cache/trunk/tpl/toolbox/edit_htaccess.tpl.php
r2613854 r3123399 1 1 <?php 2 2 3 namespace LiteSpeed; 3 defined( 'WPINC' ) || exit; 4 5 defined('WPINC') || exit; 4 6 5 7 $content = null; 6 8 try { 7 9 $content = Htaccess::cls()->htaccess_read(); 8 } catch ( \Exception $e) {9 echo '<div class="notice notice-error is-dismissible"><p>' . $e->getMessage() . '</p></div>';10 } catch (\Exception $e) { 11 echo '<div class="notice notice-error is-dismissible"><p>' . $e->getMessage() . '</p></div>'; 10 12 } 11 13 … … 13 15 14 16 // Check if there is `ExpiresDefault` in .htaccess 15 if ( defined( 'LITESPEED_ON' )) {16 if ( $content && stripos( $content, "\nExpiresDefault" ) !== false) {17 $is_dismissed = GUI::get_option( self::DB_DISMISS_MSG);18 if ( $is_dismissed !== self::RULECONFLICT_DISMISSED) {17 if (defined('LITESPEED_ON')) { 18 if ($content && stripos($content, "\nExpiresDefault") !== false) { 19 $is_dismissed = GUI::get_option(self::DB_DISMISS_MSG); 20 if ($is_dismissed !== self::RULECONFLICT_DISMISSED) { 19 21 // Need to add a notice for browser cache compatibility 20 if ( $is_dismissed !== self::RULECONFLICT_ON) {21 GUI::update_option( self::DB_DISMISS_MSG, self::RULECONFLICT_ON);22 if ($is_dismissed !== self::RULECONFLICT_ON) { 23 GUI::update_option(self::DB_DISMISS_MSG, self::RULECONFLICT_ON); 22 24 } 23 25 require_once LSCWP_DIR . 'tpl/inc/show_rule_conflict.php'; … … 35 37 <h3 class="litespeed-title"> 36 38 <?php echo __('LiteSpeed Cache View .htaccess', 'litespeed-cache'); ?> 37 <?php Doc::learn_more( 'https://docs.litespeedtech.com/lscache/lscwp/toolbox/#edit-htaccess-tab'); ?>39 <?php Doc::learn_more('https://docs.litespeedtech.com/lscache/lscwp/toolbox/#view-htaccess-tab'); ?> 38 40 </h3> 39 41 40 42 <h3 class="litespeed-title-short"> 41 <?php echo __( '.htaccess Path', 'litespeed-cache'); ?>43 <?php echo __('.htaccess Path', 'litespeed-cache'); ?> 42 44 </h3> 43 45 44 <table class="wp-list-table striped litespeed-table"><tbody> 45 <tr> 46 <th> 47 <?php echo __( 'Frontend .htaccess Path', 'litespeed-cache' ); ?> 48 </th> 49 <td> 50 <code><?php echo $htaccess_path; ?></code> 51 <div class="litespeed-desc"> 52 <?php echo __( 'Default path is', 'litespeed-cache' ); ?>: <code><?php echo Htaccess::get_frontend_htaccess( true ); ?></code> 53 <br /><font class="litespeed-success"> 54 <?php echo __( 'API', 'litespeed-cache' ); ?>: 55 <?php echo sprintf( __( 'PHP Constant %s is supported.', 'litespeed-cache' ), '<code>LITESPEED_CFG_HTACCESS</code>' ); ?> 56 <?php echo sprintf( __( 'You can use this code %1$s in %2$s to specify the htaccess file path.', 'litespeed-cache' ), '<code>defined("LITESPEED_CFG_HTACCESS") || define("LITESPEED_CFG_HTACCESS", "your path on server");</code>', '<code>wp-config.php</code>' ); ?> 57 </font> 58 </div> 59 </td> 60 </tr> 46 <table class="wp-list-table striped litespeed-table"> 47 <tbody> 48 <tr> 49 <th> 50 <?php echo __('Frontend .htaccess Path', 'litespeed-cache'); ?> 51 </th> 52 <td> 53 <code><?php echo $htaccess_path; ?></code> 54 <div class="litespeed-desc"> 55 <?php echo __('Default path is', 'litespeed-cache'); ?>: <code><?php echo Htaccess::get_frontend_htaccess(true); ?></code> 56 <br /> 57 <font class="litespeed-success"> 58 <?php echo __('API', 'litespeed-cache'); ?>: 59 <?php echo sprintf(__('PHP Constant %s is supported.', 'litespeed-cache'), '<code>LITESPEED_CFG_HTACCESS</code>'); ?> 60 <?php echo sprintf(__('You can use this code %1$s in %2$s to specify the htaccess file path.', 'litespeed-cache'), '<code>defined("LITESPEED_CFG_HTACCESS") || define("LITESPEED_CFG_HTACCESS", "your path on server");</code>', '<code>wp-config.php</code>'); ?> 61 </font> 62 </div> 63 </td> 64 </tr> 61 65 62 <tr> 63 <th> 64 <?php echo __( 'Backend .htaccess Path', 'litespeed-cache' ); ?> 65 </th> 66 <td> 67 <?php echo Htaccess::get_backend_htaccess(); ?> 68 <div class="litespeed-desc"> 69 <?php echo __( 'Default path is', 'litespeed-cache' ); ?>: <code><?php echo Htaccess::get_backend_htaccess( true ); ?></code> 70 <br /><font class="litespeed-success"> 71 <?php echo __( 'API', 'litespeed-cache' ); ?>: 72 <?php echo sprintf( __( 'PHP Constant %s is supported.', 'litespeed-cache' ), '<code>LITESPEED_CFG_HTACCESS_BACKEND</code>' ); ?> 73 <?php echo sprintf( __( 'You can use this code %1$s in %2$s to specify the htaccess file path.', 'litespeed-cache' ), '<code>defined("LITESPEED_CFG_HTACCESS_BACKEND") || define("LITESPEED_CFG_HTACCESS_BACKEND", "your path on server");</code>', '<code>wp-config.php</code>' ); ?> 74 </font> 75 </div> 76 </td> 77 </tr> 78 </tbody></table> 66 <tr> 67 <th> 68 <?php echo __('Backend .htaccess Path', 'litespeed-cache'); ?> 69 </th> 70 <td> 71 <?php echo Htaccess::get_backend_htaccess(); ?> 72 <div class="litespeed-desc"> 73 <?php echo __('Default path is', 'litespeed-cache'); ?>: <code><?php echo Htaccess::get_backend_htaccess(true); ?></code> 74 <br /> 75 <font class="litespeed-success"> 76 <?php echo __('API', 'litespeed-cache'); ?>: 77 <?php echo sprintf(__('PHP Constant %s is supported.', 'litespeed-cache'), '<code>LITESPEED_CFG_HTACCESS_BACKEND</code>'); ?> 78 <?php echo sprintf(__('You can use this code %1$s in %2$s to specify the htaccess file path.', 'litespeed-cache'), '<code>defined("LITESPEED_CFG_HTACCESS_BACKEND") || define("LITESPEED_CFG_HTACCESS_BACKEND", "your path on server");</code>', '<code>wp-config.php</code>'); ?> 79 </font> 80 </div> 81 </td> 82 </tr> 83 </tbody> 84 </table> 79 85 80 <?php if ( $content !== null) : ?>86 <?php if ($content !== null) : ?> 81 87 82 88 <h3 class="litespeed-title"><?php echo sprintf(__('Current %s Contents', 'litespeed-cache'), '.htaccess'); ?></h3> -
litespeed-cache/trunk/tpl/toolbox/settings-debug.tpl.php
r2761310 r3123399 117 117 <tr> 118 118 <th> 119 <?php $id = Base::O_DEBUG_COLLAPS _QS; ?>119 <?php $id = Base::O_DEBUG_COLLAPSE_QS; ?> 120 120 <?php $this->title( $id ); ?> 121 121 </th>
Note: See TracChangeset
for help on using the changeset viewer.