{"id":354691,"date":"2026-08-21T17:42:48","date_gmt":"2026-08-21T17:42:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/cacheloop-simple-page-cache-speed-optimization\/"},"modified":"2026-08-21T17:42:21","modified_gmt":"2026-08-21T17:42:21","slug":"cacheloop-simple-page-cache-speed-optimization","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/cacheloop-simple-page-cache-speed-optimization\/","author":23531578,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.15","stable_tag":"1.0.15","tested":"7.0.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"CacheLoop \u2013 Simple Page Cache & Speed Optimization","header_author":"InTouchDesign","header_description":"Set-it-and-forget-it cache & speed optimization. Activate and go fast.","assets_banners_color":"10100e","last_updated":"2026-08-21 17:42:21","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/dev.intouchdesign.it\/plugin\/cacheloop\/","header_author_uri":"https:\/\/dev.intouchdesign.it\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":35,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.15":{"tag":"1.0.15","author":"intouchdesigndev","date":"2026-08-21 17:42:21"}},"upgrade_notice":{"1.0.0":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3659451,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3659451,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3659451,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3659451,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.15"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3659451,"resolution":"1","location":"assets","locale":"","width":1440,"height":1101},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3659451,"resolution":"2","location":"assets","locale":"","width":1440,"height":1720},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3659451,"resolution":"3","location":"assets","locale":"","width":1440,"height":1090},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3659451,"resolution":"4","location":"assets","locale":"","width":1440,"height":1526}},"screenshots":{"1":"Dashboard \u2014 at-a-glance cache status, metrics, and PageSpeed results.","2":"Core Cache \u2014 page cache, browser cache, and Gzip compression settings.","3":"Optimization \u2014 image lazy loading and other speed optimizations.","4":"Tools \u2014 cache management and troubleshooting utilities."}},"plugin_section":[],"plugin_tags":[146,187,3853,247,794],"plugin_category":[52,54],"plugin_contributors":[275673,275672],"plugin_business_model":[],"class_list":["post-354691","plugin","type-plugin","status-publish","hentry","plugin_tags-cache","plugin_tags-optimization","plugin_tags-page-cache","plugin_tags-performance","plugin_tags-speed","plugin_category-performance","plugin_category-security-and-spam-protection","plugin_contributors-ikaroweb","plugin_contributors-intouchdesigndev","plugin_committers-intouchdesigndev"],"banners":{"banner":"https:\/\/ps.w.org\/cacheloop-simple-page-cache-speed-optimization\/assets\/banner-772x250.png?rev=3659451","banner_2x":"https:\/\/ps.w.org\/cacheloop-simple-page-cache-speed-optimization\/assets\/banner-1544x500.png?rev=3659451","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/cacheloop-simple-page-cache-speed-optimization\/assets\/icon-128x128.png?rev=3659451","icon_2x":"https:\/\/ps.w.org\/cacheloop-simple-page-cache-speed-optimization\/assets\/icon-256x256.png?rev=3659451","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/cacheloop-simple-page-cache-speed-optimization\/assets\/screenshot-1.png?rev=3659451","caption":"Dashboard \u2014 at-a-glance cache status, metrics, and PageSpeed results."},{"src":"https:\/\/ps.w.org\/cacheloop-simple-page-cache-speed-optimization\/assets\/screenshot-2.png?rev=3659451","caption":"Core Cache \u2014 page cache, browser cache, and Gzip compression settings."},{"src":"https:\/\/ps.w.org\/cacheloop-simple-page-cache-speed-optimization\/assets\/screenshot-3.png?rev=3659451","caption":"Optimization \u2014 image lazy loading and other speed optimizations."},{"src":"https:\/\/ps.w.org\/cacheloop-simple-page-cache-speed-optimization\/assets\/screenshot-4.png?rev=3659451","caption":"Tools \u2014 cache management and troubleshooting utilities."}],"raw_content":"<!--section=description-->\n<p><strong>CacheLoop<\/strong> is a WordPress performance plugin designed for everyone, not just developers.\nActivate it and the most important speed optimizations are applied automatically.<\/p>\n\n<h4>Free Features<\/h4>\n\n<ul>\n<li><strong>Page Cache<\/strong> \u2013 Saves your pages as fast static HTML files so visitors get them instantly.<\/li>\n<li><strong>Browser Cache<\/strong> \u2013 Tells browsers to remember static assets locally so repeat visits are blazing fast.<\/li>\n<li><strong>Gzip Compression<\/strong> \u2013 Compresses pages before sending them to visitors, reducing data transfer.<\/li>\n<li><strong>Image Lazy Loading<\/strong> \u2013 Loads images only when they scroll into view, speeding up initial page load.<\/li>\n<li><strong>Configurable Cache TTL<\/strong> \u2013 Choose how long cached pages are served (1 hour to 7 days).<\/li>\n<li><strong>Device-Specific Cache<\/strong> \u2013 Separate cache files for mobile and desktop visitors.<\/li>\n<li><strong>CDN Integration<\/strong> \u2013 Rewrite asset URLs to serve them from your CDN (works with drop-in and PHP fallback).<\/li>\n<li><strong>Cache Whitelist \/ Blacklist<\/strong> \u2013 Exclude or limit cached URLs with wildcard pattern support.<\/li>\n<li><strong>Cookie-Based Cache Bypass<\/strong> \u2013 Skip cache when specific cookies are present.<\/li>\n<li><strong>Debug Log<\/strong> \u2013 View cache hits, misses, and bypass reasons directly in admin.<\/li>\n<li><strong>Admin Toolbar Buttons<\/strong> \u2013 \"Clear All Cache\" and \"Purge This Page\" from the WordPress admin bar.<\/li>\n<li><strong>HTTP\/2 Server Push<\/strong> \u2013 Preload critical CSS assets for faster rendering.<\/li>\n<li><strong>REST API Cache<\/strong> \u2013 Cache common WordPress REST API endpoints (<code>\/wp-json\/wp\/v2\/*<\/code>).<\/li>\n<li><strong>WP-CLI Support<\/strong> \u2013 Manage cache from the command line: <code>wp cacheloop clear<\/code>, <code>status<\/code>, <code>preload<\/code>, <code>log<\/code>.<\/li>\n<li><strong>Cache Metrics<\/strong> \u2013 See file count, disk usage, and last purge time in the admin dashboard.<\/li>\n<\/ul>\n\n<h4>CacheLoop Pro<\/h4>\n\n<p>Unlock advanced optimizations:<\/p>\n\n<ul>\n<li><strong>CSS &amp; JS Minification<\/strong> \u2013 Removes unnecessary code from stylesheets and scripts and defers non-critical JS.<\/li>\n<li><strong>Database Optimization<\/strong> \u2013 Weekly automatic cleanup of old drafts, revisions, and expired transients.<\/li>\n<li><strong>Cache Preloading<\/strong> \u2013 Warms up the cache automatically by crawling your XML sitemap.<\/li>\n<li><strong>Server Resource Saver<\/strong> \u2013 Limits WordPress background activity to reduce unnecessary server load.<\/li>\n<li><strong>Varnish Cache Purge<\/strong> \u2013 Mirrors CacheLoop's own cache purges to an upstream Varnish server, keeping both layers in sync.<\/li>\n<li><strong>Cloudflare Cache Purge<\/strong> \u2013 Mirrors CacheLoop's own cache purges to Cloudflare's edge via their API.<\/li>\n<li><strong>Unused CSS Removal<\/strong> \u2013 Strips CSS rules unused on each page from the combined CSS output.<\/li>\n<\/ul>\n\n<p><a href=\"https:\/\/dev.intouchdesign.it\/plugin\/cacheloop\/\">Learn more about CacheLoop Pro<\/a> \u2192<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin provides a built-in speed testing tool to analyze your website's performance. When you click \"Run PageSpeed\" in the plugin settings, the plugin connects to the official Google PageSpeed Insights API to generate the performance report.<\/p>\n\n<ul>\n<li>Service used: Google PageSpeed Insights API<\/li>\n<li>Service URL: https:\/\/developers.google.com\/speed\/docs\/insights\/v5\/about<\/li>\n<li>Privacy Policy: https:\/\/policies.google.com\/privacy<\/li>\n<li>Terms of Service: https:\/\/policies.google.com\/terms<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>cacheloop<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>That's it. CacheLoop applies optimal defaults immediately upon activation.<\/li>\n<li>(Optional) Visit <strong>CacheLoop<\/strong> in your admin menu to review or adjust settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20cacheloop%20work%20with%20woocommerce%3F\"><h3>Does CacheLoop work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. CacheLoop automatically skips caching for dynamic WooCommerce pages (cart, checkout, my-account) to ensure users always see accurate, up-to-date information.<\/p><\/dd>\n<dt id=\"does%20cacheloop%20work%20with%20nginx%3F\"><h3>Does CacheLoop work with Nginx?<\/h3><\/dt>\n<dd><p>The Browser Cache and Gzip features write to <code>.htaccess<\/code> and are Apache\/LiteSpeed-only. The Page Cache and Lazy Load features work on all server types. Nginx users should configure browser caching at the server level.<\/p><\/dd>\n<dt id=\"will%20it%20conflict%20with%20my%20hosting%20provider%27s%20built-in%20caching%3F\"><h3>Will it conflict with my hosting provider's built-in caching?<\/h3><\/dt>\n<dd><p>CacheLoop is designed to be additive. If your host has its own caching layer, the static files CacheLoop generates may simply never be served (the host cache takes priority). In that case you can disable Page Cache in settings and rely on your host's solution, while still benefiting from CacheLoop's other optimizations.<\/p><\/dd>\n<dt id=\"how%20do%20i%20clear%20the%20cache%3F\"><h3>How do I clear the cache?<\/h3><\/dt>\n<dd><p>Click the <strong>Clear Cache<\/strong> button at the top of the CacheLoop settings page. The cache is also cleared automatically when you publish or edit a post or page.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20multisite%3F\"><h3>Is it compatible with Multisite?<\/h3><\/dt>\n<dd><p>Single-site only in the current version. Multisite support is planned for a future release.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.15<\/h4>\n\n<ul>\n<li>Fixed: \"Exclude First Images from Lazy Load\" was hidden behind a Pro check even though the feature itself is implemented in the free code \u2014 the setting is now available to all users.<\/li>\n<li>Fixed: REST API Cache could serve a response generated for a logged-in\/privileged request to a later, unauthenticated visitor without re-checking permissions; caching is now restricted to anonymous requests, <code>wp\/v2\/settings<\/code> and <code>wp\/v2\/users<\/code> were removed from the cacheable list, and the cache key now includes the query string so different request variations of the same route no longer share one cached file.<\/li>\n<li>Fixed: the Object Cache password field was sanitized with <code>sanitize_text_field()<\/code>, which can strip valid password characters; it's now preserved as-is.<\/li>\n<li>Security: <code>wp-content\/cache\/cacheloop\/<\/code> (which can contain the Object Cache password in <code>runtime-config.json<\/code>) is now protected from direct HTTP access via <code>.htaccess<\/code>.<\/li>\n<li>Changed: internal AJAX\/admin-post action names and nonce actions now use the full <code>cacheloop_<\/code> prefix instead of the 2-character <code>cl_<\/code> prefix, for consistency with WordPress.org's minimum-prefix-length guidance.<\/li>\n<li>Fixed: deactivating could leave <code>WP_CACHE<\/code> enabled with the cache drop-in already removed if <code>wp-config.php<\/code> wasn't writable, causing \"headers already sent\" warnings on every page until reactivated; the drop-in is now only removed once disabling <code>WP_CACHE<\/code> is confirmed.<\/li>\n<\/ul>\n\n<h4>1.0.14<\/h4>\n\n<ul>\n<li>Fixed: CDN Integration's inline CSS <code>url()<\/code> rewriting could fatal-error on any cached page (affected both the runtime rewriter and the pre-bootstrap drop-in).<\/li>\n<li>Fixed: the drop-in's runtime configuration file was being wiped by the cache flush that runs right after every settings save, silently reverting CDN rewriting, custom Cache TTL, Device-Specific Cache, and Cookie-Based Cache Bypass to their defaults.<\/li>\n<li>Fixed: the admin toolbar's \"Clear All Cache\" button pointed at an unregistered action and always produced a blank error page.<\/li>\n<li>Fixed: Varnish, Cloudflare, and Remove Unused CSS Safelist settings were silently discarded on every save.<\/li>\n<li>Changed: CDN Domain is now validated as a plain hostname (scheme, path, query strings, and <code>javascript:<\/code>\/<code>data:<\/code> values are rejected).<\/li>\n<li>Changed: settings page scripts\/styles are now properly enqueued instead of inline; internal class prefix and text domain updated for WordPress.org compliance.<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>Fixed: a site could fatal error on every page load (front-end included) on hosts where the filesystem method resolves to non-direct (e.g. FTP) without stored credentials \u2014 the plugin's own filesystem bootstrap wasn't checking whether <code>WP_Filesystem()<\/code> actually connected before using it.<\/li>\n<li>Fixed: version-change cache invalidation and Image Optimization table self-heal were incorrectly skipped whenever the filesystem bootstrap above failed, instead of always running as intended.<\/li>\n<li>Changed: drop-in self-healing and wp-config.php editing now only run in wp-admin, not on every front-end request.<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Changed: the plugin version now shows at the top of the settings page sidebar, above \"Dashboard\".<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Changed: settings cards with extra fields (CDN, Varnish, Cloudflare, Cache Whitelist, Remove Unused CSS) now stay collapsed until their toggle is switched on.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Fixed: settings cards with extra fields below the main row (CDN, Varnish, Cloudflare, Cache Whitelist\/Blacklist, Cookie Bypass, Remove Unused CSS) squeezed that content onto the same row instead of stacking it below.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Added: Unused CSS Removal (Pro) \u2014 strips CSS rules unused on each page from the Minify &amp; Combine output. Conservative by design (keeps anything it can't verify safely); requires Minify &amp; Combine CSS enabled.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Added: Cloudflare Cache Purge (Pro) \u2014 mirrors CacheLoop's own purges to Cloudflare's edge via a scoped API Token, with connection test.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Added: Varnish Cache Purge (Pro) \u2014 mirrors CacheLoop's own purges to an upstream Varnish server, with connection test and VCL setup snippet.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Added: Original\/Optimized size columns in the Optimized Images table (Pro).<\/li>\n<li>Added: click-to-preview lightbox for optimized image thumbnails (Pro).<\/li>\n<li>Added: copy button for Debug Log and Server Info panels.<\/li>\n<li>Added: estimated time and disk space needed shown before \"Optimize All\" starts (Pro).<\/li>\n<li>Added: one-click optimize\/revert directly from the Media Library, including bulk action (Pro).<\/li>\n<li>Added: site-wide progress notice while \"Optimize All\" runs in the background (Pro).<\/li>\n<li>Added: hosting panel, active plugins\/theme, and load average in Server Info report.<\/li>\n<li>Fixed: Image Optimization AJAX requests could fail with a raw \"unknown action\" error when the \"Optimize on Upload\" toggle was off (Pro).<\/li>\n<li>Fixed: uninstalling the plugin left generated WebP files behind instead of cleaning them up (Pro).<\/li>\n<li>Fixed: admin-page AJAX calls firing in a simultaneous burst on load, which some hosts rejected.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Added: Device-specific cache (mobile\/desktop split).<\/li>\n<li>Added: CDN integration with URL rewriting (drop-in + PHP fallback + inline CSS).<\/li>\n<li>Added: Cache whitelist\/blacklist with wildcard pattern support.<\/li>\n<li>Added: Cookie-based cache bypass.<\/li>\n<li>Added: Debug log panel in admin with refresh\/clear.<\/li>\n<li>Added: Admin toolbar buttons (\"Clear All Cache\", \"Purge This Page\").<\/li>\n<li>Added: HTTP\/2 Server Push for critical CSS.<\/li>\n<li>Added: REST API cache for common endpoints.<\/li>\n<li>Added: WP-CLI commands (<code>wp cacheloop clear<\/code>, <code>status<\/code>, <code>preload<\/code>, <code>log<\/code>).<\/li>\n<li>Added: Cache metrics dashboard (file count, disk usage, last purge).<\/li>\n<li>Added: Nginx configuration generator.<\/li>\n<li>Added: Concurrent write protection via file locking.<\/li>\n<li>Added: Cache versioning with automatic flush on update.<\/li>\n<li>Fixed: Double cache serving race condition.<\/li>\n<li>Fixed: CSS minification breaking strings and url().<\/li>\n<li>Fixed: Fatal error when premium files missing.<\/li>\n<li>Fixed: extract() error on runtime config.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Configurable Cache TTL (1 hour to 7 days).<\/li>\n<\/ul>","raw_excerpt":"Set-it-and-forget-it cache and speed optimization. Activate and go fast \u2014 no technical knowledge required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/354691","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=354691"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/intouchdesigndev"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=354691"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=354691"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=354691"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=354691"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=354691"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=354691"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}