Http
Varnish:是否可以不只記憶體頁面的一個特定部分?
假設我有一個頁面
example.com/location
- 現在我希望記憶體該 URL 的內容,除了頁面的一個特定 HTML 部分,它應該定期更新。這個 HTML 區域不應該放在記憶體中,而是應該在每次請求進入該部分時查詢後端。這有可能嗎?
是的,這是可能的。您在ESI 包含.
也就是說,您的
/location
程式碼必須重寫以拆分可記憶體/不可記憶體的內容,例如:<?php echo 'Hello, I will be cached'; ?> <esi:include src="/your-uncacheable.php"/>
顯然,您會將生成不記憶體的 HTML 的邏輯放入
/your-uncacheable.php
.然後您將在 VCL 中啟用 ESI:
sub vcl_backend_response { if (bereq.url == "/location") { set beresp.do_esi = true; // Do ESI processing set beresp.ttl = 24 h; // Sets the TTL on the HTML above } elseif (bereq.url == "/your-uncacheable.php") { set beresp.ttl = 0m; // Sets zero TTL on // the included object } }