冒泡。好几天没更新 WordPress效率问题剖析及重写WordPress
Jun 02

监测WordPress的数据库查询

WordPress内置了数据库缓存系统,安装插件WordPress Cache Inspect,它会告诉你这个系统的效率(命中效率),主要为下面四个指标:

Cold Cache Hits
This is the number of cached items that were loaded from disk.
Warm Cache Hits
This is the number of cached items accessed that were already in memory
Cache Misses
This is the number of items that had to be fetched from the db as they were not in the cache.
Loaded data
This lists the type and amount of data loaded into memory from that currently stored within the cache..

define(’ENABLE_CACHE’, true);

把这条语句加入WordPress的配置文件wp-config.php里,WordPress便会以文本的方式缓存一些数据库查询的结果到/wp-content/cache/目录下。注意保持这个目录可写。

试试看效果再用。因为这玩意儿是用磁盘Cache保持数据库查询结果。但某些服务器上,磁盘IO比较慢,比如在dreamhost上就不推荐用这种方式。

显示所有数据库查询语句和消耗时间

在wp-config.php文件里添加define(’SAVEQUERIES‘, true);再在footer.php文件的尾部加上一句<?php var_dump($wpdb->queries); ?> 。就可以在页面源代码的尾部找到整个页面执行过程中所提交的所有MySQL查询语句了。数组里每一项都包含一个string和一个float,string存储查询语句,float存储查询时间。

参考:查看WordPress页面执行过程中提交的SQL查询语句

比较耗时的数据库语句

WordPress执行效率问题作者作了一个测试,大家可以看一下具体有什么问题,与自己的做一个对照。我提一下我遇到过的比较慢的查询语句。

分类和tag相关的都比较消耗时间

比较消耗时间的基本上都与分类表相关的三个数据表相关。特别是我用的那个相关文章查询,基本上占总查询时间的20%(优化后)。我比较期待快速或者带Cache的相关文章的插件。

DESC wp_comments

我不知道这个语句干啥的,经常很慢,所以我把产生它的插件”subscribe comments”插件直接禁用了,反正那个插件提供的功能就没几个人用。

持续更新ing…

WordPress消耗时间最多的便是数据库的查询,所以缓存是一个比较好的解决方案。WordPress强大的’hook’机制,使得可以为之建立强大的缓存机制,从缓存数据库结果到完全静态化,都可以实现。

define(’ENABLE_CACHE’, true);

把这条语句加入WordPress的配置文件wp-config.php里,WordPress便会以文本的方式缓存一些数据库查询的结果到/wp-content/cache/目录下。注意保持这个目录可写。

使用WP-Cache 2.0

这是WordPress比较官方的缓存插件。

完全静态化

使用cos-html-cache,可以为blog的主页和文章页面建立真正的静态页面,也就是说访问者看到的就是静态页面,连php的调用都省了,所以加速效果无限好(达到你的服务器的极限)。不过缺点也是显然的,无法显示动态和个性化内容…

cos-html-cache的作者给过一张示意图,演示WP-Cache和cos-html-cache的原理,很直观的看出它们节约了哪一部分的时间。

Super Cache

这个是最近炒得比较火的一个插件,号称是WP-Cache 2.0的改进版。但我看了一下它的说明,似乎没有可取之处。比如它为了把留言者的个人信息显示在留言栏,就不直接给曾经留言过的用户静态版本了。但其实用javascript读取COOKIE信息很容易实现。

written by allen

Leave a Reply

You must be logged in to post a comment.