簡體   English   中英

在清漆中檢測設備且無緩存

[英]Detect device in varnish and no cache

我有一個ipad應用程序,其中顯示了一些我的wordpress帖子。該站點已啟用清漆。我為應用程序頁面發送了一個自定義的http.User-Agent,因此一些桌面內容不會在應用程序中顯示,例如頁眉和頁腳,因為我的應用程序兼有。 因此,當用戶訪問桌面時將其緩存在清漆中,而當另一個用戶使用應用程序檢查同一頁面時,他將獲得桌面版本。 我在下面的默認vcl中嘗試過。

 ### do not cache these files:
##never cache the admin pages, or the server-status page
if (req.url ~ "wp-(admin|login)" || req.http.Content-Type ~ "multipart/form-data" || req.http.User-Agent ~ "IPAD_APP" )
{
    set req.backend_hint = master;
    return(pass);
}

IPAD_APP是我的自定義代理,這無濟於事。請問我這是否正確,或者是否還有其他方法可以針對台式機和應用程序版本顯示不同的內容。

您直接遇到的問題是台式機版本已緩存,因此移動人員將看到這些內容。 您可以更新vcl_hash函數以考慮它是台式機還是iPad(或可能具有任何數量的不同設備類型)。

一種選擇:

sub vcl_recv {
   set req.http.X-DeviceType = "desktop";
   if (req.http.User-Agent ~ "IPAD_APP") {
       set req.http.X-DeviceType = "ipad_app";
   }
}

sub vcl_hash {
    hash_data(req.http.X-DeviceType);
}

最后,這是從原始Wordpress發送“ Vary:User-Agent”的簡化版本。 我概述的方法存在的問題是,要進行PURGE,您需要確保依次傳遞每個User-Agent。 如果您要在緩存上發送低位TTL,那么這將不是問題。 BAN也可以解決該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM