Назад | Перейти на главную страницу

Кэш NGINX на основе файлов cookie

Есть ли способ для NGINX иметь другой кеш в зависимости от значения cookie?

В моем случае у меня есть веб-сайт (в моем случае плагин), который создает файл cookie с именем devicePixelRatio. В большинстве случаев это 1, но если у вас дисплей с высоким разрешением, то он будет равен 2 (или больше). В основном серверная сторона генерирует веб-сайт по-разному в зависимости от значения этого файла cookie (либо это 1, либо что-то еще). В основном мне понадобятся два кеша: один для devicePixelRatio = 1 и один для любого другого значения devicePixelRatio.

Это возможно?

Большое спасибо.

Да, это возможно.

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 в оператор if, оценивающий содержимое cookie. Псевдокод:

if $cookie_devicePixelRatio = 2
proxy_cache_path = /retina/;
(or fastcgi_cache_path)
else
proxy_cache_path = /sd/;
(or fastcgi_cache_path)