我尝试找到一种智能的方式来按需启用 fasctcgi_cache,它的默认方式是默认启用,除非你这样做
fastcgi_cache_bypass true;
fastcgi_no_cache true;
我试图达到相反的效果。
我现在有的是:
fastcgi_cache_bypass $upstream_http_no_cache;
fastcgi_no_cache $upstream_http_no_cache;
我发送了我所有的网址的标题no_cache: 1;
在我需要缓存的 URL 中,我发送了标头,no_cache: 0;
因此缓存不会被禁用。
它能工作,但我并不喜欢它。我不能在配置中使用“if”,因为“如果是邪恶的“ 事物
是否有某种方法可以默认关闭它并在需要时触发它?
答案1
因此,您不想默认缓存,而是要缓存一些标头。您可以使用map
指令来实现:
map $upstream_http_no_cache $no_cache {
default $upstream_http_no_cache;
"" "1";
}
...
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;
变量$no_cache
默认为$upstream_http_no_cache
(即来自上游的 NO-CACHE 标头),但空值(即没有设置标头)映射到1
。