2017-04-05 146 views
2

我想通过使用自定义标头来实现我的脚本中的自定义nginx缓存控制方法:“Do-Cache”。Nginx缓存绕过自定义响应标头

map $sent_http_do_cache $nocache { 
     public 0; 
     default 1; 
} 

而在Nginx的服务器块: 我在Nginx的HTTP模块使用

fastcgi_cache_bypass $nocache; 
fastcgi_no_cache $nocache; 

因此,对于Do-Cache: public,nginx的应缓存响应。否则不是。

但是这种配置不起作用。通过调试成日志,$sent_http_do_cache$nocache的值是正确的,直到它们用于nginx的服务器块。如果在服务器块(fastcgi_cache_bypass $nocache或简单的set $a $nocache)中使用它们,则$nocache变量获得“1”值,$sent_http_do_cache - “ - ”。

是否有任何其他方式来管理基于自定义标头的nginx缓存?

回答

0

基于响应头的缓存不能完成,因为它意味着Nginx必须将请求代理回到后端并检查其响应,从而破坏代理缓存的目的。