Рейтинг:1

Cloudflare кэширует все

флаг ch
STF

у нас есть Drupal 8 с правилом кеша Cloudflare. По умолчанию у нас всегда есть валюта GBP, затем мы разработали модуль, который позволяет пользователям изменять свою валюту с помощью раскрывающегося списка нижнего колонтитула и сохраняет ее в сеансе пользователя.

Без правила кеша Cloudflare веб-страница работает правильно. Проблема в том, что если правило активно, первое посещение Интернета кешируется с валютой по умолчанию, затем, если кто-то пытается изменить валюту на евро, веб-страница перезагружается и показывает кешированную страницу с валютой по умолчанию, а не с евро. .

Кэш Cloudflare находится по URL-адресу, и мы всегда сохраняем один и тот же URL-адрес для всех валют.




Запустить скриншоты Clodflare

Правило Cloudflare Cache Уровень кеша Cloudflare

Конец скриншотов Clodflare




Мы подумали, что решение состоит в том, чтобы добавить/принудительно указать валюту в качестве параметра URL-адреса.

https://www.amazon.com/ 
https://www.amazon.com/?currency=EUR&language=es_US 
https://www.amazon.com/?currency=EUR&language=en_US 
https://www.amazon.com/?currency=USD&language=es_US

Можно ли заставить запрос всегда иметь параметр? Есть какой-либо способ сделать это? Нравится EventSubscriber?

Спасибо вам всем.

Рейтинг:1
флаг cn

Да, вы можете заставить запрос всегда иметь параметры запроса, перенаправив подписчика событий. Проблема в том, как узнать, какую валюту запрашивает пользователь, если параметр отсутствует? Итак, вы, вероятно, хотите обработать исходящие пути, чтобы они уже имели правильные параметры.

Кстати, ваш вопрос немного сбивает с толку. В первой части речь идет о зарегистрированных пользователях. Тогда решение заключается не в параметрах запроса, а в настройке CDN для обхода кеша на СЕСС.* куки (которые вам нужны в любом случае, чтобы пользователь оставался в системе). Видеть https://support.cloudflare.com/hc/en-us/articles/115002911927-Кэширование-HTML-с-Drupal

STF avatar
флаг ch
STF
Привет @ 4k4, спасибо за быстрый ответ. Всегда существует файл cookie сеанса, и он необходим для гостей и зарегистрированных пользователей. Мы попытались настроить CDN с помощью файла cookie сеанса (а также пользовательских файлов cookie), но мы не можем использовать это решение. Вот в чем вопрос, если в запросе нет параметра валюты, могу ли я принудительно добавить его, если он существует в сеансе?
STF avatar
флаг ch
STF
Если я попытаюсь получить доступ к сайту www.example.com и если у меня в сеансе есть EUR, но параметр не существует, могу ли я принудительно изменить этот запрос на www.example.com?currency=EUR
4uk4 avatar
флаг cn
Вы можете получить сеанс в подписчике событий `$event->getRequest()->getSession()` и перенаправить, если параметр запроса отсутствует. См. https://www.drupal.org/node/2013014. Но я не уверен, что это работает, если вы настроили CDN для кэширования трафика с помощью файлов cookie сеанса. И вы все равно можете добавить параметры запроса к исходящим ссылкам, особенно к раскрывающемуся списку валют.
Рейтинг:0
флаг ch
STF

У Cloudflare есть опция Custom Cache Key. Здесь я могу настроить кеш по имени файла cookie и/или имени и значению файла cookie.

Мы сохраняем валюту в файле cookie, и Cloudflare может определить имя файла cookie с указанной валютой.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.