博主必藏实用技巧!从应用层入手,100倍提升网站响应速度
上会回顾:昨天讲解整体的优化思路,讲到wordpress的性能与HOOK生成机制有关,所以只要能够绕开这一块,我们就有优化的空间。鞋童们可以翻昨天的博文查阅。
如何绕开HOOK生成机制
由于wordpress是php动态生成,所以每一次重新打开页面,所有的数据都会完整的计算一次,但我们写博客不会每一秒钟都写一,那么能不能将每次计算的数据缓存起来呢?只有新写了博客才再次计算呢?
其实是可以的,这里我找到了一个wordpress的缓存插件WP Super Cache
开启这个缓存,我们再看看测试的情况
目前QPS已经飙升至了372,我们再看看XHProf检测的情况
虽然apply_filters还是执行了7000多次,但是自身耗费的时间已经远远的减少了,目前主要的性能瓶颈在于mysql
下面我们先看看这个WP Super Cache到底干了些什么
首先他生成了一个缓存文件夹
%wordpress%/wp-content/cache,里面存放就是缓存的静态页面然后当第二次访问该页面的时候,则直接从这里读取缓存的页面信息即可
那么mysql的瓶颈我们又应该如何处理呢?
在my.cnf中添加慢查询日志,并且将没有使用索引的SQL也记录下来
slow_query_log=1
slow_query_log_file=/data/log/mysql/slow.log
long_query_time=1
log-queries-not-using-indexes
通过查看slow log,目前需要优化的sql有两条
SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (137,523,526,530,527,528,534,529,524,531,532,533,635,636,637,525,517,520,519,518,521,688,689,536,522) ORDER BY meta_id ASC;
SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';
功力不够的同学,可以暂时跳过mysql的优化。
我们给表增加索引,增大数据库查询缓存后,现在再来测试一下,
现在,单优化应用层,即可达到500+的RPS了。还有提升的空间吗?答案是肯定的,且听下回分解。