Specifications

  • Stable tag: 141110
  • Requires at least: 3.7
  • Tested up to: 4.0
  • Text Domain: quick-cache
  • License: GPLv2 or later
  • License URI: http://www.gnu.org/licenses/gpl-2.0.html
  • Contributors: WebSharks, JasWSInc, raamdev, anguz
  • Donate link: http://www.websharks-inc.com/r/wp-theme-plugin-donation/
  • Tags: cache, quick cache, quick-cache, quickcache, speed, performance, loading, generation, execution, benchmark, benchmarking, debug, debugging, caching, cash, caching, cacheing, super cache, advanced cache, advanced-cache, wp-cache, wp cache, options panel included, websharks framework, w3c validated code, includes extensive documentation, highly extensible

Speed up your site (BIG time!) — Quick Cache provides reliable page caching for WordPress. Easy-to-use (very simple installation).

If you care about the speed of your site, Quick Cache is one of those plugins that you absolutely MUST have installed :-) Quick Cache takes a real-time snapshot (building a cache) of every Page, Post, Category, Link, etc. These snapshots are then stored (cached) intuitively, so they can be referenced later, in order to save all of that processing time that has been dragging your site down and costing you money.

The Quick Cache plugin uses configuration options that you select from the options panel. See: Quick Cache -› Options in your Dashboard. Once a file has been cached, Quick Cache uses advanced techniques that allow it to recognize when it should and should not serve a cached version of the file. By default, Quick Cache does not serve cached pages to users who are logged in, or to users who have left comments recently. Quick Cache also excludes administrative pages, login pages, POST/PUT/DELETE/GET(w/ query string) requests and/or CLI processes.

Features

  • SIMPLE and well-documented configuration (just enable and you're all set!).
  • The ability to set an automatic expiration time for cache files.
  • Client-Side Caching (to allow double-caching in the client-side browser).
  • Caching for 404 requests to reduce the impact of those requests on the server.
  • RSS, RDF, and Atom Feed caching.
  • The ability to cache or ignore URLs that contain query strings (GET Requests).
  • An Advanced Cache Plugin system for theme and plugin developers.

Pro Features

  • The ability to cache logged-in users too! (VERY powerful, particularly for membership sites).
  • A new improved "Clear Cache" button in the admin bar (along with an option to enable/disable this feature).
  • The ability to disable Dashboard notifications related to automatic clearing/purging on change detections.
  • The ability to clear Markdown-related cache files generated by the s2Clean theme for WordPress (if installed).
  • Import/Export functionality for Quick Cache configuration files.
  • URI exclusion patterns (now supporting wildcards too).
  • User-Agent exclusion patterns (now supporting wildcards too).
  • HTTP referrer exclusion patterns (now supporting wildcards too).
  • A Dynamic Version Salt (customize the caching engine).
  • HTML Compressor to automatically combine and compresses CSS/JS/HTML code.
  • Auto-Cache Engine to pre-cache your site at 15-minute intervals.
  • An Automatic Updater to update Quick Cache Pro from your WordPress Dashboard.
  • Rockstar support for all Quick Cache features.

TIP: you can preview Pro features in the free version by clicking the "Preview Pro Features" link at the top of your Quick Cache options.

Quick Tip: WordPress® can only deal with one cache plugin being activated at a time. Please uninstall any existing cache plugins that you've tried in the past. In other words, if you've installed W3 Total Cache, WP Super Cache, DB Cache Reloaded, or any other caching plugin, uninstall them all before installing Quick Cache. One way to check, is to make sure this file: wp-content/advanced-cache.php and/or wp-content/object-cache.php are NOT present; and if they are, delete these files BEFORE installing Quick Cache. Those files will only be present if you have a caching plugin already installed. If you don't see them, you're ready to install Quick Cache :-).

Quick Cache is Very Easy to Install

  1. Upload the /quick-cache folder to your /wp-content/plugins/ directory.
  2. Activate the plugin through the Plugins menu in WordPress®.
  3. Navigate to the Quick Cache panel & enable it.

How will I know Quick Cache is Working?

First of all, make sure that you've enabled Quick Cache. After you activate the plugin in WordPress, go to the Quick Cache options panel and enable caching (you can't miss the big yellow checkbox). Then scroll to the bottom and click Save All Changes. All of the other options on that page are already pre-configured for typical usage. Skip them all for now. You can go back through all of these later and fine-tune things the way you like them.

Once Quick Cache has been enabled, you'll need to log out (and/or clear browser cookies). Cache files are NOT served to visitors who are logged in, and that includes you too :-) Cache files are NOT served to recent commenters either. If you've commented (or replied to a comment lately); please clear your browser cookies before testing.

To verify that Quick Cache is working, navigate your site like a normal visitor would. Right-click on any page (choose View Source), then scroll to the very bottom of the document. At the bottom, you'll find comments that show Quick Cache stats and information. You should also notice that page-to-page navigation is lightning fast compared to what you experienced prior to installing Quick Cache.

Running Quick Cache On A WordPress® Multisite Installation

WordPress® Multisite Networking is a special consideration in WordPress®. If Quick Cache is installed under a Multisite Network installation, it will be enabled for ALL blogs the same way. The centralized config options for Quick Cache, can only be modified by a Super Administrator operating on the main site. Quick Cache has internal processing routines that prevent configuration changes, including menu displays; for anyone other than a Super Administrator operating on the main site.

