使用WP Cron清除页面缓存?

时间:2018-12-31 作者:Best Dev Tutorials

我正在使用一个插件(Comet缓存)来保存我网站上特定页面的静态版本。

在插件中,我将缓存设置为每2小时清除一次(这样这个页面可以显示最新的、未缓存的)数据版本。

唯一的问题是,要再次缓存此页面,必须有人手动浏览它。

我正在尝试使用WP Cron自动执行此操作,它会触发页面内容加载。我也一直在考虑在WordPress之外使用Python来实现这一点。

有没有最佳实践方法可以做到这一点?谢谢

2 个回复
SO网友:Justin Waulters

如果网站没有被点击,那么WP Cron系统就无法正常工作。如果要防止用户必须是启动缓存刷新的用户,可以使用以下命令设置实际的计划任务AWS LambdaCronJob.org 每时每刻都要翻页。

然而,即使计划的任务每分钟运行一次,仍然有一个接近一分钟的小窗口,其中用户可能仍然是启动WP Cron的人。

如果缓存系统具有适当的挂钩,更好的解决方案是将计划任务设置为使用以下查询字符串命中url?cache_refresh=true 然后对其进行解析以刷新缓存(或使其过期并再次设置),这样用户就永远不会是启动刷新的人。使用此方法,您可以将过期时间设置得更高(例如一天),然后使计划任务每两小时运行一次,以使计划任务完全控制何时刷新缓存。这样,您就完全不需要再使用WP-Cron系统了。

如果你的插件没有实现这一点的挂钩,你可能需要检查它是否正在使用Wordpress Transients 实现缓存。如果是这样的话,您可以使用瞬态API强制刷新,或者干脆将插件全部丢弃,直接将瞬态API用于计划的任务,以便更好地控制流程。

EDIT: 此外,对于这个应用程序来说,可能有点过头了,您可以让您的WP Cron激活一个异步任务,该任务将在后台完成—使用库(如this one.

SO网友:John Dee

是的,使用WP-CRON将适用于这口井。一种方法是在每次加载页面时立即为设置一个新的cron。不要为作业指定唯一的名称。默认情况下,WP-CRON每十分钟只执行一次操作。因此,如果您的站点经常受到攻击,cron将每隔十分钟左右运行一次。它运行自己的进程,因此不应该减慢系统的速度。2小时的想法是浪费,因为它是徒劳无益的。

好处是它很简单,并且每十分钟更新一次缓存。缺点是,如果没有人访问该站点,第一个页面将是旧的缓存数据[然后将启动即时cron]。请注意,如果此数据仅可供登录的查看器访问,或者您必须单击菜单或任何东西,这将在后台设置cron。

是的,这是一种很好的方法,可能是在后台加载缓存数据的最佳方法。