目前,我正在使用mod_cache来缓存Web应用程序的页面详细信息。
我有基于User-Agent和Accept-Language的缓存Vary,因为这些情况有不同的有效负载。
Vary: User-Agent, Accept-Language
我们计划在每个页面上都有特定于区域的信息,但这是我们尝试确定缓存策略的地方。
我们有一个Cookie会持续显示我们为地理位置定位的区域,但很明显缓存不会因此Cookie而异。
对于某些Cookie或标题,可以根据值进行更改? (注意我说某些cookie,因为我们不希望会话标识符与此冲突) - 类似于正则表达式匹配:
location=(.+?);
答案 0 :(得分:1)
使用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
添加到您的回复标头中。
我不确定这是最好的方法,我有相关的问题和问题:Is it possible to vary page caches (to have cache versions) with the same url and different cookie value (language)?