EMERGENCY: If All Else Fails (How-To Remove Quick Cache)

Ordinarily you can just deactivate Quick Cache from the plugins menu in WordPress. However, if you're having a more serious issue, please follow the instructions here.

  1. Log into your site via FTP; perhaps using FileZilla.
  2. Delete this file: /wp-content/advanced-cache.php
  3. Delete this directory: /wp-content/plugins/quick-cache/
  4. Remove this line from your /wp-config.php file: define('WP_CACHE', TRUE);

Quick Cache is now completely uninstalled and you can start fresh :-)

How do I know that Quick Cache is working the way it should be?

First of all, make sure that you've enabled Quick Cache. After you activate the plugin, go to the Quick Cache options panel and enable it, then scroll to the bottom and click Save All Changes. All of the other options on that page are already pre-configured for typical usage. Skip them all for now. You can go back through all of them later and fine-tune things the way you like them.

Once Quick Cache has been enabled, you'll need to log out (and/or clear browser cookies). Cache files are NOT served to visitors who are logged in, and that includes you too :-) Cache files are NOT served to recent commenters either. If you've commented (or replied to a comment lately); please clear your browser cookies before testing.

To verify that Quick Cache is working, navigate your site like a normal visitor would. Right-click on any page (choose View Source), then scroll to the very bottom of the document. At the bottom, you'll find comments that show Quick Cache stats and information. You should also notice that page-to-page navigation is lightning fast compared to what you experienced prior to installing Quick Cache.

What is the down side to running Quick Cache?

There is NOT one! Quick Cache is a MUST HAVE for every WordPress® powered site. In fact, we really can't think of any site running WordPress® that would want to be without it. To put it another way, the WordPress® software itself comes with a built in action reference for an advanced-cache.php file, because WordPress® developers realize the importance of such as plugin. The /wp-content/advanced-cache.php file is named as such, because the WordPress® developers expect it to be there when caching is enabled by a plugin. If you don't have the /wp-content/advanced-cache.php file yet, it is because you have not enabled Quick Cache from the options panel yet.

So why does WordPress® need to be cached?

To understand how Quick Cache works, first you have to understand what a cached file is, and why it is absolutely necessary for your site and every visitor that comes to it. WordPress® (by its very definition) is a database-driven publishing platform. That means you have all these great tools on the back-end of your site to work with, but it also means that every time a Post/Page/Category is accessed on your site, dozens of connections to the database have to be made, and literally thousands of PHP routines run in harmony behind-the-scenes to make everything jive. The problem is, for every request that a browser sends to your site, all of these routines and connections have to be made (yes, every single time). Geesh, what a waste of processing power, memory, and other system resources. After all, most of the content on your site remains the same for at least a few minutes at a time. If you've been using WordPress® for very long, you've probably noticed that (on average) your site does not load up as fast as other sites on the web. Now you know why!

In computer science, a cache (pronounced /kash/) is a collection of data duplicating original values stored elsewhere or computed earlier, where the original data is expensive to fetch (owing to longer access time) or to compute, compared to the cost of reading the cache. In other words, a cache is a temporary storage area where frequently accessed data can be stored for rapid access. Once the data is stored in the cache, it can be used in the future by accessing the cached copy rather than re-fetching or recomputing the original data.

Where & why are the cache files stored on my server?

The cache files are stored in a special directory: /wp-content/cache/quick-cache. This directory needs to remain writable, just like the /wp-content/uploads directory on many WordPress® installations. The /quick-cache/cache directory is where cache files reside. These files are stored using an intutive directory structure that named based on the request URL (HTTPS/HTTP_HOST/REQUEST_URI). See also: Dashboard -› Quick Cache -› Cache Directory/Expiration Time for further details.

Whenever a request comes in from someone on the web, Quick Cache checks to see if it can serve a cached file; e.g. it looks at the HTTPS/HTTP_HOST/REQUEST_URI environent variables, then it checks the /quick-cache/cache directory. If a cache file has been built already, and it matches an existing HTTPS.HTTP_HOST.REQUEST_URI combination; and it is not too old (see: Dashboard -› Quick Cache -› Cache Directory/Expiration Time), then it will serve that file instead of asking WordPress® to regenerate it. This adds tremendous speed to your site and reduces server load.

If you have GZIP compression enabled, then the cache file is also sent to the browser with compression (recommended). Modern web browsers that support this technique will definitely take advantage of it. After all, if it is easier to email a zip file, it's also easier to download a web page that way. That is why on-the-fly GZIP compression for web pages is recommended. This is supported by all modern browsers.

If you want to enable GZIP, create an .htaccess file in your WordPress® installation directory and put the following few lines in it. Alternatively, if you already have an .htaccess file, just add these lines to it, and that is all there is to it. GZIP is now enabled!

