1

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

这是标题

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

怎么了

4

1 回答 1

0

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

  1. Varnish.- Varnish 在请求中接收 Cookie,因此默认情况下它不会缓存答案 [1]。
  2. Chrome.- 服务器以“Pragma:no-cache”响应,这可能会避免该项目的 Chrome 缓存。

无论如何,在没有使用实际 VCL 的情况下调试清漆缓存问题是相当困难的。

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

于 2013-07-08T12:33:18.813 回答