2011-03-15 4 views
3

現在、mod_cacheを使用してWebアプリケーションのページの詳細をキャッシュしています。Apache mod_cache:クッキー値に基づいてキャッシュを変更する

私は、これらの状況に異なるペイロードがあるため、User-AgentとAccept-Languageに基づいてキャッシュを変更しています。

Vary: User-Agent, Accept-Language 

各ページに地域固有の情報を設定する計画がありますが、ここではキャッシュ戦略を決定しようとしています。

ジオコーディネーションされた領域を示すためにクッキーが残っていますが、このクッキーに基づいてキャッシュは変化しません。

特定のCookieまたはヘッダー全般について、に基づいて変更することはできますか? (私たちはこれと衝突するセッション識別子を望んでいないだろうとして、特定のクッキーを言って注意してください) - これに正規表現マッチのようなもの:

location=(.+?); 
+0

原則として、訪問者のPCにはクッキーが存在しないと仮定します。もう一つのアイデアは、ジオロケーションを使用することです、PHP用のいくつかの無料のライブラリがあります。 – Bakudan

答えて

1

にApacheを使用して可能です。

# 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)?

関連する問題