2016-03-08 25 views
1

我們正在緩存有問題的IIS服務器,它有時只是發送空響應(0字節)而不是正確響應。緩存這些響應將是一場災難,我們無法解決問題,因爲它不是我們的服務器。相反,我想指示Varnish不緩存來自後端的響應(如果它們爲空)(0字節)。是否可以根據Varnish中後端響應的大小來防止緩存?

閱讀VCL參考文獻(https://www.varnish-cache.org/docs/4.0/reference/vcl.html)我看不出任何明顯的解決方法。

可以這樣做嗎?

回答

1

響應的大小應作爲HTTP標頭提供。

例子(vcl_backend_response):

if (beresp.http.Content-Length == "0") { 
    return(retry); # Retries the request 
} 

或:

if (beresp.http.Content-Length == "0") { 
    beresp.uncacheable = true; # Prevents object from being cached 
} 
1

如果你想使用它作爲一個整數,看是否大於或小於值,使用std。

import std; 

if (std.integer(beresp.http.content-length, 0) < 500) { 
    #logic here 
} 
相關問題