最近把Blog的前端放到了阿里云香港B,为了更好的缓存和试验新的架构选用了很出名的Varnish来替换掉Nginx作为前端缓存服务器使用. 因为使用的是自定义的一个VCL文件,导致PURGE规则和Blog正在使用的缓存插件WP-Rocket不兼容,使用WP-Rocket插件内部自带的Varnish模块不能清理文章,清理缓存只对首页有效.

在查看了Varnish的日志之后发现,WP-Rocket发送的全局清理的参数类似于 http://example.com/*. 或者 http://example.com/page/.* 但是我的Varnish并没有配置支持Ban方法和支持正则表达式.为了能够清理文章页面,目前我在主题的function.php中加入了以下钩子作为一个临时的解决方案.

//这是一个临时解决方案.
function purge_varnish($post_ID) {
	$url = get_permalink($post_ID);

	wp_remote_request(
		$url,
		array(
			'method'      => 'PURGE',
			'blocking'    => false,
			'redirection' => 0
		)
	);
}

add_action('save_post', 'purge_varnish');

当发布或者更新文章的时候就会自动触发钩子来执行清理动作. 就像备注里所说的一样,这只是一个临时的解决方案,只能清理对应的文章页面.其他相关联的东西都没有修改.等我有空的时候研究一下相关联的内容,再来扩充这个,

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据