Когда веб-браузер отправляет If-Modified-Since? - PullRequest
4 голосов
/ 19 августа 2011

Я подаю динамически созданную recent.rss через колбу питона и, естественно, таким образом она всегда отправляется через 200 OK.Я собирался исправить это, установив заголовок Expires через неделю и проверив, отправил ли браузер If-Modified-Since.

Если это так (после сравнения дат), я бы просто сделал return nothing, 304 вместоreturn response, но, согласно Firebug и request.environ, мой браузер просто никогда не отправляет If-Modified-Since для этого ресурса.

Я знаю, что могу просто сохранить данные в файл и использовать его как настоящий статический файл, используявеб-сервер, но я мог бы в конечном итоге действительно нуждаться в обслуживании статических файлов через WSGI, и даже если нет, я бы хотел знать, почему это не работает.

Спасибо за любую помощь.

1 Ответ

12 голосов
/ 19 августа 2011

RFC 2616 HTTP / 1.1 содержит это примечание в 14.25 If-Modified-Since :

При обработке поля заголовка If-Modified-Since некоторыесерверы будут использовать функцию сравнения точной даты, а не функцию меньше, чем для решения, отправлять ли ответ 304 (не измененный).Чтобы получить наилучшие результаты при отправке поля заголовка If-Modified-Since для проверки кэша, клиентам рекомендуется по возможности использовать точную строку даты, полученную в предыдущем поле заголовка Last-Modified.

Это означает, что выследует отправить заголовок Last-Modified, когда вы ожидаете / хотите, чтобы клиент отправил If-Modified-Since.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...