当 WP Rocket 插件执行大量预加载内容时,可能会消耗大量 CPU 资源,特别是在低配置服务器上。若你的 WordPress 部署在这样的环境中,强烈建议按照以下指南进行参数调整,以优化性能。
什么是预加载内容?
预加载内容是指在用户访问网站之前提前生成和存储页面的过程。WP Rocket 中的预加载功能会自动访问并缓存你网站的页面,以便在用户请求时能够快速提供已准备好的内容,从而加速页面加载速度。
当未启用预加载功能时,页面需要在第一次访问时生成缓存。这意味着初次访问的用户或搜索引擎爬虫可能会经历未缓存的页面加载,从而显著降低访问速度。
然而,启用预加载内容能够巧妙地解决这一问题。通过预先生成并存储页面内容,即使是首次访问,用户和搜索引擎爬虫也能够体验到已缓存的页面,从而提高整体的访问速度。这一功能在改善用户体验的同时,对搜索引擎优化(SEO)也有积极的影响。
然而,它唯一的不足之处在于,当网站内容较为庞大时,处理缓存需要一定的时间,同时在此过程中会耗费较多的 CPU 和内存资源。
调整预加载参数以适应 WordPress 部署环境
调整预加载参数以适应 WordPress 部署环境是一项关键任务,可以根据服务器和网站特性进行优化。以下是一些建议的调整:
- 批处理大小:
- 参数:
rocket_preload_cache_pending_jobs_cron_rows_count
- 默认值:45
- 建议:根据网站规模和服务器性能,适度增加或减少此值。对于大型网站,考虑增加批处理大小以提高效率。
rocket_preload_cache_pending_jobs_cron_rows_count: 45
- 批处理间隔:
- 参数:
rocket_preload_pending_jobs_cron_interval
- 默认值:60秒
- 建议:根据服务器负载和网站访问频率调整。较短的间隔可能提高速度,但需确保服务器能够承受。
rocket_preload_pending_jobs_cron_interval: 60
- 每个请求间隔延迟:
- 参数:
rocket_preload_delay_between_requests
- 默认值:500,000微秒(0.5秒)
- 建议:根据服务器性能和流量负载,适度增加延迟以减轻CPU压力。
rocket_preload_delay_between_requests: 500000
通过根据具体需求调整这些参数,可以更好地适应 WordPress 部署环境,确保 WP Rocket 在各种情况下都能够高效运行,提供快速的页面加载体验。
通过我们大量的实践,给出调整建议如下:若服务器可用的 CPU 资源不低于 2 核,内存不低于 4GB,则建议保持默认设置。若低于这个标准,考虑适度降低批处理大小,提高延迟时间等参数。另外,对于高配置主机且内容庞大的情况,可以考虑适当增加批处理大小与降低延迟时间,以加速预加载的完成时间。
如2核2G的服务器,建议调整为:
- 每次运行的批处理大小将从45个URL减少到30个URL。
- cron间隔将从60秒减缓至120秒。
- 每个请求之间的延迟将从0.5秒调整为0.6秒。
调整方法
namespace WP_Rocket\Helpers\static_files\preload\change_parameters;
/**
* 1) 批处理大小
* 修改每个批次预加载的URL数量,默认为45。
* 较低的值有助于服务器一次处理较少的请求。
*/
function preload_batch_size( $value ) {
// 修改此值,默认为45个URL:
$value = 30;
return $value;
}
add_filter( 'rocket_preload_cache_pending_jobs_cron_rows_count', __NAMESPACE__ . '\preload_batch_size' );
/**
* 2) CRON间隔:
* 设置所需的cron间隔(以秒为单位)。
* 较高的值为服务器在处理批次之间提供更多休息时间。
*/
function preload_cron_interval( $interval ) {
// 修改此值,默认为60秒:
$interval = 120;
return $interval;
}
add_filter( 'rocket_preload_pending_jobs_cron_interval', __NAMESPACE__ . '\preload_cron_interval' );
/**
* 3) 请求之间的延迟:
* 这是请求之间的延迟。调高延迟可减少CPU使用。
* 默认值为0.5秒(500000微秒)。
*/
function preload_requests_delay( $delay_between ) {
// 编辑此值以更改秒数。
$seconds = 0.6;
// 编辑完成。
// 完成所有编辑,不要更改其它部分。
$delay_between = $seconds * 1000000;
return $delay_between;
}
add_filter( 'rocket_preload_delay_between_requests', __NAMESPACE__ . '\preload_requests_delay' );
将这段代码添加至 WPCode Pro 插件的 PHP 类型代码段中(选择到处运行),或添加至当前主题的 functions.php 文件中。
该方法在 WP rocket v3.15.5 版中测试通过,如后续版本有变化,我们将及时修正相关内容。
推荐使用 WPCode Pro 插件对 WordPress 中的自定义 PHP 代码进行管理,有关使用教程可参考:functions.php替代者:WPCode Pro 插件使用教程。
或者使用已经按本教程调整好参数的插件:点这里下载。
暂无评论内容