If you’re a regular reader, you probably know by now that we just love performance and can’t get enough of server performance-improving software/code… Especially when it comes to WordPress.
Donncha has recently released a great plugin for WordPress, called "WordPress Super Cache." It builds on the original WP-Cache plugin by Ricardo Granada – except that it fixes all the bugs in the original implementation and has been written in enough pure PHP that it’ll also run on Windows servers – both IIS and Apache for that matter! <cue applause>
At the moment (as of version 0.3.1) it needs a bit of work to make it run, but not much. So here goes – 10 easy steps to get cached content on your IIS or Apache server under Windows:
- Download Donncha’s plugin here.
- Extract it so you have a
/wp-content/plugins/wp-super-cache/
directory with all the files (like wp-cache.php) in there. - Copy
/wp-content/plugins/wp-super-cache/wp-cache-phase1.php
to/wp-content/advanced-cache.php
- Open up
/wp-content/plugins/wp-super-cache/wp-cache.php
and locate this:function wp_cache_check_link() {<br /> global $wp_cache_link, $wp_cache_file;
- Replace that with
function wp_cache_check_link() {<br /> global $wp_cache_link, $wp_cache_file;</p> <p> if ( file_exists($wp_cache_link) )<br /> return true;<br /> else {<br /> echo “<code>advanced-cache.php</code> does not exist<br />“;<br /> echo “Create it by copying <code>$wp_cache_file</code> to <code>$wp_cache_link</code> on your server<br />“;<br /> return false;<br /> }
- Log into your dashboard and enable WP Super Cache in the Plugins page.
- Go to the WP Super Cache options page and enable caching.
- Open
/wp-content/wp-cache-config.php
and look for"WPCACHEHOME"
and correct
a) Add an opening quotation mark before "C:\"
b) Replace all "\" with "\\" or "/" - Create your rewrite rules like it says in readme.txt. If your using Apache on Windows, use mod_rewrite. If you’re using IIS, you’ll need to use the 3rd party (non-free, but quite good) ISAPI_Rewrite 3.0
- If you have mod_gzip, mod_deflate, or IIS dynamic content caching enabled, make sure you don’t enable Super Cache gzip because it’s already being done on the server level (which is better, anyway! :))
Don’t forget to install either our XCache or eAccelerator plugins to speed up the stuff that WordPress Super Cache doesn’t cache, such as logged-in users’ visits and comment processing, etc. as well as visits by people who have commented (see below).
Known Issues
WordPress Super Cache doesn’t cache the blog homepage. We’ve contacted the author (Donncha) and expect to get this fixed soon – it is not specific to Windows hosts.- The non-Super Cache code (basically, caching for users who have commented) does not work for posts. This is a known bug in the WP-Cache code that WordPress Super Cache is using as a second caching layer, and there is no way around it at the moment. Don’t worry, posts are still being cached, just not for people who post a comment. Make sure you’re using the XCache plugin to avoid this being a bottleneck.
Update:
It seems that if you’re on an Apache server, it’s best to add a directive in httpd.conf stopping mod_gzip or mod_deflate from running in your WordPress directory, and instead using WordPress Super Cache’s built-in GZIP support. This is because Apache will not cache GZIP’d output, so you’ll end wasting thousands of precious CPU cycles re-GZIPping the same content over and over again. IIS users do not have to worry, IIS 6 GZIPs and caches all static content by default.
Thanks, now up and running on my Apache2 WAMP server – much faster now.
God, PHP (and especially WordPress!) is slow!!!
I had a hard time getting the rewrite rules working, but now they’re fine 🙂
Could you please clarify step 3 and 4? I am getting a blank page as soon as I enable caching. It’s different than the other typical blank page problems. It seems to be associated to a syntax error in the code. I appears what you say to replace the code with has syntax errors. Your “{” don’t seem correct but I am not an expert. I also assume you mean to replace the complete function with what you specify above…?
I just thought I would provide an update on my blank page problem in my previous post a couple months ago.
The syntax I questioned before is fine. After multiple attempts to troubleshoot I had to do 2 things different. Than anything stated so far.
-1 thing I had to do different was my .htaccess file had one small mod from the readme. I had to use “RewriteRule (.+) index.php/$1 [L,QSA]” rather than the similar line (last line) in the readme’s .htaccess
-The other thing I had to do different than above is in Step 8, it didn’t work with the absolute path. Instead I just have:
define( ‘WPCACHEHOME’, ABSPATH . “wp-content/plugins/wp-super-cache/” ); //Added by WP-Cache Manager
Glad to hear you got it to work, Scott.
Switching from WordPress to PerformancePress broke our code-formatting plugins, makes it look like the syntax is all wrong… we never did get around to fixing that.. (/me makes mental note to do it soon!)
Thanks Scott – that all helped to get it working.
Also, one other thing I discovered is the the line to enable the cache:
define(‘WP_CACHE’, true);
needs to be at the top of the config file (wp-config.php) to get wp-cache to generate cached content. Its some weird bug.
Just thought I would pass along that the latest upgrade to 0.6.5 went without a hitch and more importantly, required no customizations. I backed up my plugin dir and did an automatic upgrade. I expected to have to repeat step 4/5 above as this file would have been overwritten but the code must have been improved as my site is running fine without this step above.
I just upgraded to 0.6.5 and it went without a hitch and more importantly, required no customizations. I backed up my plugin dir and did an automatic upgrade. I expected to have to repeat step 4/5 above as this file would have been overwritten but the code must have been improved as my site is running fine without this step above.
I just upgraded to 0.6.5 and it went without a hitch. More importantly, it required no customizations. I backed up my plugin dir and did an automatic upgrade. I expected to have to repeat step 4/5 above as this file would have been overwritten but the code must have been improved as my site is running fine without this step above.
I’ve installed the wp-super-cache plugin in my windows hosting.
everthing is fine but , plug-in also caches my wp-admin folder.
When i delete cache and enter the comments page for example, every page becomes the comments page. But i can enter edit-comments.php?comment_status=moderated or admin.php?page=wp-dbmanager/database-manager.php etc. I can’t access pages like post-new.php , plugins.php etc.
How can i block of caching the wp-admin folder?
As of the current version (0.8.3), here is my experience so far on IIS.
1. You still have to copy wp-cache-phase1.php to /wp-content/advanced-cache.php
2. If you change the wp-cache.php file as instructed in steps 4 and 5, the whole thing breaks and will give you a blank page.
3. Step 8 you need to delete the entire path up to /plugins, so that WPCACHEHOME is set to WP_CONTENT_DIR . “/plugins/wp-super-cache”
4. It stll doesn’t actually work on IIS anyway, even if the ISAPI_Rewrite module is installed. It complains about not having mod_rewrite.
This article explains how to get WP Super Cache to work on IIS 7:
http://ruslany.net/2008/12/speed-up-wordpress-on-iis-70/