как сделать отдельные страницы кэширования основанными на значении cookie?

Я хотел бы обслуживать адаптивные размеры изображений на основе разрешения экрана пользователя.

Я наткнулся на это отличное решение Адаптивные изображения, но это решение не будет работать правильно с лаком.

потому что, например, — если клиент a с мобильным телефоном будет запрашивать изображение, то изображение будет храниться в кэше лака как маленькое изображение для мобильных телефонов. и это изображение будет позже предоставлено пользователям настольных компьютеров.

Я думаю, что если я найду способ отделить базу данных кэширования от значения cookie (часть адаптивные изображения скрипт) — тогда каждое изображение будет основываться на ширине экрана пользователя.

поэтому, если я не ошибаюсь, то плохая ситуация, которую я описал выше, будет решена.

Можете ли вы помочь мне создать правильный код Vcl для этого.
1. Разделение должно применяться только к изображениям (jpg, gif, png).
2. и он должен отделять каждый кеш на основе значения cookie_a

Спасибо

2

Решение

По сути, вам нужно изменить метод vcl_hash, в котором лак хранит данные, чтобы использовать cookie, только когда URL является изображением (jpg, gif, png).
Для простоты, давайте предположим, что Varnish сохраняет изображение в ключе «image.jpg», и вам нужно сказать Varnish, что ключ «image- [size] .jpg», где [size] может быть cookie, размер изображения или оба.
Чтобы решить проблему «только для изображений», вы должны сделать что-то вроде

if (req.url ~ '(jpg|gif|png)') {
// Change the hash here
}

С этим в мыслях, Вот Вы можете найти хороший пример того, как это сделать.
Другие полезные сайты:

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]