查看页面生成时间、数据库查询次数、使用内存
为了评估优化效果,首先需要量化评估指标。WordPress 提供了一系列函数来帮助我们查看运行状态。
页面生成时间
WordPress 提供了 timer_stop函数,它返回从页面开始到函数被调用的时间的字符串,它有两个参数,$display 为 0|false 时返回,为 1|true 时显示,$precision 为精度。
timer_stop( int|bool $display, int $precision = 3 ): string
数据库查询次数
WordPress 提供了 get_num_queries函数,它返回数据库查询次数。
get_num_queries():int
使用内存
PHP 提供了 memory_get_peak_usage函数,它返回 PHP 分配的内存峰值(字节)。$real_usage 为 true 时获取从系统分配的内存的实际大小,为 false 时获取 emalloc() 使用的内存
Memory_get_peak_usage ( bool $real_usage=false ): int
使用方法
将以上这些代码插入到页面中
耗时:<?php timer_stop(1,5); ?> | 数据库查询次数:<?php echo get_num_queries(); ?> | 内存消耗(MiB):<?php echo memory_get_peak_usage()/1024/1024; ?>
PHP 优化
PHP 主要影响页面生成时间。
更新 PHP 版本
更新 PHP 版本在大多数时候能够提升速度,例如从 PHP7.4 升级到 PHP8,需要注意检查 WordPress 与 PHP 的兼容性。
安装插件 OPcache
OPcache 能够显著减少 PHP 的开销,有效提升 PHP 的速度。
数据库优化
数据库的速度在访问量大时对页面生成时间有较大影响,可以使用缓存来减少数据库查询次数。
使用 memcached
需要在服务器上安装 memcached 并在 PHP 中安装 memcached 插件,并上传对应的 object-cache.php 到 /wp-content/ 目录(object-cache.php 实现不同,可以自行找一下),WordPress 会自行调用。
WordPress 优化
将 WP-Cron 挂载到系统中
WordPress 的各类定时任务是通过 WP-Cron 实现的,每次加载页面的时候都会进行检查,可以将 WP-Cron 挂载到系统中以减少开销。首先禁用 WP-Cron,在 wp-config.php 添加一下内容:
define( 'DISABLE_WP_CRON', true );
并在系统中定时执行以下代码(可以使用 Linux 的 cron 实现,crontab -e 以穿创建定时命令)
wget --delete-after http://YOUR_SITE_URL/wp-cron.php
提升静态资源的加载速度
提升静态资源的加载速度的方法就有很多了,例如使用 CDN、延长静态资源的缓存时间等,这里就不详细展开了。
终极提速:全站静态化
若以上做法都不能达到满意的速度,可以考虑做静态化,就是将动态页面定时缓存起来,若有访问则返回缓存静态页面,大幅提升相应速度。但是这样做也会带来一些其他的问题,例如浏览量不能及时更新,一些前端功能失效等。这里也不详细展开了,有许多插件都可以实现类似的功能。
查看更多影响页面生成的因素
可以使用 Chrome 的 Lighthose 对网站页面进行全面评估,具体使用方法不在此处展开。