When does a webbrowser send If-Modified-Since?
-
04-01-2021 - |
Question
I'm serving a dynamically created recent.rss
via python flask and naturally that way it is always sent via 200 OK
. I was going to fix this by setting the header Expires
a week into the future and checking if the browser sent If-Modified-Since
.
If so (after comparing dates) I would just do return nothing, 304
instead of return response
, but according to Firebug and request.environ
my browser just never sends If-Modified-Since
for that ressource.
I know I could just save the data to a file and serve it as a real static file using a webserver, but I might end up really needing to serve static files via WSGI and even if not I'd like to know why this doesn't work.
Thanks for any help.
Solution
RFC 2616 HTTP/1.1 has this note in 14.25 If-Modified-Since:
When handling an
If-Modified-Since
header field, some servers will use an exact date comparison function, rather than a less-than function, for deciding whether to send a 304 (Not Modified) response. To get best results when sending anIf-Modified-Since
header field for cache validation, clients are advised to use the exact date string received in a previousLast-Modified
header field whenever possible.
This indicates that you should send a Last-Modified
header when you expect/want the client to send If-Modified-Since
.