我通过python烧瓶提供动态创建的recent.rss
,这自然就是通过200 OK
发送的。我打算通过在未来一周设置标题Expires
并检查浏览器是否发送If-Modified-Since
来解决此问题。
如果是这样(在比较日期之后)我会return nothing, 304
而不是return response
,但根据Firebug和request.environ
,我的浏览器永远不会发送If-Modified-Since
来获取该资源
我知道我可以将数据保存到文件中,并使用网络服务器将其作为真正的静态文件提供,但我最终可能需要通过WSGI提供静态文件,即使不是,我也想知道为什么这不起作用。
感谢您的帮助。
答案 0 :(得分:11)
RFC 2616 HTTP/1.1在14.25 If-Modified-Since中有此注释:
处理
If-Modified-Since
标题字段时,有些 服务器将使用精确的日期比较功能,而不是 小于功能,用于决定是否发送304(不是 修改)响应。为了在缓存验证中发送If-Modified-Since
标头字段时获得最佳结果,客户端是 建议尽可能使用先前Last-Modified
标题字段中收到的确切日期字符串。
这表示您希望客户发送Last-Modified
时应发送If-Modified-Since
标题。