<IfModule deflate_module>
    <IfModule filter_module>
        AddOutputFilterByType DEFLATE text/plain text/html
        AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml application/xml-dtd
        AddOutputFilterByType DEFLATE application/rdf+xml application/rss+xml application/atom+xml image/svg+xml
        AddOutputFilterByType DEFLATE text/css text/javascript application/javascript application/x-javascript
        AddOutputFilterByType DEFLATE font/otf font/opentype application/font-otf application/x-font-otf
        AddOutputFilterByType DEFLATE font/ttf font/truetype application/font-ttf application/x-font-ttf
    </IfModule>
</IfModule>

If your installation of Apache does not have mod_deflate installed. You can also enable GZIP compression using PHP configuration alone. In your php.ini file, you can simply add the following line anywhere: zlib.output_compression = on

What happens if a user logs in? Are cache files used then?

By default, Quick Cache does NOT serve cached pages to users who are logged in, or to users who have left comments recently. Quick Cache also excludes administrative pages, login pages, POST/PUT/DELETE/GET(w/ query string) requests and/or CLI processes. That being said, the Pro version of Quick Cache DOES make it possible to cache pages even when users ARE logged-in; adding even more speed! This is particularly helpful on membership sites; e.g. sites that run plugins like s2Member™ for instance.

Will comments and other dynamic parts of my blog update immediately?

It depends on your configuration of Quick Cache. There is an automatic expiration system (the garbage collector), which runs through WordPress® behind-the-scene, according to your Expiration setting (see: Dashboard -› Quick Cache -› Cache Directory/Expiration Time). There is also a built-in expiration time on existing files that is checked before any cache file is served up, which also uses your Expiration setting. In addition; whenever you update a Post or a Page, Quick Cache can automatically prune that particular file from the cache so it instantly becomes fresh again. Otherwise, your visitors would need to wait for the previous cached version to expire.

By default, Quick Cache does NOT serve cached pages to users who are logged in, or to users who have left comments recently. Quick Cache also excludes administrative pages, login pages, POST/PUT/DELETE/GET(w/ query string) requests and/or CLI processes.

How do I enable GZIP compression? Is GZIP supported?

There is no need to use an .htaccess file with this plugin; caching is handled by WordPress®/PHP alone. That being said, if you also want to take advantage of GZIP compression (and we do recommend this), then you WILL need an .htaccess file to accomplish that part. This plugin fully supports GZIP compression on its output. However, it does not handle GZIP compression directly. We purposely left GZIP compression out of this plugin, because GZIP compression is something that should really be enabled at the Apache level or inside your php.ini file. GZIP compression can be used for things like JavaScript and CSS files as well, so why bother turning it on for only WordPress-generated pages when you can enable GZIP at the server level and cover all the bases!

If you want to enable GZIP, create an .htaccess file in your WordPress® installation directory and put the following few lines in it. Alternatively, if you already have an .htaccess file, just add these lines to it, and that is all there is to it. GZIP is now enabled!

<IfModule deflate_module>
    <IfModule filter_module>
        AddOutputFilterByType DEFLATE text/plain text/html
        AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml application/xml-dtd
        AddOutputFilterByType DEFLATE application/rdf+xml application/rss+xml application/atom+xml image/svg+xml
        AddOutputFilterByType DEFLATE text/css text/javascript application/javascript application/x-javascript
        AddOutputFilterByType DEFLATE font/otf font/opentype application/font-otf application/x-font-otf
        AddOutputFilterByType DEFLATE font/ttf font/truetype application/font-ttf application/x-font-ttf
    </IfModule>
</IfModule>

If your installation of Apache does not have mod_deflate installed. You can also enable gzip compression using PHP configuration alone. In your php.ini file, you can simply add the following line anywhere: zlib.output_compression = on

I'm a plugin developer. How can I prevent certain files from being cached?

<?php
define('QUICK_CACHE_ALLOWED', FALSE); // The easiest way.
// or $_SERVER['QUICK_CACHE_ALLOWED'] = FALSE; // Also very easy.
// or define('DONOTCACHEPAGE', TRUE); // For compatibility with other cache plugins.

When your script finishes execution, Quick Cache will know that it should NOT cache that particular page. It does not matter where or when you define this Constant; e.g. define('QUICK_CACHE_ALLOWED', FALSE); because Quick Cache is the last thing to run during execution. So as long as you define this Constant at some point in your routines, everything will be fine.

Quick Cache also provides support for define('DONOTCACHEPAGE', TRUE), which is used by the WP Super Cache plugin as well. Another option is: $_SERVER['QUICK_CACHE_ALLOWED'] = FALSE. The $_SERVER array method is useful if you need to disable caching at the Apache level using mod_rewrite. The $_SERVER array is filled with all environment variables, so if you use mod_rewrite to set the QUICK_CACHE_ALLOWED environment variable, that will end up in $_SERVER['QUICK_CACHE_ALLOWED']. All of these methods have the same end result, so it's up to you which one you'd like to use.

What should my expiration setting be?

If you don't update your site much, you could set this to 6 months; optimizing everything even further. The longer the cache expiration time is, the greater your performance gain. Alternatively, the shorter the expiration time, the fresher everything will remain on your site. A default value of 7 days (recommended expiration time), is a good conservative middle-ground.

Keep in mind that your expiration setting is only one part of the big picture. Quick Cache will also purge the cache automatically as changes are made to the site (i.e. you edit a post, someone comments on a post, you change your theme, you add a new navigation menu item, etc., etc.). Thus, your expiration time is really just a fallback; e.g. the maximum amount of time that a cache file could ever possibly live.

