簡體   English   中英

Varnish 3 - 如何在http標頭中設置最大年齡

[英]Varnish 3 - how to set maximum age in http headers

我正在使用Varnish 3.0.3並通過在HTTP標頭中為靜態資源設置最大年齡來使用它來利用瀏覽器緩存。 我嘗試將以下配置添加到default.vcl:

sub vcl_fetch {
  if (beresp.cacheable) {
    /* Remove Expires from backend, it's not long enough */
    unset beresp.http.expires;

    /* Set the clients TTL on this object */
    set beresp.http.cache-control = "max-age=900";

    /* Set how long Varnish will keep it */
    set beresp.ttl = 1w;

    /* marker for vcl_deliver to reset Age: */
    set beresp.http.magicmarker = "1";
  }
}

sub vcl_deliver {
  if (resp.http.magicmarker) {
    /* Remove the magic marker */
    unset resp.http.magicmarker;

    /* By definition we have a fresh object */
    set resp.http.age = "0";
  }
}

這是從https://www.varnish-cache.org/trac/wiki/VCLExampleLongerCaching復制的。 也許我剛寫了一個錯字。 重新啟動Varnish后,它不再有效。

我有兩個問題。 這是為Varnish 3做正確的方法嗎? 如果是這樣,我做錯了什么? 其次,有沒有辦法在重啟之前測試Varnish配置文件? Apache與“/ sbin / service httpd configtest”的方式有關。 在上線之前捕獲錯誤。 謝謝。

是的,一般來說這是覆蓋后端TTL的方法。 刪除beresp.http.expires,設置beresp.http.cache-control,設置beresp.ttl。 beresp.cacheable是2. [01] -ism。 3.0中的相同測試是檢查beresp.ttl> 0。

一個小技巧是將您的魔術標記存儲在req.http上,然后在將對象交給客戶端之前不必清理它。

關於測試配置文件,您可以直接使用“varnishd -C -f /etc/varnish/default.vcl”調用VCL編譯器。 如果您的VCL出現故障,則會收到錯誤消息,如果VCL有效,您將獲得一些生成C代碼的頁面。

暫無
暫無

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

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