为了提高网站访问速度,最近把网站从Vultr迁到了阿里云。考虑到安全性和方便性,选择了虚拟主机产品。实际情况访问速度经常很慢,经常会达到5、6秒,虽然比Vultr有时候根本打不开效果好,但是和预期还是很大差距的。
虚拟主机的安全性比VPS,而且环境搭建也快,但操作空间很小。网上大部分的WordPress优化教程在虚拟主机上都无法实施。本文介绍如何排查访问缓慢的问题,和解决虚拟主机WordPress打开缓慢的问题。
1 网络速度
首先要测试的是网络环境,直接ping域名
ping beekc.top
得到 ttl=52 time=5.39ms。网络环境没问题。而且我在同一虚拟主机下的搭建的淘宝优惠券网站访问速度没问题,其中还夹带了大量外部调用,打开速度平均1s左右,3s就能加载完成。所以问题应该在WordPress优化上。
2 数据库访问次数
WordPress预留了查看数据库调用记录的接口。在wp-config.php最后添加
define('SAVEQUERIES', true);
开启记录数据库调用记录。在footer.php中添加
<?php if (current_user_can('level_10'))
{
?> <br> <?php echo get_num_queries(); ?> queries in <?php timer_stop(1);?>seconds.
<?php global $wpdb;
echo "<pre>";
print_r($wpdb->queries);
echo "</pre>";
}?>
之后使用管理员账号访问时在网页底部就会显示数据库调用次数、网页生成时间和数据库调用记录。if (current_user_can(‘level_10’))是检查用户权限,因为数据库调用记录涉及的内容较多,最后不要公开。如果需要公开,去掉if判断即可。
我的网站首页数据库调用50次左右,访问缓慢时生成网站5秒左右。可见访问缓慢的原因在网站生成时间过长,淘宝优惠券网站不涉及数据库访问,所以访问速度较快。
3 网站缓存
提高数据库访问速度的常用方法是使用Memcached,将常用的调用结果缓存起来,下次调用就可以减少调用时间,但是虚拟主机无法使用。开始我是用的WP Super Cache插件,效果并不明显。后来测试缓存一直无法生效,和虚拟主机一些软件版本有关,这些我们又无法操作。W3 Total Cache是一个很好的替代产品,他可以将缓存存储在磁盘中。虽然速度可能慢一点,但是需要的权限更少、兼容性更好。开启所有缓存选项后,缓存命中的页面基本可以在1s内打开。