Need for Speed?
This plugin handles the wordpress/php side of a statically cached nginx-fronted wordpress (or wordpress mu) site. It makes WordPress emit an 「X-Accel-Expires: 0」 header when a user is logged in or has taken actions that should cause them to get a customized page on your frontend. This – along with the nginx configuration below – will ensure logged-in users aren』t impacted by your static nginx cache.
Why would you want to statically cache wordpress with nginx?
- INSANE performance. Hardware that could generate 6 pages / second can now generate many thousands.
- Low resource usage. Even on very busy servers, nginx uses only a handful of RAM.
- Unobtrusiveness. You plop nginx in front of wordpress and that』s pretty much it. This plugin (and nginx) is all you need to make your site digg- and slashdot- proof.
- Stability. Nginx is rock solid.
- Faster is better. All the web gurus agree – visitors like faster sites, even when the differences are slight.
- Do more with less. Using a frontend proxy lets you keep your heavy wordpress apaches lightly loaded, letting you handle more concurrent connections and use less RAM.
We』ve been using a caching nginx proxy at the fairly busy blogs.law.harvard.edu since September, 2009. The results have been dramatic: we』ve halved the amount of RAM we need, doubled our outgoing network throughput (nginx is fast!) and have had essentially no significant load spikes.
Drawbacks
There are a few.
- Plugins that rely on php code running on each page view won』t work properly. This is similar to wp-supercache or any of the other static caching plugins. Stats, image rotation, etc. You should implement these features via javascript or third-party services, depending.
- You need to install and configure an nginx frontend proxy – but see the 「installation」 tab. It』s really not that hard.
Notes
- It is completely harmless to install and activate this plugin before you』ve got the nginx side set up.
- YOU MUST keep this plugin activated as long as you』ve got an nginx frontend proxy active – otherwise, you』ll end up caching too much of your site, and authenticated users won』t see customized pages.
- This plugin helps speed up access for authenticated users mainly because it makes all other traffic a negligible resource drain. I suggest installing apc (or another opcode cache) and – alternatively – a wordpress object cache. Definitely install an opcode cache – leave the object cache for later. You may find you don』t need it!
The Future
This plugin could be set up to allow you to manage caching policies entirely from a wordpress control panel. We』d do this by manipulating the timeout in the 「X-Accel-Expires」 header based on the type of resource that』s been requested.
It』d be nice to de-cache when pages change via some call from the backend to the nginx frontend.






