Как определить last modified для страниц сайта?

Поисковики настоятельно рекомендуют чтоб сайт отправлял заголовки LastModified и отвечал на IfModifiedSince.
Но если для html файла это время последнего изменения, то как определить время последнего изменения для динамически генерируемой PHP страницы - когда там с десяток включенных файлов, да еще данные из БД (из разных таблиц) грузятся? Причем это надо сделать для каждой страницы сайта.
Как решается этот вопрос в современных CMS/CMF?
  • Вопрос задан
  • 446 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Fortop
Tech/Team lead
Кешируется и пишется дата.
Вот тебе и Last modified
Ответ написан
nazarpc
@nazarpc
Open Source enthusiast
Нужно понимать что и когда отправлять. Вот есть у вас блог, в блоге есть посты. Вот дата последнего изменения поста и будет ваше LastModified, вы его сами отправляете в заголовках.
Не применимо к странице - не отправляйте. LastModified это о содержимом страницы, а не о файлах, которые её сгенерировали.
Ответ написан
viktorvsk
@viktorvsk
То, что вы сами сочтете "важным", то и будет "сбрасывать" кэш.
Верного ответа нет. Смотрите еще, что такое Etag.
Вот здесь, stackoverflow.com/questions/2285482/getting-etags-right , например, рассмотрено.

Если динамический контент управляется на Вашем сервере - можете кешировать его. Если Last modified ставите самый свежий, соответственно. Если на чужом сервере (сервис комментариев какой-нибудь), то тут уже в зависимости от того, нужно оно вам или нет.

Здесь нужно рассматривать из конкретной стоящей задачи.

По поводу того, как реализовано - в Rails реализовано так называемое Кеширование матрешкой (Russian doll caching): Каждый блок, который вы кешируется и на основе хеша (изменение самого html шаблона или переданных туда обектов из которых Rails берет аттрибуты updated_at или сами их значения) отдает etag

Есть свои плюсы и свои минусы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы