2013-03-18 59 views

回答

3

如果能夠基於URL識別您的AJAX請求,您可以輕鬆地管他們都具有以下VCL後端:

sub vcl_recv { 
    if (req.url ~ "(ajax\.php|dynamic\.php)") { 
    return(pipe); 
    } 
} 

這將管道的所有請求,其中URL包含ajax.phpdynamic.php

+0

如果可以,請使用return(pass)而不是管道。 Pipe-d請求不會顯示在varnishlog中。還要記得添加'Connection:close',否則你會遇到keepalive問題。 – lkarsten 2013-03-21 15:21:13

+0

這是一個很好的觀點。我不記得爲什麼,但由於某種原因,vcl_pass()不適用於我們所有的請求,所以我們不得不使用vcl_pipe()。 – Ketola 2013-03-25 12:16:15

4

只要後端服務器要求,Varnish將只緩存內容。如果後端服務器不發送任何類似內容,則默認緩存120秒。

這樣做的正確方法是修改後端應用程序以發送Cache-Control: max-age=0響應標頭。

還應該注意的是,即使是第二個(max-age = 1)的緩存,在擁有大量併發用戶的站點上,也會給出好的結果。