That being said, you could set this to just 60 seconds and you would still see huge differences in speed and performance. If you're just starting out with Quick Cache (perhaps a bit nervous about old cache files being served to your visitors); you could set this to something like 30 minutes and experiment with it while you build confidence in Quick Cache. It's not necessary, but many site owners have reported this makes them feel like they're more-in-control when the cache has a short expiration time. All-in-all, it's a matter of preference :-)

EMERGENCY: If all else fails, how can I remove Quick Cache?

Ordinarily you can just deactivate Quick Cache from the plugins menu in WordPress. However, if you're having a more serious issue, please follow the instructions here.

  1. Log into your site via FTP; perhaps using FileZilla.
  2. Delete this file: /wp-content/advanced-cache.php
  3. Delete this directory: /wp-content/plugins/quick-cache/
  4. Remove this line from your /wp-config.php file: define('WP_CACHE', TRUE);

Quick Cache is now completely uninstalled and you can start fresh :-)

So Why Does WordPress® Need To Be Cached?

To understand how Quick Cache works, first you have to understand what a cached file is, and why it is absolutely necessary for your site and every visitor that comes to it. WordPress® (by its very definition) is a database-driven publishing platform. That means you have all these great tools on the back-end of your site to work with, but it also means that every time a Post/Page/Category is accessed on your site, dozens of connections to the database have to be made, and literally thousands of PHP routines run in harmony behind-the-scenes to make everything jive. The problem is, for every request that a browser sends to your site, all of these routines and connections have to be made (yes, every single time). Geesh, what a waste of processing power, memory, and other system resources. After all, most of the content on your site remains the same for at least a few minutes at a time. If you've been using WordPress® for very long, you've probably noticed that (on average) your site does not load up as fast as other sites on the web. Now you know why!

The Definition Of A Cached File (from the Wikipedia)

In computer science, a cache (pronounced /kash/) is a collection of data duplicating original values stored elsewhere or computed earlier, where the original data is expensive to fetch (owing to longer access time) or to compute, compared to the cost of reading the cache. In other words, a cache is a temporary storage area where frequently accessed data can be stored for rapid access. Once the data is stored in the cache, it can be used in the future by accessing the cached copy rather than re-fetching or recomputing the original data.

Prepare To Be Amazed / It's Time To Speed Things Up

Quick Cache is extremely reliable, because it runs completely in PHP code, and does not hand important decisions off to the mod_rewrite engine or browser cache; also making Quick Cache MUCH easier to setup and configure.

In addition, Quick Cache actually sends a no-cache header (yes, a no-cache header); which allows it to remain in control at all times. It might seem weird that a caching plugin would send a no-cache header :-). Well, no-cache headers are a key component in this plugin, and they will NOT affect performance negatively. On the contrary, this is how the system can accurately serve cache files to public users vs. users who are logged-in, commenters, etc.

If you care about the speed of your site, Quick Cache is one of those plugins that you absolutely MUST have installed :-) Quick Cache takes a real-time snapshot (building a cache) of every Page, Post, Category, Link, etc. These snapshots are then stored (cached) intuitively, so they can be referenced later, in order to save all of that processing time that has been dragging your site down and costing you money.

The Quick Cache plugin uses configuration options that you select from the options panel. See: Quick Cache -› Options in your Dashboard. Once a file has been cached, Quick Cache uses advanced techniques that allow it to recognize when it should and should not serve a cached version of the file. By default, Quick Cache does not serve cached pages to users who are logged in, or to users who have left comments recently. Quick Cache also excludes administrative pages, login pages, POST/PUT/DELETE/GET(w/ query string) requests and/or CLI processes.

Running Quick Cache On A WordPress® Multisite Installation

WordPress® Multisite Networking is a special consideration in WordPress®. If Quick Cache is installed under a Multisite Network installation, it will be enabled for ALL blogs the same way. The centralized config options for Quick Cache, can only be modified by a Super Administrator operating on the main site. Quick Cache has internal processing routines that prevent configuration changes, including menu displays; for anyone other than a Super Administrator operating on the main site.

How To Enable GZIP Compression for Even Greater Speeds

You don't have to use an .htaccess file to enjoy the performance enhancements provided by this plugin; caching is handled by WordPress®/PHP alone. That being said, if you want to take advantage of GZIP compression (and we do recommend this), then you WILL need an .htaccess file to accomplish that part. This plugin fully supports GZIP compression on its output. However, it does not handle GZIP compression directly. We purposely left GZIP compression out of this plugin, because GZIP compression is something that should really be enabled at the Apache level or inside your php.ini file. GZIP compression can be used for things like JavaScript and CSS files as well, so why bother turning it on for only WordPress-generated pages when you can enable GZIP at the server level and cover all the bases!

If you want to enable GZIP, create an .htaccess file in your WordPress® installation directory and put the following few lines in it. Alternatively, if you already have an .htaccess file, just add these lines to it, and that is all there is to it. GZIP is now enabled!

