4

我正在提供一个recent.rss通过 python 烧瓶动态创建的服务,自然而然地,它总是通过200 OK. 我打算通过将标题设置Expires为未来一周并检查浏览器是否发送了If-Modified-Since.

如果是这样(在比较日期之后),我只会做return nothing, 304而不是return response,但根据 Firebug 和request.environ我的浏览器永远不会发送If-Modified-Since该资源。

我知道我可以将数据保存到一个文件并使用网络服务器将其作为真正的静态文件提供,但我最终可能真的需要通过 WSGI 提供静态文件,即使不需要,我也想知道为什么这样做'不工作。

谢谢你的帮助。

4

1 回答 1

12

RFC 2616 HTTP/1.1在14.25 If-Modified-Since中有这个注释:

在处理If-Modified-Since头域时,一些服务器会使用精确的日期比较函数,而不是小于函数,来决定是否发送 304(未修改)响应。为了在发送If-Modified-Since用于缓存验证的标头字段时获得最佳结果,建议客户端尽可能使用在前一个Last-Modified标头字段中收到的确切日期字符串。

这表明您应该Last-Modified在期望/希望客户端发送时发送标头If-Modified-Since

于 2011-08-19T11:41:56.157 回答