Apache2 mod_perl Последний измененный заголовок игнорируется - PullRequest
2 голосов
/ 23 апреля 2009

У меня есть страница, созданная на Perl. Содержимое этой страницы меняется каждые 30 минут, поэтому я устанавливаю $ r-> set_last_modified () на время последнего изменения содержимого.

Это все работает хорошо, и я вижу, что правильный заголовок прибывает в мой браузер.

Когда я обновляю страницу, я вижу, что мой браузер использует правильный заголовок «If-Modified-Since» в запросе к серверу, но Apache2 игнорирует это и повторно отправляет всю страницу.

Как мне заставить Apache2 вести себя правильно и отвечать «HTTP / 1.x 304 Not Modified»?

(Заголовки «последняя модификация» / «if-Modified-Since» обрабатываются правильно при запросе статического содержимого из того же процесса Apache2.)

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

РЕДАКТИРОВАТЬ: мои ожидания не так? Нужно ли явно обрабатывать входящие заголовки If-Modified-Since в моем скрипте perl?

Ответы [ 2 ]

4 голосов
/ 24 апреля 2009

К сожалению, да, ваши ожидания неверны.

В тот момент, когда вы в основном говорите Apache: «Хорошо, я имею дело с этим запросом ...», Apache передаст вам ответственность за все. Если вы хотите, чтобы запрос выполнял If-Modified-Since, это ваш код.

Поверьте, это правильное поведение, поскольку Apache не может узнать, что вы / действительно / имеете в виду под «изменением» в обработчике Perl: возможно, лучше всего проверить запрос вашей внутренней базы данных на отметка времени в записи, например ....

2 голосов
/ 24 апреля 2009

Apache не будет хранить ваше последнее измененное значение при обработке запроса. Поэтому, чтобы решить, было ли что-то изменено, вам нужно будет запустить ваше приложение.

...