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.
RFC 2616 HTTP/1.1 has this note in 14.25 If-Modified-Since:
When handling an
If-Modified-Sinceheader 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-Sinceheader field for cache validation, clients are advised to use the exact date string received in a previousLast-Modifiedheader field whenever possible.
This indicates that you should send a Last-Modified header when you expect/want the client to send If-Modified-Since.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With