1
我使用的清漆緩存,下面來檢查移動/平板電腦設備:光油緩存移動
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
}
我的問題是,這個頭不構成緩存哈希的一部分(如果這是正確的術語)。因此,如果首先在移動設備上查看,則無論設備如何,都會緩存所有未來的請求。反之亦然,如果第一個請求來自桌面風格的設備。
我怎樣才能使這個頭部分的哈希,使我可以從PHP可靠地得到它,同時仍然緩存使用mobile
和pc
的網站的兩個版本?