Configuration
Varnish:如何為帶有 cookie 的動態頁面添加例外
我想知道避免使用 Varnish 記憶體網站的“某些頁面”並記憶體所有其他頁面的正確方法是什麼。
這就是我試圖用 vcl conf 做的事情:
sub vcl_fetch { #set beresp.ttl = 1d; if (!(req.url ~ "/page1withauth") || !(req.url ~ "/page2withauth")) { unset beresp.http.set-cookie; } if (!beresp.cacheable) { return (pass); } if (beresp.http.Set-Cookie) { return (pass); } return (deliver); }
謝謝
通常,這將在 vcl_recv 中完成:
sub vcl_recv { if ( req.url !~ "^/page1withauth" && req.url !~ "^/page2withauth" ) { unset req.http.Cookie; remove req.http.Cookie; } }
然後,您應該從伺服器返回 set-cookie 參數的唯一時間是您嘗試唯一標識連接時。如果是因為他們剛剛發布或類似的,那已經可以逃避記憶體了。如果是因為您只是想唯一標識它們,那麼問題在於您的應用程式碼故意破壞了 Varnish;如果可以,請修復您的應用程序,否則您可以覆蓋 vcl_fetch ,類似於您在此處所做的。