假设我们有一个 WordPress 网站example.com
我们的网站上有多种产品。网址如下:
example.com/products/product-1/
example.com/products/product-2/
example.com/products/product-3/
etc...
为了举例,我们假设如下:
- 每个产品页面需要 10 秒钟才能生成。由于无法提高硬件或软件性能,因此生成产品页面至少需要 10 秒钟。
- 产品页面上的信息每小时更改一次。假设每个产品页面内容每小时更改一次,并且保持不变,直到下一个小时到来。
- 我们不想由最终用户触发缓存再生。换句话说,如果一个小时过去了,缓存仍然无效,则必须由服务器上的某个进程(NginX、Varnish 等)检查和更新缓存……而不是最终用户。我们不想让 John 等待 10 秒钟,他是一个没有耐心的人。
- 我们不想在应用程序级别进行任何缓存,没有 memcahed,没有 wp_cache 插件,没有类似的东西。它必须通过 NginX 或 Varnish 或类似的东西来实现。
我可以仅通过 NginX 缓存这些页面并每小时重新缓存它们吗?
我需要清漆吗?
我该如何设置才能自动为所有页面重新缓存?
答案1
如果可以同时清除所有页面,那么您可以执行一个简单的 cronjob 来清空 nginx 缓存目录。
对于更细粒度的清除,你可以使用ngx_cache_purge模块,然后设置一个配置,允许通过对 nginx 服务器进行特定的 URL 调用来清除文件。
然后,您可以设置 cron 作业来调用 nginx 服务器。
为了使用ngx_cache_purge
模块,您可能需要从源代码编译您的 nginx。