есть ли для drupal модуль позволяющий отдавать клиенту ответ 304 not modified в случае если страница не изменилась?

Главные вкладки

Аватар пользователя pavelpg pavelpg 4 февраля 2009 в 8:42

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

ps. хотелось бы знать как обычно поступают со страницами таксономии. страницы которые отображают всякие ленты документов? как мне кажется что за "дату модификации" этой страницы можно взять дату модификации последнего документа.

Комментарии

Аватар пользователя Azerot Azerot 4 февраля 2009 в 13:33

Если я правильно понимаю, if-Modified-Since спрашивает не сервер, а браузер. Причём на сегодняшний день так делает только FireFox, а MSIE не умеет. Какой тогда смысл?

У Drupal есть кэш, просто используйте его разумно.

Аватар пользователя Azerot Azerot 5 февраля 2009 в 8:35

Если я правильно понимаю, то вы хотите сократить расход ресурсов на генерацию страницы при заходе с поисковиков?

Тогда что мне приходит в голову (если кэш вам не подходит).

1. Самый простой способ
Сделайте правило mod_rewrite которое будет по полю User-Agent идентицифировать поисковик и перенаправлять запрос на некий PHP-скрипт, который уже собственно и проведёт нужную вам работу - извлечёт из БД время модификации ноды, разберёт заголовок if-Modified-Since и примет решение, передавать ли управление Drupal для генерации страницы или выдать код 304

2. Более сложный способ
Написать свой модуль к Drupal

Аватар пользователя petrovnn petrovnn 1 октября 2012 в 3:04

Подпишусь. Гугл пишет что сайт должен использовать это поле в заголовке, и мне кажется странно что учитывая эту рекомендацию гугла это не реализовано из коробки. Или реализовано?
http://support.google.com/webmasters/bin/answer.py?hl=ru&answer=35769

Я посмотрел заголовки своего сайта - такого поля там не нашел