NGINX 有没有办法根据 cookie 的值使用不同的缓存?
就我而言,我有一个网站(在我的情况下是一个插件),它创建了一个名为 devicePixelRatio 的 cookie。在大多数情况下,这个值是 1,但如果您有一个高 DPI 显示器,那么它将等于 2(或更大)。基本上,服务器端会根据此 cookie 的值(无论是 1 还是其他值)以不同的方式生成网站。基本上我需要两个缓存,一个用于 devicePixelRatio=1,另一个用于 devicePixelRatio 的任何其他值。
那可能吗?
多谢。
答案1
是的,有可能。
https://stackoverflow.com/questions/26128412/how-to-extract-some-value-from-cookie-in-nginx
http://nginx.org/en/docs/http/ngx_http_core_module.html#variables
使用客户端请求标头来评估 cookie 内容。围绕此内容构建缓存访问逻辑。
更多信息:https://serversforhackers.com/nginx-caching/
这是一个起点:
http://syshero.org/post/50053543196/disable-nginx-cache-based-on-cookies
例如,你可以将 proxy_cache_path 放在评估 cookie 内容的 if 语句中。伪代码:
if $cookie_devicePixelRatio = 2
proxy_cache_path = /retina/;
(or fastcgi_cache_path)
else
proxy_cache_path = /sd/;
(or fastcgi_cache_path)