2012-01-19 32 views
3

我目前正在設置一個清漆(V3),但我想知道是否有人對以下任何建議。我試圖使用PHP的Header()函數來設置自定義標題,例如,測試:CustomHeader。最終目的是讓Varnish能夠緩存頁面,除非瀏覽器在這種情況下增加了一些東西到購物籃中。我在想,在我的VCL配置文件中,我可以這樣做:客戶頭與PHP和清漆

if (bereq.http.Test ~ "CustomHeader") { 
    set beresp.ttl = 0s; 
    return (hit_for_pass); 
} 

但是,這總是評估爲false \ no match。如果我將它設置爲

if (bereq.http.Test != "CustomHeader") { 
    set beresp.ttl = 0s; 
    return (hit_for_pass); 
} 

然後hit_for_pass總是被觸發,這導致我相信我的標頭設置有些不對勁。我認爲這可能是因爲PHP緩衝區標題不會被設置,因爲緩存的整個點,但檢查varnishlog中的標題DOES顯示客戶標題出現雖然,這是混亂!此外,訪問有問題的頁面始終會執行緩存命中。 有沒有人有任何提示\建議這種頭版操作在清漆? 非常感謝 -B

回答

2

對這樣的東西使用自定義標頭是一個壞主意。許多代理將剝離它們無法識別的標頭,因此即使按照您希望的方式工作,也無法依賴此標頭。

這是什麼餅乾的設計 - 用它們代替。

+0

非常感謝這個!我嘗試使用cookies,但無法使用它,但我認爲我只需要努力嘗試:)再次感謝 – flukeflume

+0

@DaveRandom - 您的位置與人們在http://stackoverflow.com/中所說的相反問題/ 1810915 - 你能否詳細說明一下代理剝離自定義頭文件的例子?謝謝! –