=== Speedy Go === Contributors: codeandcore Tags: caching, optimization, performance, minification, compression Requires at least: 5.0 Tested up to: 7.0 Requires PHP: 7.2 Stable tag: 2.1.9 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Optimize your WordPress site with advanced caching, minification, and performance tools for faster loading. == Description == Speedy Go is an all-in-one performance plugin for WordPress, designed to optimize every aspect of your site's speed and efficiency. It features full-page caching, HTML/CSS/JS minification and combination, browser and object caching, Gzip & Brotli compression, lazy loading, mobile-specific caching, cache preloading, scheduled expiration, and advanced cache rules. == Major Features & Functions == **Caching & Performance** - **Full-Page Caching**: Cache entire pages for instant delivery, with options for cache expiry, exclusions, and auto-purge. - **Cache Expiry & Auto Purge**: Set cache expiration rules and automatically purge outdated cache files. - **Exclude URLs**: Define URLs to be excluded from caching. - **Browser Caching**: Leverage browser cache to reduce load times. - **Object Caching**: Speed up dynamic content using object cache and transients. - **Database Query Caching**: Optimize repeated database queries. - **Mobile Caching**: Serve optimized cache for mobile users. - **Cache Preloading & Warm-Up**: Automatically preload and warm up cache for improved response times. - **Scheduled Expiration**: Automate cache expiration to keep content fresh. - **Advanced Cache Rules**: Fine-tune caching with advanced rules and exclusions. **Asset Optimization** - **HTML Minification**: Reduce HTML file size for faster rendering. - **CSS & JS Minification**: Minify and combine CSS and JavaScript files for optimal delivery. - **CSS & JS Combination**: Combine multiple CSS/JS files to reduce HTTP requests. - **Exclude CSS/JS Files**: Exclude specific files from minification or combination. - **Gzip & Brotli Compression**: Compress files for improved speed. **User Experience & Admin Tools** - **Lazy Loading**: Defer offscreen images for faster initial page loads. - **Admin Dashboard Widget**: Monitor cache status from the dashboard. - **Debug Tools & Logging**: Advanced debug logging and error tracking for troubleshooting. - **User-Friendly Admin Interface**: Modern, easy-to-use settings and management screens, including tabs for General, Advanced, and System Info. - **Admin Bar Integration**: Quick access to cache purging, optimization presets, and settings from the admin bar. - **Settings API Integration**: All options are managed via the WordPress Settings API for reliability and security. - **AJAX Bulk Actions**: All bulk actions and progress checks are handled via secure AJAX endpoints. **Advanced & Developer Features** - **Custom Cron Schedules**: Register and use custom cron intervals for cache processing. - **System Info Tab**: View server and plugin environment details (PHP version, GD/Imagick support, disk space, etc). - **Logging**: Optionally enable detailed logging of batch progress and failures to a log file. - **Uninstall Cleanup**: On uninstall, all plugin-created cache and database tables are removed. == Installation == 1. Upload the plugin files to `/wp-content/plugins/speedy-go` or install via the WordPress plugins screen. 2. Activate the plugin through the 'Plugins' screen in WordPress. 3. Go to **Settings → Speedy Go** to configure caching and optimization settings. == Usage == * Enable/disable features as needed from the settings page. * Monitor progress and logs from the dashboard widget and debug tools. * Use the admin bar for quick cache purging, applying an optimization preset, and access to settings. == Frequently Asked Questions == = Does this plugin require special server configuration? = No, Speedy Go works with standard WordPress installations. For best results, use PHP 7.2+. = Can I exclude specific files or URLs from caching or minification? = Yes, you can define exclusions for caching, minification, and combination in the settings. == Screenshots == 1. Plugin Dashboard: Plugin connection screen. 2. Plugin Dashboard: View performance improvements and enable intelligent caching with one click. 3. Plugin Connection: Connect your website and activate SpeedyGo optimization in seconds. == Changelog == = 2.1.9 = * New: Apply optimization presets (Starter, Moderate, Extensive) directly from the WordPress admin bar. Hover the SpeedyGo item, choose a preset, and it configures all your settings, purges the cache, and shows a live progress timeline — your choice also syncs to the SpeedyGo dashboard, so there is no need to open the dashboard. * Fix: Some connected sites were being automatically disconnected roughly a day after activation. License verification now disconnects a site only when its subscription is genuinely cancelled or expired (confirmed over several days). A signature or key mismatch, a host without the PHP sodium extension, a timeout, or any other temporary/technical error can no longer disconnect a working site — the plugin stays connected and simply retries. * Fix: Scheduled cache tasks that appeared as "Unknown schedule" with no action in cron tools (e.g. WP Crontrol) are now always registered correctly and clean themselves up when their feature is turned off, so no orphaned events remain. * Fix: Editing or updating a post now reliably clears that page's cached copy. * New: Home-page image-optimization (WebP) savings are measured and reported to your SpeedyGo dashboard. * Improvement: Faster cache delivery — cached pages are stored pre-compressed (no per-request gzip), and the main above-the-fold image is prioritized (fetchpriority) for a quicker Largest Contentful Paint. After a purge or edit, visitors are served the previous cached page while the new one rebuilds in the background. * Improvement: Add ?nospeedygo to any URL to view the page with all SpeedyGo optimizations bypassed for that request (handy for support and debugging). * Compatibility: Tested with WordPress 7.0 and PHP 8.x. = 2.1.8 = * New: Serves cache before WordPress fully loads (big TTFB win), with auto-rollback safety. = 2.1.7 = * Fix: Button linking and some design fixes. = 2.1.6 = * New: Added API detection to automatically notify users if another caching plugin is active, preventing conflicts. * Enhancement: Redesigned the admin connection page with a modern UI and manual connection fallback form. * Enhancement: Added active and hover state styling for the SpeedyGo admin menu. * Enhancement: Made the admin connection page WPML translation ready. * Cleanup: Removed unused promo banners and background images to reduce plugin footprint. = 2.1.5 = * Fix: Removed a temporary debug block from the license validation flow that could leak raw database details (table name, query counts) inside the "Invalid license key" error shown on the Connect page. Added a safety net so debug output can never reach a customer's screen again, even from a future server-side regression. * Fix: font-display: swap now correctly overrides an existing bad value (e.g. font-display: block or auto) shipped in a theme or third-party plugin's own font CSS, instead of only applying when the property was missing entirely. Previously, a theme icon font or a service like Font Awesome that already set font-display: block would keep that value untouched, leaving the PageSpeed "Font display" warning in place even with this setting enabled. * Fix: Resolved "Mixed Content" errors that could block the plugin's own generated CSS, JS, and WebP images on sites running behind a reverse proxy or CDN that terminates SSL upstream of the server (e.g. Cloudflare, a load balancer). Cache URLs are now correctly generated as https when the site is actually served over https, even when WordPress's own SSL detection is inconclusive. = 2.1.4 = * Fix: When both Gzip/Brotli compression and "Defer JS" were enabled at the same time, the defer attribute was silently never added to any script tag. Root cause: compression ran first, converting the HTML to binary bytes, then the defer pass couldn't find any `