2014-09-21 59 views
1

我發佈了一個PHP腳本,最近很多人在共享主機帳戶的varnish緩存中遇到問題。如何從PHP腳本中禁用Varnish Cache?

這是PHP腳本頂部的代碼。但是,我仍然在響應頭文件中獲得「Varnish:HIT」(並且腳本無法正常工作)。

header('Pragma: no-cache'); 
header('Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate, proxy-revalidate'); 
header('Expires: Tue, 04 Sep 2012 05:32:29 GMT'); 

一個託管服務提供商表示,即使通過設置上面的緩存標頭,也不可能禁用PHP腳本中的清漆。這似乎..好吧..傻嗎?但似乎符合我的經驗。

那麼有沒有辦法在PHP中禁用/跳過清漆?或者varnish(默認)只是忽略PHP設置的這些緩存頭?


感謝斯 - 安德烈·科赫 - 我會包括與PHP腳本一起清漆指示,使其忽略無緩存響應:

sub vcl_fetch { 
     if (beresp.http.cache-control ~ "(no-cache|private)" || 
      beresp.http.pragma ~ "no-cache") { 
       set beresp.ttl = 0s; 
     } 
} 

回答

4

你不能在PHP中禁用光油但你可以用它來使上光油忽略當前頁面一招。光油不會緩存如果要設置一個cookie的網頁,所以每當你想清漆不緩存特定頁面,您可以寫一段代碼:

setcookie('xx', microtime(true), time()+600, '/'); 

不是最優化的解決方案,但它工作得很好。 ..

3

您可以禁用緩存光油具有下列創建一個.htaccess文件:

Header set Cache-Control "max-age=0, private, no-cache, no-store, must-revalidate"