缓存控制在chrome和varnish中不起作用也不尊重缓存控制

时间:2013-07-06 16:30:04

标签: caching http-headers varnish appfog

我的expressjs应用程序正在appfog中运行。并且我放了一个简单的日期戳来检查路线中的时间,缓存控制和过期的标题设置为300秒。铬和清漆似乎都不尊重它,因为每次我要求它都会带来新的日期戳。

这是标题

Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Cookie:__utma=215193361.324650093.1367196659.1370199358.1370202384.19; __utmz=215193361.1367196659.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); connect.sid=s%3A8E7Ja9uzypmXXBKawm02-Q3I.srSznDz5BZiS4F2amcSmDqxuWB8hIk7zL6rMAwF0xec  
Pragma:no-cache
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36


**Response Headers**
view source
Accept-Ranges:bytes
Age:0
Cache-Control:max-age=300
Connection:keep-alive
Content-Encoding:gzip
Content-Length:46
Content-Type:text/plain
Date:Sat, 06 Jul 2013 16:19:57 GMT
Expires:Sat Jul 06 2013 16:24:57 GMT+0000 (UTC)
Server:nginx
Vary:Accept-Encoding
Via:1.1 varnish
X-Powered-By:Express
X-Varnish:2078531013

发生了什么

1 个答案:

答案 0 :(得分:0)

我认为有两个不同的问题:

  1. Varnish.- Varnish在请求中收到一个Cookie,所以默认情况下它不会缓存答案[1]。
  2. Chrome.-服务器正在回答“Pragma:no-cache”,这可能会避免Chrome缓存该项目。
  3. 无论如何,在没有使用实际VCL的情况下调试清漆缓存问题非常困难。

    [1] https://www.varnish-software.com/static/book/VCL_Basics.html#default-vcl-recv