簡體   English   中英

清漆緩存一些cookie?

[英]Varnish caching for some cookies?

幾個月前,我開始使用Varnish,我的vcl文件開始變得復雜。 我使用相同的清漆實例(使用不同的后端)為5個不同的站點提供服務,而這部分正在正常工作。

現在,有些情況下,對於某些站點,我需要保留一些cookie並根據它們緩存不同的版本。 基本方案是僅在用戶首次看到該頁面時向其顯示一條消息。 如果沒有cookie,就不用清漆,我將其設置並顯示消息。 下次出現cookie時,不會顯示任何消息。

使用清漆時,我的邏輯是將cookie包含在哈希中並緩存兩個不同的版本。 面臨的挑戰是確保cookie設置正確,並且這里有點堆。 我在vcl中添加了一些調試消息,由於某種原因,我在vcl_backend_response中看不到在服務器中設置的cookie。 在例程中,開頭有以下代碼:

   # AT: DEBUG
   if(bereq.http.x-at-debug == "1") {
     std.log("AT DEBUG - bereq URL: " + bereq.url + ". Cookies: '" + bereq.http.Cookie + "'");
     std.log("AT DEBUG - beresp set-cookie: '" +  beresp.http.set-cookie + "'");
   }

我根據IP在vcl_recv中設置了x-at-debug標頭,因此我只能跟蹤我的請求。 在服務器端,我看到設置了Cookie“ __ IKUB_AL_Myikub_PopUp”,但在vcl_backend_response中未設置。

兩者之間是否有任何東西可以剝離Cookie?

問題的核心是beresp.http.set-cookie僅返回第一個set-cookie標頭。 如果您有更多內容,則需要清漆模塊中的標頭模塊( https://github.com/varnish/varnish-modules )。 請注意,它僅適用於清漆4.1。

暫無
暫無

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

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