我正在运行 WordPress Multisite/Network,并希望 FastCGI 保留缓存一段较长的时间(比如一周或一个月)。原因是,我们有一个插件,当发生更改时会强制刷新缓存,用户可以手动刷新整个网站,当我们推出更新时,我们也会清除缓存。因此,缓存的填充通常是“最新的”
这是我当前在我的conf文件中的代码...
fastcgi_cache_path /var/cache/html levels=1:2 keys_zone=FASTCGICACHE:500m
inactive=30d;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
以下是我的问题:
- 如何设置 30 天不活动?“30d”正确吗?编辑:我将其更改为“inactive=10080m”,但它似乎仍然会在 10 分钟后过期(默认值)
- 我注意到,经过一段时间(几个小时,也许一天)后,服务器返回“x-fastcgi-cache: EXPIRED”,而当我刷新时,会得到“HIT”。我知道非活动状态的默认值是 10m,因此如果 #1 为真(30d 不正确),那么这就是原因吗?如果不是,还有其他想法吗?
- 当“x-fastcgi-cache:EXPIRED”时,加载 URL 需要更长的时间,它不应该提供当前版本(意味着相同的快速度)然后获取新版本的缓存吗?
- 我的 WordPress 设置有多个域,我怎样才能让缓存将每个第一级目录存储为域名而不是 MD5 缓存键。(因此,不是 /s/somereallylong string,而是 /example.com/somereallylongstring
答案1
因此经过一番研究,我找到了答案的部分内容,然后设法自己完成了其余部分。
- 不活动需要以分钟或“m”为单位,因此 10080m
- 学到了新东西。Inactive 是系统内部用来清除旧文件的东西,与缓存 EXPIRE 无关。也就是说“fastcgi_cache_valid”定义缓存是否过期,H/TNginx fastcgi_cache_valid 与 fastcgi_cache_path 不活动
- 这是对“fastcgi_cache_use_stale”用法的误解。据我所知,只有当应用服务器(使用 PHP 或其他方式构建)构建分页符时,它才会使用,它将恢复为过时版本,但如果应用服务器正在运行,它将等待新版本。
- 这个问题仍然没有答案。