<IfModule deflate_module>
    <IfModule filter_module>
        AddOutputFilterByType DEFLATE text/plain text/html
        AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml application/xml-dtd
        AddOutputFilterByType DEFLATE application/rdf+xml application/rss+xml application/atom+xml image/svg+xml
        AddOutputFilterByType DEFLATE text/css text/javascript application/javascript application/x-javascript
        AddOutputFilterByType DEFLATE font/otf font/opentype application/font-otf application/x-font-otf
        AddOutputFilterByType DEFLATE font/ttf font/truetype application/font-ttf application/x-font-ttf
    </IfModule>
</IfModule>

If your installation of Apache does not have mod_deflate installed. You can also enable GZIP compression using PHP configuration alone. In your php.ini file, you can simply add the following line anywhere: zlib.output_compression = on

EMERGENCY: If All Else Fails (How-To Remove Quick Cache)

Ordinarily you can just deactivate Quick Cache from the plugins menu in WordPress. However, if you're having a more serious issue, please follow the instructions here.

  1. Log into your site via FTP; perhaps using FileZilla.
  2. Delete this file: /wp-content/advanced-cache.php
  3. Delete this directory: /wp-content/plugins/quick-cache/
  4. Remove this line from your /wp-config.php file: define('WP_CACHE', TRUE);

Quick Cache is now completely uninstalled and you can start fresh :-)

Quick Cache Pro Features

  • The ability to cache logged-in users too! (VERY powerful, particularly for membership sites).
  • A new improved "Clear Cache" button in the admin bar (along with an option to enable/disable this feature).
  • The ability to disable Dashboard notifications related to automatic clearing/purging on change detections.
  • The ability to clear Markdown-related cache files generated by the s2Clean theme for WordPress (if installed).
  • Import/Export functionality for Quick Cache configuration files.
  • URI exclusion patterns (now supporting wildcards too).
  • User-Agent exclusion patterns (now supporting wildcards too).
  • HTTP referrer exclusion patterns (now supporting wildcards too).
  • A Dynamic Version Salt (customize the caching engine).
  • HTML Compressor to automatically combine and compresses CSS/JS/HTML code.
  • Auto-Cache Engine to pre-cache your site at 15-minute intervals.
  • An Automatic Updater to update Quick Cache Pro from your WordPress Dashboard.
  • Rockstar support for all Quick Cache features.

TIP: you can preview Pro features in the free version by clicking the "Preview Pro Features" link at the top of your Quick Cache options.

Quick Cache Pro is a wholly contained plugin that does not require Quick Cache Lite to be installed. To install Quick Cache Pro,

  1. Deactivate and delete Quick Cache Lite, if it is currently installed
  2. Download Quick Cache Pro from your account at WebSharks-Inc.com
  3. From your WordPress Dashboard, go to Dashboard -> Plugins -> Add New and then click on the Upload Plugin button at the top
  4. Select the Quick Cache Pro zip file you downloaded in step 2 and click "Install Now"
  5. After the plugin finishes installing, click the "Activate Plugin" link

Once the plugin is active, you can go to Dashboard -> Quick Cache -> Plugin Options -> Enable/Disable and Enable Quick Cache.

Also, to stay updated with the latest version of Quick Cache Pro, be sure to also configure Dashboard -> Quick Cache -> Plugin Updater.

In addition to the WordPress Requirements, Quick Cache requires the following minimum versions:

  • PHP 5.3+
  • Apache 2.1+

Copyright: © 2013 WebSharks, Inc. (coded in the USA)

Released under the terms of the GNU General Public License.

Credits / Additional Acknowledgments

v140104

Requires PHP v5.3+. The latest version of Quick Cache is a complete rewrite (OOP design). Faster! and even more dependable. NOTE: the free version of Quick Cache (this new LITE version); while it remains fully functional and is more-than-adequate for most sites; is now limited in some ways. The following advanced features from the previous release are no longer available in the lite version: a custom MD5 Version Salt, custom Exclusion Patterns, a Clear Cache button in admin bar. These, and other features; are now available only in the pro version of the plugin. For further details, please see: http://www.websharks-inc.com/product/quick-cache/.

