2013-04-29 118 views
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可靠地得到它,同時仍然緩存使用mobilepc的網站的兩個版本?

回答