WordPress.org

Ready to get started?Download WordPress

Plugin Directory

Quick Cache (Speed Without Compromise)

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

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 :-)

Requires: 3.7 or higher
Compatible up to: 3.9.1
Last Updated: 2014-6-5
Downloads: 727,051

Ratings

4 stars
4.3 out of 5 stars

Support

20 of 39 support threads in the last two months have been resolved.

Got something to say? Need help?

Compatibility

+
=
Works!

10 people say it works.
1 person says it's broken.

100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,2,2 100,1,1 100,1,1
100,2,2 100,3,3 100,2,2 100,1,1 89,9,8 100,2,2 100,1,1 0,1,0
100,1,1 100,2,2 100,1,1 100,2,2 60,5,3
100,9,9 100,3,3 69,13,9 100,1,1
100,1,1 50,2,1
100,2,2
88,8,7
100,1,1 0,1,0 100,1,1 100,1,1
100,1,1 50,4,2 50,2,1 100,1,1 100,4,4 67,6,4 86,7,6 100,2,2
100,1,1 100,1,1 100,6,6
100,2,2 50,6,3
90,10,9 100,1,1
100,1,1 0,1,0
0,1,0 100,4,4 100,1,1 100,1,1
100,2,2 91,32,29 89,9,8
100,24,24
93,28,26
92,25,23
67,12,8
74,23,17
100,13,13
100,7,7
90,20,18
67,3,2
100,4,4
100,7,7
100,1,1
67,3,2 31,13,4 100,5,5 75,4,3 86,7,6 100,6,6 100,5,5 100,5,5
100,1,1 100,5,5 100,5,5
86,7,6
100,3,3
100,6,6 50,2,1 100,4,4
100,1,1 100,7,7 100,3,3 91,11,10