=== Simple Page Cache === Contributors: peterarends Tags: cache, performance, static, woocommerce, edd Requires at least: 5.0 Tested up to: 6.8 Stable tag: 1.0.3 License: GPLv2 or later Simple, blazing fast static page cache for WordPress. Caches HTML for non-logged-in users with intelligent cache clearing for e-commerce sites. == Description == **Simple Page Cache** 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. **Main features:** - Caching for non-logged-in users (GET requests only) - Cache files are stored in `/wp-content/cache/simple-page-cache/` - Drop-in (`advanced-cache.php`) for maximum speed before WordPress loads - **Automatic cache clearing** when posts/pages are updated - **E-commerce integration** with intelligent cache clearing for: - WooCommerce (orders, stock updates, product changes) - Easy Digital Downloads (purchases, download updates) - BigCommerce for WordPress (product updates) - Generic e-commerce plugins (product post types) - Automatic detection of dynamic pages (cart, checkout, account, wishlist) for: - WooCommerce - BigCommerce for WordPress - Easy Digital Downloads - iThemes Exchange - Jigoshop - WP-Shop - Detected dynamic pages are automatically excluded from caching - Manual cache clearing via admin bar button - Performance comments in cached HTML files - No complex settings, no database writes == Installation == 1. Upload the plugin to the `/wp-content/plugins/simple-page-cache/` directory. 2. Activate the plugin through the WordPress plugins screen. 3. Upon activation: - The cache directory is created (`/wp-content/cache/simple-page-cache/`). - The drop-in `advanced-cache.php` is placed in `/wp-content/`. - `define('WP_CACHE', true);` is automatically added to `wp-config.php` (or replaced if it already exists). == How it works == - For every non-logged-in visitor and every GET request, a static HTML file is created and served. - 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. - The list of excluded pages is automatically maintained in a file in the cache directory. - **Automatic cache clearing**: When posts or pages are updated, the plugin scans all cached HTML files and removes any that contain links to the updated content. This ensures visitors always see fresh content. - **E-commerce integration**: 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). - **Performance comments**: Each cached HTML file includes a comment with timestamp and host information for debugging and transparency. == Clearing the cache == - Click the "Clear Page Cache" button in the admin bar (visible to administrators only) to remove all cache files. == Deactivation == - When deactivating the plugin: - The drop-in `advanced-cache.php` is removed. - The `define('WP_CACHE', true);` line (if placed by this plugin) is removed from `wp-config.php`. == Frequently Asked Questions == = Are pages automatically removed from the cache? = 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. = Can I manually exclude pages? = The plugin automatically detects most dynamic e-commerce pages. Manual exclusion is not possible without editing code. = Does this work with other cache plugins? = Always use only one page cache plugin/drop-in at a time. = How does the automatic cache clearing work? = 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. = What happens when a product goes out of stock? = 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. == Changelog == = 1.0.3 = * **Automatic cache clearing**: Cache is now automatically cleared when posts/pages are updated * **E-commerce integration**: Added intelligent cache clearing for WooCommerce, Easy Digital Downloads, and BigCommerce * **HTML content scanning**: Implements precise cache clearing by scanning HTML content for URLs * **Performance optimization**: File size filtering and optimized scanning for better performance * **Cache transparency**: Added performance comments to cached HTML files with timestamp and host info * **WooCommerce support**: Automatic cache clearing for orders, stock updates, and product changes * **Generic e-commerce support**: Works with any plugin using product post types * **Webshop optimization**: Handles large product overview pages efficiently = 1.0.2 = * Enhanced caching logic with HTTP status code validation * Skip caching for redirects (3xx status codes) * Skip caching for most error responses (except 403 and 404) * Skip caching for pages smaller than 1KB (likely empty/error pages) * Added automatic drop-in regeneration after plugin updates * Implemented secure random filename for settings file (unguessable) * Improved version tracking and update detection * Updated tested up to WordPress 6.8 = 1.0.1 = * Bug fixes and improvements = 1.0.0 = * First release: simple page cache with automatic e-commerce detection.