自从 WP Rocket v3.12 版本发布后,曾经不太起作用的缓存预加载功能被重新修复,这样一来缓存到期或被清除后,插件会自动生成新的缓存。但对于内容较多,且主机配置较低的站点而言,自定义 WP Rocket 预加载参数可减少频率,降低CPU占用率。
目录
WP Rocket 的预加载缓存
全预载
部分预加载
WP Rocket 预加载默认参数
自定义 WP Rocket 预加载参数的方法
不会编码的新手可以安装这个插件
下载最新版 WP Rocket 插件
WP Rocket 的预加载缓存
预加载缓存功能通过模拟对网站页面的访问以生成缓存文件。由于该功能在插件安装时默认启用,因此不需要等到真正的访问者访问页面后才开始缓存,这样一来,页面从第一次访问开始就很快。
这对于SEO来说是非常有帮助的,不论搜索引擎的爬虫什么时候抓取网页,基本都会提供已缓存的版本,比抓取未缓存的页面速度快很多。
对于访客来说,同样!
全预载
完全缓存预加载以下 URL:
WP Rocket能识别的SEO插件生成的站点地图中的 URL。
WordPress 默认站点地图上找到的 URL – 如果未检测到第三方站点地图。
在网站主页上找到的 URL – 如果 WordPress 默认站点地图不可用。
未包含在站点地图中但被访问的 URL。
并且,预加载将在以下场景中运行:
当保存对影响前端的 WP Rocket 设置的更改时,例如:开启/关闭CSS优化(因为缓存已清除)。
当在 管理工具栏或 WP Rocket 仪表板上,点击“清除和预加载缓存”按钮时。
每当 rocket_clean_domain 调用该函数时。
部分预加载
部分缓存预加载在 WP Rocket 自动清除以下 URL 的缓存时生效:
新发布或更新的 URL,例如帖子/页面/自定义帖子类型。
包括与之相关的任何其他内容(即主页、类别、标签、分页等)
WP Rocke的始终清除 URL 框中的URL 。
已缓存页面到期时清除的页面。
一般而言,在执行部分预加载时,不会耗费太多系统资源,仅在执行全预载的时候,才有可能造成CPU占用率较高的现象。
WP Rocket 预加载默认参数
批量大小:每次运行时将处理rocket_preload_cache_pending_jobs_cron_rows_count
的URL 数量,默认值45个。[注:v3.12.0.4版本开始默认调整为45,之前版本默认100。]
批次之间的间隔:批次处理之间将应用rocket_preload_pending_jobs_cron_interval的暂停间隔,默认为 60 秒。
同一URL请求之间的延迟: rocket_preload_delay_between_requests对同一 URL 的请求延迟时间,默认值为 0.5 秒。设置一个较高的值,可以减少 CPU 占用率。
自定义 WP Rocket 预加载参数的方法
如果网站文章数量较多,而且主机配置较低的情况下,可以自定义各项参数,降低执行预载时的资源消耗。
WP Rocket 提供有相关的钩子来自定义参数,在当前主题的 functions.php 文件中加入以下代码(仅支持WP Rocket v3.12及以上版本):
/**
* 批量大小
* 更改每批预加载的 URL 数量,默认为 45。
* 较低的值可以让服务器一次处理更少的请求
*/
function preload_batch_size( $value ) {
// 更改此值,默认为 45 个网址:
$value = 35;
return $value;
}
add_filter( 'rocket_preload_cache_pending_jobs_cron_rows_count', __NAMESPACE__ .'\preload_batch_size' );
/**
* CRON 间隔:
* 以秒为单位设置所需的 cron 间隔
* 通过设置更高的值,服务器将有更多的时间在处理批次之间休息。
*/
function preload_cron_interval( $interval ) {
// 更改此值,默认为 60 秒:
$interval = 120;
return $interval;
}
add_filter( 'rocket_preload_pending_jobs_cron_interval', __NAMESPACE__ .'\preload_cron_interval' );
/**
* URL请求之间的延迟:
* 这是对同一 URL 的请求之间的延迟。
* 默认为 0.5 秒(500000 微秒)
*/
function preload_requests_delay( $delay_between ) {
// 编辑这个值,单位秒
$seconds = 1;
// 不要修改这里
$delay_between = $seconds * 1000000;
return $delay_between;
}
add_filter( 'rocket_preload_delay_between_requests', __NAMESPACE__ .'\preload_requests_delay' );
建议用WordPress替代编辑functions.php的插件:Code Snippets,而不是将代码添加到主题的 functions.php 文件中。因为更新主题后会丢失修改过的代码。
不会编码的新手可以安装这个插件
如果不知道如何将以上PHP代码插入到WordPress中,可以下载站长帮准备的插件,实现以上代码完全一样的功能。
链接: https://pan.baidu.com/s/1AMmnri63w0VYpWTc0mjFkA 提取码: b64q