【发布时间】:2012-01-07 19:19:41
【问题描述】:
服务器将这些标头发送到客户端:
Cache-Control:private
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html
Date:Sun, 27 Nov 2011 11:10:38 GMT
ETag:"12341234"
Set-Cookie:connect.sid=e1u...7o; path=/; expires=Sun, 27 Nov 2011 11:40:38 GMT; httpOnly
Transfer-Encoding:chunked
last-modified:Sat, 26 Nov 2011 21:42:45 GMT
我希望客户端验证文件在服务器上没有更改,如果它有“304”,则发送“200”。
Firefox 发送:
if-modified-since: Sat, 26 Nov 2011 21:42:45 GMT
if-none-match: "12341234"
为什么刷新页面时 chrome 发送的内容不同?我关注.Net 运行的行为:
context.Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate)
【问题讨论】:
-
我不明白“我正在关注 .Net 运行的行为:”。你能编辑一下吗?这个问题对我很重要。
-
在.Net 中
:之后运行代码所获得的行为是一个问题。查看标签,我试图模仿 node.js 中的行为。 -
对于所有认为这是客户端问题并对这些答案进行投票的人。请阅读:它与服务器相关,因为我在使用 etag (
if-none-match) 发出浏览器请求之后。 etag 是在服务器端创建的,与客户端无关。我需要知道的是从服务器发送到客户端的内容,以使其也发送 chrome 中的 etag 标头。所选答案是唯一正确的答案,因为它告诉服务器也发送if-none-match。 -
即使看起来不是这样,也请注意,如果您直接从地址栏请求图像,Chrome 不会发送“If-Modified-Since”标头。仅当从“img”标签或任何与图像相关的 css 属性请求图像时,才会从缓存中检索图像。
标签: http node.js http-headers cache-control