v141110

  • Quick Cache is changing its name to ZenCache! See the blog post for full details.
  • Enhancement: All dashboard notices will now include the number of files cleared for each notice. Props @jaswsinc. See #351.
  • Enhancement: Quick Cache is now capable of doing atomic clearing/purging/wiping. On a Multisite network, this is now accomplished on a blog-specific basis, without needing to scan the entire network-wide cache directory. This should improve performance considerably on large networks (i.e. those with VERY large cache directories). Props @jaswsinc. See #288 and #351.
  • Enhancement: Added a new class file (/includes/utils-feed.php) and refactored the XML feed clearing routine. With these utilities in place, the auto_clear_xml_feeds_cache() method is now much easier to deal with and comprehend. Props @jaswsinc. See #351.
  • Enhancement: Quick Cache now scans each scheme sub-directory, i.e. /http/ and /https/, separately to help break apart what was previously a much larger directory scan for sites that serve pages over both schemes. This will improve performance on both standard and Multisite network installs. See #351.
  • Enhancement: Refactored codebase to improve modularity by creating new methods in includes/share.php for network-wide clearing/purging/wiping, host/blog-specific clearing/purging/wiping, recursively deleting a directory, assisting in translations, and several new string utilities. Props @jaswsinc. See #351.
  • Enhancement: Renamed all \quick_cache\plugin::auto_purge_* methods, giving them the proper prefix of auto_clear_* instead to reflect proper Wipe/Clear/Purge terminology. Along with this, all of the auto_purge_ option keys have been renamed as well. See new Wipe/Clear/Purge wiki article for a description of these terms. Props @jaswsinc. See #351.
  • Enhancement: All URI and Referrer exclusion patterns are now caSe insensitive. WordPress v4.0 will serve URIs without cAse sensitivity. All of the Quick Cache codebase has been updated to support caSe insensitive clearing/purging/wiping; along with caSe insensitive pattern matching against URIs. Props @jaswsinc. See #351.
  • Bug Fix (Pro): Fixed a bug with the Auto-Clear Author Cache routine that was presenting dashboard notices even when change_notifications_enable was off. Props @jaswsinc. See #351.
  • Bug Fix (Pro): Fixed a bug with the HTML Compressor where style, link and/or script tags could become out of order in certain scenarios. See: #45
  • Bug Fix (Pro): Several HTML Compressor bug fixes related to JavaScript compression routines. See #38
  • Bug Fix: Fixed a bug that was occasionally generating "Fatal Error: 'Unable to clear dir'" messages. The root cause of this is believed to be non-atomic purging of cache directories which, on a busy site, could result in new cache files being created before a purging routine was finished clearing the directory. Clearing/purging/wiping is now atomic in all scenarios. Props @jaswsinc. See #288 and #351.
  • Bug Fix: Fixed a bug in the Auto-Clear Custom Post Type Archive Cache that was not checking for the $post_id in $this->static[__FUNCTION__]. Props @jaswsinc. See #351.
  • Bug Fix: Fixed a bug with the uninstaller whereby attempting to uninstall after receiving a notice that PHP 5.3+ is required would result in a blank screen and require manual removal of the plugin. See #334.
  • Bug Fix: Fixed an issue with detecting cacheable requests that was, in rare instances, resulting in blank white pages for some site owners. See #279.

v141001

  • Enhancement: Improved Dashboard messaging for the auto_clear_cache() routine. See #328.
  • Enhancement (Pro): Improved consistency of Auto-Cache Engine User-Agent string by removing WordPress-version-specific identifier. See #315.
  • Enhancement (Pro): It is now possible to disable the automatic clear and wipe cache routines. If you have a very large site with many cache files, this feature allows you manual control over when the cache gets cleared or wiped. For complete documentation on this feature, see Quick Cache Wiki - Clear and Wipe Cache Routines. See also #23.
  • Bug Fix: Fixes an issue with the Pro Preview mode where saving the plugin options may inadvertently save Pro-only options that could later cause issues if the plugin is upgraded to the Pro version. See #311.
  • Bug Fix: Fixes an edge-case where the proper cache files do not get purged when a user with the Editor role publishes a new post with both a category and a tag associated with the post. See #313.
  • Bug Fix: When Quick Cache purges/resets the cache for a post with a Custom Post Type, any cache files for the associated Custom Post Type archive view are now auto-purged, along with any associated XML feed cache files. See #280.
  • Bug Fix: Fixed missing trailing slash in Directory / Expiration Time configuration panel. This was purely a visual inconsistency and had no effect on Quick Cache's functionality. See #267.
  • Bug Fix: When saving custom CSS using JetPack's Custom CSS module, Quick Cache now properly purges the site cache to ensure that outdated cache files are not served to visitors. See #246.
  • Bug Fix: When changes are made to WordPress General, Reading, Discussion, or Permalink settings (Dashboard -> Settings), Quick Cache now clears the cache to prevent an outdated cache file from being served to visitors. See #223.
  • Bug Fix: When an active plugin is updated, or when an active theme or the parent theme for an active child theme is updated, or when WordPress Core is updated, Quick Cache now properly clears the cache to ensure that an outdated cache file does not get served to a visitor. See #145 and #327.
  • Bug Fix: When a new comment is posted, Quick Cache now properly purges the cache files for any paginated comment pages. See #336.
  • Bug Fix (Pro): Fixed a bug where the HTML Compressor, when enabled with the "remove extra whitespace in the final HTML" option, would incorrectly remove <!DOCTYPE html>. See #299.
  • Bug Fix (Pro): Fixed a bug in the HTML Compressor that would, in certain scenarios, leave behind fragments of HTML comments. See #295.
  • Bug Fix (Pro): The Auto-Cache Engine now has an option to configure a delay between each request when pre-caching the site. There were some reports of the Auto-Cache Engine causing load issues with large sites on servers that sometimes had trouble handling many requests. See #294.
  • Bug Fix (Pro): Fixes an Auto-Cache Engine scheduling issue that may, in some scenarios, prevent it from running as expected. See #291.
  • Bug Fix (Pro): Fixed a bug with the HTML Compressor where style, link and/or script tags could end up out of order in certain scenarios. See #45.
  • Bug Fix (Pro): Fixed a bug in the HTML Compressor related to JavaScript compression routines. See #38.

