2015-07-10 49 views
0

我有一個使用的ESI內容頁:包括標籤包括一個模塊,讓我們說清漆中的ESI含量是否可以被禁用/無效?

/content.html

包含

<esi:include src="/_esi/module.html"> 

兩個URL發送緩存conttrol標題在他們的迴應。對於/content.html 它

Cache-Control: public, max-age=86400

和/_esi/module.html它

Cache-Control:public, max-age=3600

當我加載/content.html我可以看到我得到一個緩存響應從varnish,並module.html標記是適當的,但是,當我改變module.html和禁止它,如:ban req.url == /_esi/module.html或即使我使禁令更廣泛:ban req.url ~ _esi我的瀏覽器頁面仍然不會改變。

我似乎無法在清漆文檔中發現這件事。我是否能夠明確地使包含的內容無效(即來自ESI網址的片段),還是必須等待它過期?

我也嘗試過使用PURGE來實現這個目標,但是我仍然無法從中獲得新鮮的內容。

回答

2

Varnish ESI將交付時將頁面的最終版本縫合在一起。

如果缺少一個對象,它將把它發送給客戶端,然後等待提取完成後再繼續。如果新提取的對象也是一個ESI對象並且有一個包含,則會導致另一個提取等等。包括首先處理深度。

包含ESI的任何對象都作爲緩存中的常規對象存在,並且可以像任何其他對象一樣清除/禁用/無效。

至於你所看到的,我的猜測是你的瀏覽器緩存干擾。嘗試使用curl,httpie或lwp-request在命令行上重現它。

+0

它絕對是瀏覽器緩存。什麼菜鳥的錯誤。謝謝 :) –