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.
There are a few.
- You need to install and configure an nginx frontend proxy - but see the "installation" tab. It's really not that hard.
- 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!