モバイル/タブレット デバイスを確認するために、次のように Varnish キャッシュを使用しています。
sub device_detection
{
set req.http.X-Device = "pc";
if(req.http.User-Agent ~ "iP(hone|od)" || req.http.User-Agent ~ "Android" || req.http.User-Agent ~ "Symbian" || req.http.User-Agent ~ "^BlackBerr$
{
set req.http.X-Device = "mobile";
}
if(req.http.User-Agent ~ "^PalmSource")
{
set req.http.X-Device = "mobile";
}
if(req.http.User-Agent ~ "Build/FROYO" || req.http.User-Agent ~ "XOOM" )
{
set req.http.X-Device = "pc";
}
if((req.http.Cookie ~ "(force_desktop)"))
{
set req.http.X-Device = "pc";
}
if((req.http.Cookie ~ "(force_mobile)"))
{
set req.http.X-Device = "mobile";
}
}
これにより、新しいヘッダーが正常に設定されます。次に、次を使用して PHP でこれを確認できます。
if(isset($headers['X-Device']) && $headers['X-Device'] == "mobile")
{
// do mobile stuff here
}
私の問題は、このヘッダーがキャッシュ ハッシュの一部を形成しないことです (それが正しい用語である場合)。そのため、最初にモバイル デバイスで表示された場合、デバイスに関係なく、今後のすべてのリクエストのキャッシュになります。最初のリクエストがデスクトップ スタイルのデバイスから送信された場合は、その逆です。
mobile
と を使用してサイトの 2 つのバージョンをキャッシュしながら、PHP から確実に取得できるように、このヘッダーをハッシュの一部にする方法を教えてpc
ください。