2011-08-19 90 views
4

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

如果是的话(比较后日期),我只想做return nothing, 304代替return response,但根据萤火虫和request.environ我的浏览器只是从来没有为的ressource发送If-Modified-Since

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

感谢您的任何帮助。

+2

看到规格:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.25 – ceving

回答

11

RFC 2616 HTTP/1.1有本说明14.25 If-Modified-Since

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

这表示当您希望/希望客户端发送If-Modified-Since时,您应发送一个Last-Modified标头。

+0

谢谢,它的工作原理。 – Steffen

+0

我还发现,使用Firefox(v 54),除非设置了“Last-Modified”和“Expires”,否则不会发送标头。 –

相关问题