[wp-hackers] Freezing $now to increase query cache benefit

Mark Jaquith mark.wordpress at txfx.net
Fri Jan 6 01:22:05 GMT 2006

I've been trying to help out a client who is using WordPress on a VPS  
account with 256MB RAM.  His site is very well trafficked, and MySQL  
resource usage was going through the roof.  As it turned out, the  
biggest queries were the main page post query, and the post/category  
join query.  In some cases these queries were taking 10-15 seconds  
each!  wp-cache2 helps, but those slow queries were still going through.

The next solution I looked at was MySQL's qcache, which caches  
queries.  The problem here is that the main post query uses " AND  
post_date_gmt <= '$now' "  ... and $now changes on each load.  qcache  
requires the query to be identical for it to be served from the query  
cache.  And then I though... WHY does $now need to reflect the  
current time?  The reason that $now is there is to prevent future  
posts from appearing, so why not just make that date reflect the date/ 
time of the most recently published post?

So, I wrote a plugin to do just that.  It updates an option with the  
date/time of the most recent published post (updated on edit, save,  

It made a HELL of a difference.  The main post query, when grabbed  
from the query cache, now takes less than 1/100 of a second, as  
compared to 3-15 seconds before.

Here is the plugin:

And attached is the my.cnf (MySQL configuration file) in use.  What  
do you think about putting something like this in the core?  It can't  
hurt, and it can really help people who are utilizing Qcache to  
relieve stress on high traffic sites.

Mark Jaquith
-------------- next part --------------
A non-text attachment was scrubbed...
Name: my.cnf
Type: application/octet-stream
Size: 571 bytes
Desc: not available
Url : http://comox.textdrive.com/pipermail/wp-hackers/attachments/20060106/8a2733cf/my.obj

More information about the wp-hackers mailing list