我用下面的VCL可以幫助我確定如果我得到一個光油緩存命中或小姐:光油緩存未命中使用JSON內容類型
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Varnish-Cache = "HIT";
}
else {
set resp.http.X-Varnish-Cache = "MISS";
}
}
這是工作的罰款,但不用於應用程序/ json內容類型。 我在每次請求時都會得到X-Varnish-Cache =「MISS」,但是我不明白爲什麼會發生這種情況(並且我懷疑它是否爲假)。
下面是我的(顯然)非緩存JSON請求的響應頭的例子:
Accept-Ranges:bytes
Age:0
Cache-Control:public, max-age=10800
Connection:keep-alive
Content-Encoding:gzip
Content-Length:2139
Content-Type:application/json
Date:Thu, 09 Jan 2014 16:08:21 GMT
Etag:"1389283199-1"
Expires:Sun, 19 Nov 1978 05:00:00 GMT
Last-Modified:Thu, 09 Jan 2014 15:59:59 +0000
Server:Apache
Vary:Cookie,Accept-Encoding
Via:1.1 varnish
X-Drupal-Cache:HIT
X-Powered-By:PHP/5.3.23
X-Varnish:544296535
X-Varnish-Cache:MISS
如果我看的響應時間,這是對後續請求相同的URL(所以800ms的8倍快第一次,100ms第二次,然後)。這讓我認爲Varnish是緩存,但是我的vcl不正確。
我還應該補充說,沒有與請求一起發送cookie,它是一個GET請求。
謝謝尼特曼。發現它是什麼,你發佈的VCL 181行(我使用相同的)。我的路上有「/ ajax /」。 –