Http

Varnish:是否可以不只記憶體頁面的一個特定部分?

  • February 8, 2019

假設我有一個頁面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
   }
}

引用自:https://serverfault.com/questions/952793