Apache mod_cache: изменяет кэш на основе значений cookie - PullRequest
3 голосов
/ 16 марта 2011

В настоящее время я использую mod_cache для кэширования сведений о странице веб-приложения.

У меня есть кэш Vary, основанный на User-Agent и Accept-Language, поскольку для этих ситуаций существуют разные полезные нагрузки.

Vary: User-Agent, Accept-Language

Мы планируем размещать информацию о регионе для каждой страницы, но именно здесь мы пытаемся определить нашу стратегию кэширования.

У нас есть файл cookie, который по-прежнему указывает регион, для которого мы геолокацию, но очевидно, что кэш не зависит от этого файла cookie.

Можно ли варьировать в зависимости от значения для определенных файлов cookie или заголовков в целом? (Обратите внимание, я говорю некоторые куки, поскольку мы не хотим, чтобы идентификатор сеанса конфликтовал с этим) - что-то вроде регулярного выражения, соответствующего этому:

location=(.+?);

1 Ответ

1 голос
/ 28 апреля 2015

Это возможно при использовании Apache. Он может проанализировать значение cookie и передать его в пользовательский заголовок, затем вам нужно изменить этот заголовок:

# Set languageC cookie value to environment variable "siteLanguage"
RewriteCond %{HTTP_COOKIE} ^.*lunetics_locale.*$ [NC]
RewriteCond %{HTTP_COOKIE} (?:^|;\s*)lunetics_locale=([^;]*) [NC]
RewriteRule ^(.*)$ - [env=siteLanguage:%1]

# If no languageC cookie present. Set "siteLanguage" environment variable to "en"
RewriteCond %{HTTP_COOKIE} !^.*lunetics_locale.*$ [NC]
RewriteRule ^(.*)$ - [env=siteLanguage:en]

# Set enviroment variable "siteLanguage" value to custom header "SiteLanguage"
RequestHeader set X-Language "%{siteLanguage}e" env=siteLanguage

и добавьте Vary X-Language к заголовкам ответа. Я не уверен, что это лучший способ, у меня есть вопрос и проблемы, связанные с этим: Можно ли варьировать кэши страниц (иметь версии кэша) с одним и тем же URL-адресом и разными значениями cookie (языком)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...