2017-03-12 28 views
0

我有關於光油4.1.1的問題。我需要在TTL中過期靜態內容。該vcl_backend_response塊具有以下設置:高速緩存的對象不會在光油中過期4.1.1

sub vcl_backend_response { 
if (beresp.http.Surrogate-Control ~ "ESI/1.0") { 
    unset beresp.http.Surrogate-Control; 
    set beresp.do_esi = true; 
} 
if (beresp.status == 301 || beresp.status == 302) { 
    set beresp.http.Location = regsub(beresp.http.Location, ":[0-9]+", ""); 
} 
if (beresp.status == 500 || beresp.status == 502 || beresp.status == 503 || beresp.status == 504) { 
    return (abandon); 
} 
if (bereq.url ~ "^https?:\/\/(www\.)?sample\.com(\/.*)?$|^https?:\/\/((www\.)?(media|media1)\.)?sample\.com(\/.*)?$") { // This code filter my URL 
if (bereq.url ~ "^[^?]*\.(css|js)(\?.*)?$") { // This code store css and js 
    unset beresp.http.set-cookie; 
    if (beresp.ttl <= 0s || beresp.http.Set-Cookie || beresp.http.Surrogate-control ~ "no-store" || (!beresp.http.Surrogate-Control && beresp.http.Cache-Control ~ "no-cache|no-store|private") || beresp.http.Vary == "*") { 
    set beresp.ttl = 1m; 
    set beresp.uncacheable = true; 
    return (deliver); 
    } 
} 
if (bereq.url ~ "^[^?]*\.(jpeg|jpg|gif|png)(\?.*)?$") {// This code store images 
    unset beresp.http.set-cookie; 
    if (beresp.ttl <= 0s || beresp.http.Set-Cookie || beresp.http.Surrogate-control ~ "no-store" || (!beresp.http.Surrogate-Control && beresp.http.Cache-Control ~ "no-cache|no-store|private") || beresp.http.Vary == "*") { 
    set beresp.ttl = 1m; 
    set beresp.uncacheable = true; 
    return (deliver); 
    } 
} 

上面的代碼工作正常,但對象鴕鳥政策到期基於定義的TTL。 Varnishstat Agent中的存儲參數不會更新該字段。然而,下面的代碼做工作正常(全部清除緩存):

sub vcl_backend_response { 
    set beresp.ttl = 1m; 
    return(deliver); 
} 

我的問題是:這是正常的這種行爲在清漆?

問候。

回答

0

的代碼的「上方」:

  • 作品只對CSS和JS具有過期在過去,有餅乾或緩存控制;或者換句話說,這告訴光油不能對其進行緩存
  • 覆蓋TTL至1分鐘
  • 它們標記爲命中爲通和不可高速緩存1分鐘
  • 不必要的複雜

這將作爲你想要的工作:

sub vcl_backend_response { 
    if (bereq.url ~ "^[^?]*\.(css|js)(\?.*)?$") { 
     unset beresp.http.set-cookie; 
     set beresp.ttl = 1m; 
    } 
    if (bereq.url ~ "^[^?]*\.(jpeg|jpg|gif|png)(\?.*)?$") {images 
     unset beresp.http.set-cookie; 
     set beresp.ttl = 1m; 
    } 
} 

基本建議 - 不要試圖粘貼東西從互聯網複製,而不試圖瞭解事情禾RK。你的VCL清楚地表明重複複製粘貼工作,而沒有考慮到發生的事情。