{"id":244165,"date":"2025-08-01T07:32:44","date_gmt":"2025-08-01T07:32:44","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/simple-page-cache\/"},"modified":"2025-09-08T18:23:38","modified_gmt":"2025-09-08T18:23:38","slug":"simple-page-cache","status":"publish","type":"plugin","link":"https:\/\/srd.wordpress.org\/plugins\/simple-page-cache\/","author":7390040,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.1.1","stable_tag":"1.1.1","tested":"6.8.5","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Simple Page Cache","header_author":"xsu.nl","header_description":"Extremely simple page cache to disk for non-logged-in users. No expiry, only clears on manual action.","assets_banners_color":"","last_updated":"2025-09-08 18:23:38","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/xsu.nl","rating":0,"author_block_rating":0,"active_installs":20,"downloads":532,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"peterarends","date":"2025-08-01 07:39:21"},"1.0.1":{"tag":"1.0.1","author":"peterarends","date":"2025-08-01 07:45:15"},"1.0.2":{"tag":"1.0.2","author":"peterarends","date":"2025-08-06 07:33:56"},"1.0.3":{"tag":"1.0.3","author":"peterarends","date":"2025-08-06 13:19:40"},"1.1.1":{"tag":"1.1.1","author":"peterarends","date":"2025-09-08 18:23:38"},"1.10.0":{"tag":"1.10.0","author":"peterarends","date":"2025-09-05 08:25:01"}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.1.1","1.10.0"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[146,2665,247,17693,286],"plugin_category":[45,52,54],"plugin_contributors":[88089],"plugin_business_model":[],"class_list":["post-244165","plugin","type-plugin","status-publish","hentry","plugin_tags-cache","plugin_tags-edd","plugin_tags-performance","plugin_tags-static","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-performance","plugin_category-security-and-spam-protection","plugin_contributors-peterarends","plugin_committers-peterarends"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/simple-page-cache.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Simple Page Cache<\/strong> is an extremely simple, super-fast page cache for WordPress. The plugin stores full HTML pages on disk for non-logged-in visitors. The cache is automatically cleared when content is updated, ensuring visitors always see fresh content. Ideal for small to medium-sized sites and webshops that want maximum speed without complex settings.<\/p>\n\n<p><strong>Main features:<\/strong>\n- Caching for non-logged-in users (GET requests only)\n- <strong>Path-based cache structure<\/strong> for nginx direct serving (<code>\/host\/path\/index.html<\/code>)\n- Cache files are stored in <code>\/wp-content\/uploads\/simple-page-cache\/<\/code>\n- Drop-in (<code>advanced-cache.php<\/code>) for maximum speed before WordPress loads\n- <strong>Nginx configuration generation<\/strong> for direct cache serving\n- <strong>Automatic cache clearing<\/strong> when posts\/pages are updated\n- <strong>E-commerce integration<\/strong> with intelligent cache clearing for:\n  - WooCommerce (orders, stock updates, product changes)\n  - Easy Digital Downloads (purchases, download updates)\n  - BigCommerce for WordPress (product updates)\n  - Generic e-commerce plugins (product post types)\n- Automatic detection of dynamic pages (cart, checkout, account, wishlist) for:\n  - WooCommerce\n  - BigCommerce for WordPress\n  - Easy Digital Downloads\n  - iThemes Exchange\n  - Jigoshop\n  - WP-Shop\n- Detected dynamic pages are automatically excluded from caching\n- Manual cache clearing via admin bar button\n- <strong>Nginx config regeneration<\/strong> via admin bar button\n- Performance comments in cached HTML files\n- No complex settings, no database writes<\/p>\n\n<h3>Nginx Configuration<\/h3>\n\n<p>For maximum performance, you can configure nginx to serve cached files directly without PHP processing:<\/p>\n\n<ol>\n<li><strong>Copy the nginx configuration<\/strong> from <code>\/wp-content\/uploads\/simple-page-cache\/nginx.conf<\/code><\/li>\n<li><strong>Add the configuration<\/strong> to your nginx server block for your domain<\/li>\n<li><strong>Test nginx configuration<\/strong>: <code>sudo nginx -t<\/code><\/li>\n<li><strong>Reload nginx<\/strong>: <code>sudo systemctl reload nginx<\/code><\/li>\n<\/ol>\n\n<p>The nginx configuration includes:\n- Internal location block for serving cached files\n- Automatic cache bypass for logged-in users\n- Automatic cache bypass for requests with query strings\n- Debug headers to identify cache hits<\/p>\n\n<p><strong>Benefits of nginx direct serving:<\/strong>\n- Faster response times (no PHP processing)\n- Lower server load\n- Better scalability\n- Direct file serving from disk<\/p>\n\n<h3>How it works<\/h3>\n\n<ul>\n<li>For every non-logged-in visitor and every GET request, a static HTML file is created and served.<\/li>\n<li><strong>Path-based cache structure<\/strong>: Cache files are organized as <code>\/host\/path\/index.html<\/code> for direct nginx serving.<\/li>\n<li>Pages with characteristics of dynamic e-commerce pages (such as cart, checkout, account, wishlist) are automatically detected and excluded from caching. The plugin recognizes WooCommerce, BigCommerce, Easy Digital Downloads, iThemes Exchange, Jigoshop, and WP-Shop.<\/li>\n<li>The list of excluded pages is automatically maintained in a file in the cache directory.<\/li>\n<li><strong>Automatic cache clearing<\/strong>: When posts or pages are updated, the plugin efficiently clears cache using the new path-based structure and scans for related content.<\/li>\n<li><strong>E-commerce integration<\/strong>: For WooCommerce, when orders are placed or product stock is updated, the plugin automatically clears cache for the affected products and related pages (categories, tags, shop pages, homepage).<\/li>\n<li><strong>Performance comments<\/strong>: Each cached HTML file includes a comment with timestamp and host information for debugging and transparency.<\/li>\n<li><strong>Nginx integration<\/strong>: Generated nginx configuration allows direct serving of cached files without PHP processing for maximum performance.<\/li>\n<\/ul>\n\n<h3>Clearing the cache<\/h3>\n\n<ul>\n<li>Click the \"Clear Page Cache\" button in the admin bar (visible to administrators only) to remove all cache files.<\/li>\n<li>Click the \"Regenerate nginx.conf\" button in the admin bar to regenerate the nginx configuration file.<\/li>\n<\/ul>\n\n<h3>Deactivation<\/h3>\n\n<ul>\n<li>When deactivating the plugin:\n\n<ul>\n<li>The drop-in <code>advanced-cache.php<\/code> is removed.<\/li>\n<li>The <code>define('WP_CACHE', true);<\/code> line (if placed by this plugin) is removed from <code>wp-config.php<\/code>.<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to the <code>\/wp-content\/plugins\/simple-page-cache\/<\/code> directory.<\/li>\n<li>Activate the plugin through the WordPress plugins screen.<\/li>\n<li>Upon activation:\n\n<ul>\n<li>The cache directory is created (<code>\/wp-content\/uploads\/simple-page-cache\/<\/code>).<\/li>\n<li>The drop-in <code>advanced-cache.php<\/code> is placed in <code>\/wp-content\/<\/code>.<\/li>\n<li><code>define('WP_CACHE', true);<\/code> is automatically added to <code>wp-config.php<\/code> (or replaced if it already exists).<\/li>\n<li>An <code>nginx.conf<\/code> file is generated in the cache directory for nginx direct serving.<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='are%20pages%20automatically%20removed%20from%20the%20cache%3F'><h3>Are pages automatically removed from the cache?<\/h3><\/dt>\n<dd><p>Yes! The plugin automatically clears cache when posts\/pages are updated. For e-commerce sites, it also clears cache when orders are placed or product stock changes.<\/p><\/dd>\n<dt id='can%20i%20manually%20exclude%20pages%3F'><h3>Can I manually exclude pages?<\/h3><\/dt>\n<dd><p>The plugin automatically detects most dynamic e-commerce pages. Manual exclusion is not possible without editing code.<\/p><\/dd>\n<dt id='does%20this%20work%20with%20other%20cache%20plugins%3F'><h3>Does this work with other cache plugins?<\/h3><\/dt>\n<dd><p>Always use only one page cache plugin\/drop-in at a time.<\/p><\/dd>\n<dt id='how%20does%20the%20automatic%20cache%20clearing%20work%3F'><h3>How does the automatic cache clearing work?<\/h3><\/dt>\n<dd><p>The plugin scans all cached HTML files and looks for URLs that match the updated content. This ensures that any page linking to the updated content is refreshed.<\/p><\/dd>\n<dt id='what%20happens%20when%20a%20product%20goes%20out%20of%20stock%3F'><h3>What happens when a product goes out of stock?<\/h3><\/dt>\n<dd><p>For WooCommerce sites, when a product's stock status changes, the plugin automatically clears cache for that product page and all related pages (categories, shop pages, homepage) that might display the product.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.1<\/h4>\n\n<ul>\n<li><strong>Bug fix<\/strong>: Fixed 404 errors when browsing the website while logged in<\/li>\n<li><strong>Query parameter handling<\/strong>: Plugin now properly checks for $_GET parameters and skips caching for requests with query strings<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li><strong>Path-based cache structure<\/strong>: Cache files now use <code>\/host\/path\/index.html<\/code> structure for nginx direct serving<\/li>\n<li><strong>Nginx configuration generation<\/strong>: Automatic generation of nginx.conf file for direct cache serving<\/li>\n<li><strong>Nginx admin management<\/strong>: Added \"Regenerate nginx.conf\" button in admin bar<\/li>\n<li><strong>Improved cache clearing<\/strong>: Optimized cache clearing using new path-based structure<\/li>\n<li><strong>Better performance<\/strong>: Cache files can now be served directly by nginx without PHP processing<\/li>\n<li><strong>Enhanced documentation<\/strong>: Added nginx configuration section to readme<\/li>\n<li><strong>Cache directory change<\/strong>: Moved cache directory to <code>\/wp-content\/uploads\/simple-page-cache\/<\/code> for better compatibility<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li><strong>Automatic cache clearing<\/strong>: Cache is now automatically cleared when posts\/pages are updated<\/li>\n<li><strong>E-commerce integration<\/strong>: Added intelligent cache clearing for WooCommerce, Easy Digital Downloads, and BigCommerce<\/li>\n<li><strong>HTML content scanning<\/strong>: Implements precise cache clearing by scanning HTML content for URLs<\/li>\n<li><strong>Performance optimization<\/strong>: File size filtering and optimized scanning for better performance<\/li>\n<li><strong>Cache transparency<\/strong>: Added performance comments to cached HTML files with timestamp and host info<\/li>\n<li><strong>WooCommerce support<\/strong>: Automatic cache clearing for orders, stock updates, and product changes<\/li>\n<li><strong>Generic e-commerce support<\/strong>: Works with any plugin using product post types<\/li>\n<li><strong>Webshop optimization<\/strong>: Handles large product overview pages efficiently<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Enhanced caching logic with HTTP status code validation<\/li>\n<li>Skip caching for redirects (3xx status codes)<\/li>\n<li>Skip caching for most error responses (except 403 and 404)<\/li>\n<li>Skip caching for pages smaller than 1KB (likely empty\/error pages)<\/li>\n<li>Added automatic drop-in regeneration after plugin updates<\/li>\n<li>Implemented secure random filename for settings file (unguessable)<\/li>\n<li>Improved version tracking and update detection<\/li>\n<li>Updated tested up to WordPress 6.8<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Bug fixes and improvements<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: simple page cache with automatic e-commerce detection.<\/li>\n<\/ul>","raw_excerpt":"Simple, blazing fast static page cache for WordPress. Caches HTML for non-logged-in users with intelligent cache clearing for e-commerce sites.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/244165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=244165"}],"author":[{"embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/peterarends"}],"wp:attachment":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=244165"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=244165"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=244165"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=244165"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=244165"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=244165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}