v140829

  • SECURITY FIX - Please upgrade immediately: Fixes a security related to cached cookies sent in the header of a request. This only affects sites running plugins that might send cookie data via the header. See #253
  • Enhancement: Auto-Purge RSS Feeds. Quick Cache will now automatically purge the cache for RSS/RDF/Atom Feeds when Feed Caching is enabled. This new option will purge the cache for the master feed, the master comments feed, feeds associated with comments on a Post/Page, term-related feeds (including mixed term-related feeds), and author-related feeds when you update a Post/Page, approve a Comment, or make other changes where Quick Cache can detect that certain types of Feeds should be purged. See #182
  • Enhancement: Improve handling of symlink creation for 404 cache files by using atomic symlink creation to decrease the possibility of encountering a race condition. See #242.
  • Enhancement: Improved portability of advanced-cache.php. This will help reduce configuration overhead for site owners when migrating a WordPress installation from one server to another. See #258.
  • Enhancement: Option Panels now have proper HTML anchor tags so that they work better with browser extensions that rely on anchor tags being available. See #260.
  • Enhancement: The Plugin Deactivation Safeguards option has been renamed to Plugin Deletion Safeguards. When Plugin Deletion Safeguards are disabled, deactivating and deleting the plugin will now erase your options for the plugin, erase directories/files created by the plugin, remove the advanced-cache.php file, terminate CRON jobs, etc. It completely erases itself, but only when you disable Plugin Deletion Safeguards (enabled by default to prevent accidental loss of data). See #261.
  • Enhancement (Pro): HTML Compressor now includes FOPEN as transport layer fallback in case cURL is not available. See #15
  • Enhancement (Pro): HTML Compressor now writes files atomically; this will help avoid race conditions when writing cache files. See #273
  • Enhancement (Pro): Improved error handling for the Auto-Cache Engine. There were some scenarios where XMLReader() would fail with a PHP Warning notice when it was unable to properly parse the sitemap. See #250.
  • Bug Fix: The cache directory is now properly removed when deleting the plugin from the WordPress Dashboard plugins list. See #261.
  • Bug Fix: WooCommerce compatibility fix for a bug where cart session data appeared to get cached across sessions. See #253
  • Bug Fix (Pro): The plugin upgrade notice no longer appears on Child Blogs in a Multisite Network. There was no security risk here; while the upgrade notice was shown, Child Blog admins who did not have permission to upgrade Network-activated plugins were unable to do anything with the message. See #259.
  • Bug Fix (Pro): Fixed a bug where, in certain scenarios, a WordPress Plugin may break the JavaScript that controls the Clear Cache button on the Dashboard. See #272.
  • Bug Fix (Pro): CSS files are now excluded from compression by the HTML Compressor when included inside conditional comments. See #35
  • Bug Fix (Pro): HTML Compressor now preserves whitespace inside CSS calc() statements. See #286.

v140725

  • Enhancement: Improved overall performance by optimizing the auto-purge routines. See also: #130
  • Enhancement: The "GET Requests" UI Panel now explains that you can use ?qcAC=0 to disable caching when you ARE caching GET Requests. See also: #210.
  • New Pro Feature: Auto-Purge XML Sitemaps. If you're generating XML Sitemaps with a plugin like Google XML Sitemaps, you can now tell Quick Cache to automatically purge any cached sitemap files whenever it purges a Post/Page cache. You may also specify a list of XML Sitemap patterns to clear, if you have multiple sitemap files. See also: #169
  • Enhancement (Pro): The Quick Cache Pro Updater now accepts a License Key in place of the WebSharks password.
  • Enhancement (Pro): In a Multisite Network, the Auto-Cache Engine will now also auto-cache each child blog. See also: #169
  • Bug Fix: Fixed a bug that was causing unapproved, spam, and trash comments to unnecessarily purge the cache. See also: #159
  • Bug Fix: A custom WP_CONTENT_DIR is now obeyed in the scenario where it's set to a path outside of ABSPATH. See also: #95
  • Bug Fix: The UI now correctly displays custom WP_CONTENT_DIR in the "Directory/Expiration Time" options panel. See also: #206
  • Bug Fix: Quick Cache LITE now correctly sets the QUICK_CACHE_PRO constant to false. See also: #229
  • Bug Fix: Workaround for broken page navigation on the front page of some sites. This is a WordPress redirect_canonical() bug workaround. See also: #209
  • Bug Fix (Pro): 404 Caching now properly returns a 404 HTTP Status code when serving a cached 404 page. See also: #197
  • Bug Fix (Pro): The HTML Compressor now properly preserves %#%{%#%%#%}%#% character whitespace during CSS compression. See also: #25
  • Bug Fix (Pro): The Pro Updater upgrade link now points to the correction location when displayed from a Child Blog in a Multisite Network. See also: #205
  • Bug Fix (Pro): The Auto-Cache Engine now correctly handles the sitemap when home_url() differs from site_url().
  • Bug Fix (Pro): The "Dynamic Version Salt" options panel now correctly displays the last saved value. See also: #231

