Отправляем заголовки Last-Modified и Not Modified
Написал небольшой плагинчик для отправки браузеру заголовка Last-Modified и, если браузер спросит If modified since — ответа 304 Not Modified
Для удобства оформил в пакет и добавил в репозиторий. Пакет называется modLastModified.
К сожалению, плагин не может знать, какие сниппеты вы вызываете на странице — он смотрит лишь на дату последнего редактирования ресурса. Поэтому использовать его стоит лишь на простеньких статичных сайтах. Или если SEO-шники очень просят)
Советую почитать комментарии к топику «last-modified + MS2».
Проще показать код, чем объяснить, что делает плагин)) https://github.com/ilyautkin/modLastModified

Для удобства оформил в пакет и добавил в репозиторий. Пакет называется modLastModified.
К сожалению, плагин не может знать, какие сниппеты вы вызываете на странице — он смотрит лишь на дату последнего редактирования ресурса. Поэтому использовать его стоит лишь на простеньких статичных сайтах. Или если SEO-шники очень просят)
Советую почитать комментарии к топику «last-modified + MS2».
Проще показать код, чем объяснить, что делает плагин)) https://github.com/ilyautkin/modLastModified
Комментарии: 74
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Какая разница по сравнению с полностью закешированной страницей, в милисекундах?
У меня не получилось объяснить SEO-шникам, что этот параметр, скорее всего, не влияет на ранжирование сайта в поиске. Проще было сделать, чтобы сайт успешно проходил проверку. Главное, чтобы без вреда.
p.s. факт — о сути этих заголовков догадываются единицы. А seo-шники линко-закупаторы твердят о необходимости этих заголовков как мантру, совершенно не понимая их значения.
seo-шники такие seo-шники — они вообще мало о чём догадываются)
Но чтобы стремиться к идеальному сайту, можно сделать.
Ваше право.
p.s. забавляют меня такие ничем не подкрепленные утверждения. Прям Верю-Не верю. «Считаю так и всё тут». Больше похоже на образ мышления средне-рядового seo-шника линко-закупатора. Технарям подобные рассуждения не позволительны.
Как только робот делает запрос на страницу, у него появляется инфа о размере страницы. Если она отличается от предыдущего — то ясень пень, что-то на странице было изменено. Нет?
Да, я эту гипотезу проверял. Несколько месяцев стагнирующий (с т.з. seo-показателей) сайт, после настройки lmims-заголовков, подрос в позициях и трафике.
Естесственно, каждый случай уникальный и, что помогло одному, не поможет другому (если попадётся ещё какой-нибудь стагнирующую сайт — проведу ещё эксперимент.)
С тех пор ставлю на каждый сайт — жалоб, как вы понимаете, не было.
Технарь не должен принимать утверждение на веру. Любую гипотезу надо экспериментально доказывать.
Я гипотезу проверил и в ней уверен. А вы?
Очевидно, что экспериментов вы не проводили, но доказываете мне, что я не прав. Прям как типичный seo'шник-гуманитарий (только без обид, пожалуйста. Это только для примера, как делать не нужно).
p.s. ну и кто из нас технарь?? а? А?! АА?! =)
А вы успокойтесь, слюней не брызгайте, я не сеошник. Школу закончите, если в институт попадете, узнаете что такое эксперименты и как их правильно ставить.
Я говорил о наблюдении, при котором стагнирующий несколько месяцев сайт, после настройки заголовков, через один апдейт улучшил свои позиции в поиске и набрал в трафике. Конечно же, это чистое совпадение, lmims-заголовки здесь не причём, а сыграли какие-то другие факторы.
Если в будущем будут возможности для новых экспериментов (читай — подходящие сайты) — будут эксперименты.
Я удивлён, что это возражение не стояло первым в вашем списке. Обычно именно такие доводы приводятся в качестве отрицания seo-эксперимента. Так что ж — теперь вообще никаких экспериментов не проводить?
=) Ок, завтра учительницу по физике попрошу рассказать, как правильно проводить эксперименты)
Если это из-за постскриптума, то вам бы чувства юмора немного не помешало — там смайлик был и это, вроде как, шутка была такая =)
И ведь не имею ничего против вас, и даже попросил вас не обижаться, ибо это только для примера было сказано, но всё-равно — скатились до личных оскорблений. Ай-яй-яй)
p.s. и да, минус — не мой, если вы решите аппелировать к этому факту =)
Если чем-то обидел — извините, не хотел.
Дело в том, что поисковый робот при первом посещении страницы запоминает для себя дату последней модификации страницы (если, конечно такой заголовок есть).
В следующий раз, когда бот зайдёт на эту страницу для переиндексации, он сперва спросит наш сервер — изменилась ли страница с той самой даты, когда он был здесь последний раз? Тело страницы он не запрашивает, только заголовки. Если нет — он пойдёт гулять дальше. Если да — заново загрузит страницу, обновит свои данные о ней и отправит на анализ на гугловские сервера.
И вот здесь самая суть — при правильно настроенных заголовках это реальная экономия как трафика, так и нагрузки на сервера — как гугловские (не нужно повторно обрабатывать страницу и отправлять её на анализ, если она не изменилась), так и нашего сервера. А гугло-бот безумно прожорливый. Поэтому один маленький заголовок (на который никто никогда не обращает внимания) так сильно важен поисковым машинам. Ибо они реально экономят процессорное время и свои мощностЯ. Поэтому они так трепетно к нему относятся. Поэтому это может неплохо сказаться на дальнейшем ранжировании (правда, если сайт говно по остальным паре десятков параметров, то это не поможет).
Браузер может (на своё усмотрение) действовать абсолютно также, если у него в кэше полностью лежит эта страница.
Только будьте внимательны, проверяя из браузера — когда запущен DevTools или Firebug, браузер перестаёт посылать запрос If-Modified-Since для удобства разработки. Поэтому надо проверять через вот этот сервис, на который выше ссылался Илья.
Поэтому, держи — github.com/antixrist/lmims
Этому плагину абсолютно фиолетово какие сниппеты/чанки/etc. есть на странице — всё корректно отработается и корректно выведется.
Точных цифр по замеру не помню, но разница в скорости совершенно не существенная.
Только пакет надо собрать самостоятельно (хз, куда я собранный дел) — там всё прописанно, осталось только в корень сайта закинуть все папки из репозитория и из браузера запустить файл _build/lmims/build.transport.php
P.S. давно уж хотел выложить — да забыл про него совсем. Если SD выложит в репозиторий — будет супер =)
При проверке через last-modified.com/ru/ я получаю ласт модифед тем же временем, что и проверка и время отстает на 4 часа (видимо, часовой пояс "+4" не подхватывает).
Осенью установил с Гитхаба Ваш пакет.
Зависит это от пакета или нет не знаю, но перед Новым годом сайт полностью вылетел из выдачи Яндекса (даже главная страница). Санкции поисковика маловероятны, так как сайт продвигается только «белыми» методами. Предположил, что дело в настройках сайта. Отписал Платону, но вероятно из-за праздников ответ задерживается.
Стал искать источник проблемы, выяснил, только то, что Last-Modified отдает с ошибкой (сервис last-modified.com/ru/):
Last-Modified выдает 15 октября, а 304 Not Modified не отреагировал.
Пакет инсталировал/деинсталировал, но результат не изменился.
Может подскажите в какую сторону копать?
Логика отдачи заголовка проста как топор и нарушений в её работе добиться очень сложно. Может из-за nginx'а что-то.
Единственное, что могу посоветовать, — попробовать на другом хостинге протестировать (только аккуратно, чтобы поисковики не успели тестовый сайт проиндексировать), на каком-нибудь из рекомендуемых для modx. Если ошибка повторится, то дело в сайте, надо будет копать глубже.
А по поводу вылета из индекса…
С одной стороны не на столько это критичная ошибка и не на столько критичный фактор, чтобы весь сайт из индекса выкидывать.
С другой — этих роботов, порой, хер поймёшь. У АГС'а тоже есть статистический процент ошибок. Тут только ответа Платона ждать.
А в вебмастере смотрели? Там может быть что-то на эту тему, если есть проблемы с индексацией.
А на данный момент, просто выключите плагин. Если это мешало индексации, то пара хороших ссылок с твиттера и зайдёт обратно, никуда не денется. Но сперва дождитесь ответа Платона.
В вебмастере пишет «Страниц в поиске» — 0
«Последнее посещение роботом» — 04.01.2015
Плагин отключил.
Сайт всегда индексировался отлично — страницы влетали в поиск в течение нескольких минут.
Если проблема прояснится отпишусь…
Надо переписывать, чтоб не голый html в базе хранить, а хэш.
Вам сейчас эта таблица и не нужна. Просто переустановите компонент на тестовом сайте и тестируйте
А вам сейчас просто переустановить расширение на тестовом сайте :-)
Да, давно уж.
Сейчас там всё как надо работает, жалоб давно не было.
Хотя страница не менялась какое-то время… так на каждой странице. Как я понимаю, там должна стоять дата последнего изменения этой страницы или нет?
А вот при проверки HTTP-заголовков с помощью плагина для фаер фокс, вообще дата Unix Timestamp
Может быть так и должно быть и я не правильно понял?
А вот внутренние страницы сайта дают такую дату
В общем понаблюдал еще немного поведением плагина. На главной странице отдает 1970 год — если внести изменение в контент, то отдает настоящую дату сервера(на момент запроса страницы, то есть каждую секунду новое время), если изменения убрать, вернуть как было, то дата опять становится 1970 год, что очень странно. На внутренних страница при каждом запросе отдается время этого запроса, а не тогда когда реально была изменена страница. Очень и очень жалко, очнеь ценный плагин бы был, если бы работал корректно=(
на:
Ваше исправление не помогло похоже.
Откройте эту страницу в браузере и проверьте потом ответ сервера.
А лучше всего просто через phpMyAdmin очистить все записи в таблице modx_lmims и потом уже они сами туда добавятся по мере открывания страниц сайта.
и
Время запроса страницы.
Действительно где-то работает нормально, где-то нет. Связано с тем, что чтение из базы в 53 строке не везде отдает дату в UNIX-формате.
В качестве костыля попробуйте заменить эту строку:
на эту:
Но вот вопрос
Красным выделено Почему Expires 1981 год?)
А синим это время запроса как я понял.
А вот это исправление помогло, спасибо!
session.cache_limiter = public в php.ini
Хоть убей, у меня там постоянно новая дата — дата запроса, минус несколько часов, сервер стоит в другой стране
А вы вносили изменения вот эти?
Я вот что заметил
Разная дата Last-Modified в двух колонках
А вот Expires не правильный, лучше оставить его 81 годом, который прекрасно понимают роботы. А у вас роботу дают понять, что завтра документ теряет актуальность, он его может проигнорироват
Мне тоже не помогли предложенные изменения. А у вас уже заработало?
Есть вопрос, у меня дата изменения отображается такая:
Last-Modified: Thu, 01 Jan 1970 00:33:36 GMT
я внес специально несколько изменений на страницу, но эта дата так и не меняется.
Что я делаю не так?
если поможет сайт: elevator-spb.ru
1. Дополнение работает с https, а вот представленный здесь сервис проверки last-modified.com/ru/ — нет. (рабочая альтернатива)
2. Дополнение перестает отдавать актуальную информацию, если на сайте используется MinifyX или любые сниппеты, возвращающие случайные переменные, как то:
— плейсхолдеры вида [^t^]
— любые функции рандома
— капча
— …
Способ решения проблемы:
— Заключаем актуальную информацию (без перечисленных элементов из пункта 2) в тег main:
— В плагине lmims заменяем строку
на строку:
3. Вероятно, у плагина есть проблемы с возвращением результата при 404/403 ошибки.
А в каком репозитарии lmims «правильный»? Есть тут и тут
Жаль в модсторе нет актуального.
В его репозитарии rstore.pro/extras/
Я установил себе, проверяю этим сервисом redbot.org
Попробуй.
Решение:
— перед строкой
-добавить:
на строку
не дала результата.
Это
я так понимаю, то же самое и это тоже не работает. Дата всё равно такая:
При изменении ресурса или шаблона заголовок всегда один: HTTP/1.1 304 Not Modified
Это у всех так или только у меня? На сайте используется https, проверяю заголовки тут и тут.
Помогло пересобирание транспортного пакета. Инструкция тут. Только предварительно нужно в файле /lmims/_build/build.config.php заменить все connectors-7rXt-B1s на connectors (а то пакет не собирётся) и заменить $lmimsDate = $lmims->get('date'); на $lmimsDate = strtotime($lmims->get('date')); в файле /lmims/core/components/lmims/elements/plugins/plugin.lmims.php
Кто-нибудь сталкивался с подобным?