基于 cookies 的 NGINX 缓存

基于 cookies 的 NGINX 缓存

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) 

相关内容