WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

The majority of pages of one of my sites can only be accessed by registered users. While these pages do share some common, static content (headers, etc) most of the information on the page is populated specifically for that user using a variety of usermeta, postmeta and custom table data.

Further, a user is unlikely to hit the same page a lot of times. However, there are tens of thousands of users who may wish to be accessing their own information pages simultaneously, so performance is of great concern.

My understanding of cacheing plugins is that they do a great job with relatively static content, such as blog entries or "about us" pages, that change infrequently but must be served up (without any differences or customized info) to a lot of simultaneous requests. In my situation, the real performance "hit" comes once a user has logged in and is accessing their personal information.

How effective are cacheing plugins in this scenario? Are there any other alternatives (in addition to DB optimization) that can help reduce memory and DB load?

share|improve this question
up vote 2 down vote accepted

Caching full pages is not going to do you any good for a situation like you described. Users will update things and expect to see their updates right away -- meaning you spend more server time invalidating cached pages. The database server is likely to be your biggest bottleneck in just about any webapp.

Two things you can do:

  1. Move your Database to a separate server -- ideally this server probably has a ton of memory and it's only job is to serve the database.
  2. Use a more permanent object cached like memcached or APC. WordPress has an object cache baked into the core, but it's lifetime is only a single page load. The two linked object cache backends are "drop ins" that replace that cache with memcached. Any time wp_cache_get is called, memcached/APC will be get hit first before a call is made to the database.
share|improve this answer
Installed APC and then Mark Jaquith's APC plugin and immediately noticed improvements. However, all my transients stopped working. I'll need to post a follow up question here. – Tom Auger Aug 7 '12 at 16:27

If the plugin can use opcode caching then a great deal. You don't really need a large plugin to take advantage of something like APC, it can be a drop in.

To further explain, each time a PHP generated page is requested, the server must read in the various stuff (code and files) "compile" them into something the machine can understand (opcode). An opcode cache will preserve it in memory so subsequent requests are greatly reduced.

I recommend using APC and throwing lots of RAM at it, you will see a significant improvement.


If you really want something fast I recommend this threads:
nginx + php-fpm + APC..
nginx, php-fpm, apc and varnish

ps. memcached is not an opcode cache and in my experience unless your running multiple redundant servers is not worth it, but you can use them both together.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.