谷歌浏览器不会caching内容

我一直在寻找解决办法,但迄今没有。 我在Node.js / Express中dynamic地呈现HTML页面,通过SHA256生成一个ETag,对HTMLstring进行散列处理,然后通过nginx发送页面。 出于某种原因,Google Chrome浏览器不会caching页面,也不会为以前的ETag发送“If-None-Match”标头。

这是我的请求和响应标题:

请求:

GET / HTTP/1.1 Host: dev.logan.oikoi.co Connection: keep-alive Cache-Control: max-age=0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.82 Safari/537.1 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 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 Cookie: km_ai=Q%2FR9nmmebaNLthhixes8jxMubzQ%3D; km_uq=; kvcd=1346083163009; km_vs=1; km_lv=1346083163 

响应:

 HTTP/1.1 200 OK Server: nginx/1.2.3 Date: Sun, 26 Aug 2012 06:20:46 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Accept-Encoding X-Powered-By: Express Cache-Control: public, max-age=0, must-revalidate, proxy-revalidate Expires: Thu, 01 Jan 1970 00:00:00 GMT ETag: "2e26404f4306e4d2a7c821f537aa3e714d655d260462f8a7fdd9f0a8ad501900" Set-Cookie: connect.sid=rPrRyvqf3LhbilN0syPU3htr.776UPuqojSyF1YgS0AFcyac4qQtv%2FXF9TFSHQ96p6e8; path=/; expires=Sun, 26 Aug 2012 10:20:46 GMT; httpOnly; secure Content-Encoding: gzip 

编辑:我忘了在我的第一篇文章中提到,但Firefoxcaching页面没有问题。

你的回应有这些标题 –

caching控制:公共,最大年龄= 0,必须重新validation,代理重新validation

到期日:星期四,1970年1月1日00:00:00 GMT

删除这些标题,你应该是好的。

供参考:

  1. 必须重新validation会强制浏览器在每次请求资源时发出请求
  2. Expires header和max-age = 0告诉浏览器不要caching资源