v140605

  • New Feature: Branched Cache Structure. Cache files are now written to the cache directory using a more intuitive format of PROTOCOL/HOSTNAME/PERMALINK (e.g., http/example-com/sample-page.html). For more details, please see https://github.com/WebSharks/Quick-Cache/wiki/Branched-Cache-Structure
  • New Feature: 404 Page caching. It's now possible to enable/disable the caching of 404 requests. Enabling this feature generates a single cache file for your 404 Page and then symlinks future 404 requests to that cache file. See Dashboard -> Quick Cache -> Plugin Options -> 404 Requests.
  • New Feature (Pro): HTML Compressor (experimental). This new experimental feature automatically combines and compresses CSS/JS/HTML code. See Dashboard -> Quick Cache -> Plugin Options -> HTML Compressor. For more details about how this feature works, please see https://github.com/WebSharks/HTML-Compressor
  • New Feature (Pro): Auto-Cache Engine. When enabled, the Auto-Cache Engine will pre-cache your site at 15-minute intervals, rebuilding cache files when necessary (it will not rebuild cache files until they have expired). This helps eliminate the slowness a user may experience when visiting a page on your site that has not yet been cached. See Dashboard -> Quick Cache -> Plugin Options -> Auto-Cache Engine.
  • New Feature: Auto-Purge "Author Page". When a single Post/Page is changed in some way, Quick Cache can also purge any existing cache files for the associated Author Page. See Dashboard -> Quick Cache -> Plugin Options -> Clearing the Cache. (This option is enabled by default; disabling this requires Quick Cache Pro.)
  • New Feature: Auto-Purge "Category Archives". When a single Post/Page is changed in some way, Quick Cache can also purge any existing cache files for the associated Category archive views. See Dashboard -> Quick Cache -> Plugin Options -> Clearing the Cache. (This option is enabled by default; disabling this requires Quick Cache Pro.)
  • New Feature: Auto-Purge "Tag Archives". When a single Post/Page is changed in some way, Quick Cache can also purge any existing cache files for the associated Tag archive views. See Dashboard -> Quick Cache -> Plugin Options -> Clearing the Cache. (This option is enabled by default; disabling this requires Quick Cache Pro.)
  • New Feature: Auto-Purge "Custom Term Archives". When a single Post/Page is changed in some way, Quick Cache can also purge any custom Terms that may have their own Term archive views. See Dashboard -> Quick Cache -> Plugin Options -> Clearing the Cache. (This option is enabled by default; disabling this requires Quick Cache Pro.)
  • Enhancement: Improved conflict handling of other plugins using ob_start(). See https://github.com/WebSharks/Quick-Cache/issues/97
  • Enhancement: Added a postload filter for status_header so that Quick Cache can properly detect calls to the WP core function status_header()
  • Enhancement: The Quick Cache cache directory has been changed to wp-content/cache/quick-cache/ to provide better organization of cache files and avoid interfering with another plugin that may also be writing to the wp-content/cache/ directory. See https://github.com/WebSharks/Quick-Cache/issues/123
  • Enhancement: New detailed debugging notes (see Dashboard -> Quick Cache -> Plugin Options -> Enable/Disable). There is now an extra option to show detailed debugging information in addition to the Quick Cache notes in the HTML source. For now, this feature only applies when the HTML Compressor is enabled.
  • Enhancement: Better Debugging Notices. If Quick Cache is not caching a particular page (such as when a logged-in user visits the site and logged-in user caching is not enabled), Quick Cache will now report why that page is not being cached in the HTML notes.
  • Enhancement: Improved compatibility with the Nav Menu Roles plugin. See https://github.com/WebSharks/quick-cache/issues/164
  • Bug Fix: Obey custom content directories. If you have customized your WP_CONTENT_DIR and WP_CONTENT_URL constants to point somewhere other than the default, Quick Cache will now obey those and use your custom directory for storing cache files. See https://github.com/WebSharks/Quick-Cache/issues/95
  • Bug Fix: Scheduled posts now trigger the clearing of any associated archive views when those posts go live (assuming you have those archive views set to Auto-Purge in Dashboard -> Quick Cache -> Plugin Options -> Clearing the Cache). See https://github.com/WebSharks/Quick-Cache/issues/26
  • Bug Fix: Fixed a bug where saving a post as draft would trigger the Auto-Purge Post routine and clear the cache for that post. Now only purges post status publish and private and when transitioning from publish or private post status to draft, future, or private. See https://github.com/WebSharks/Quick-Cache/issues/43
  • Bug Fix: Split/paginated comments and multi-page Posts/Page cache files are now purged properly when the post cache is purged. See https://github.com/WebSharks/Quick-Cache/issues/75

v140104

  • New Options for Feed Caching. It's now possible to control RSS, RDF, and Atom Feed caching. The new default is for feed caching to be disabled, which resolves an issue where new posts don't show up in the feed until the cache is cleared. This version of Quick Cache disables feed caching to prevent this from happening. If you wish to cache feeds, you can enable feed caching in the options. See: https://github.com/WebSharks/Quick-Cache/issues/44
  • New Automatic Updater for Quick Cache Pro. Quick Cache Pro now includes an automatic updater which lets you to keep Quick Cache Pro updated right from within your WordPress Dashboard. To upgrade to a new version of Quick Cache Pro using the Automatic Updater, simply fill in your WebSharks-Inc.com credentials in the new Plugin Updater sub-panel (Quick Cache Pro -› Plugin Updater). See: https://github.com/WebSharks/Quick-Cache/issues/21

For older Changelog entries, please see the CHANGELOG file.