- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
На днях решил заняться ускорением индексации сайта, среди прочих решений было следующее - Нужно сделать так чтобы в ответ на запрос пользователя или поискового робота сервер отдавал заголовок Last-Modified, который говорит клиенту (поисковому роботу/посетителю сайта) о времени последнего изменения страницы.
В общем, нашёл инструкцию, вроде всё просто нужно вставить вот этот код:
Между тегами <head>…</head>
Где,
- первая строчка кода преобразует текстовое представление даты на английском языке в метку в формате Unix Time Stamp, таким образом используя автоматически вычисленное время изменения текущей страницы сайта.
- Функция gmdate возвращает текущее время по Гринвичу в формате Day, DD Mon YEAR HH:MM:SS GMT.
Все сделали, проверили на валидаторе http://last-modified.com/ru/.
Получилось так что Last-Modified показывает дату последнего изменения 23 июня 2014 годы для всех страниц, т.е. все страницы сайта стали в глазах ПС( поисковых систем)как не изменившиеся, даже если какие-то изменения провести, то всё равно валидатор показывает, что страница не менялась с 23 июня. А это чревато последствиями, т.к. ПС не будут индексировать страницы сайта, даже если они изменились или добавились новые.
В чём проблема может быть? Я уверен что много кто настраивал этот заголовок, поделитесь пожалуйста, как делали и в чём моя ошибка, на что обратить внимание и т.д.
filectime($_SERVER['SCRIPT_FILENAME']) - вам точно нужно проверять дату изменения файла текущего скрипта? скорее всего вам нужно брать дату изменения страницы из базы.
Вы отдает дату изменения исполняющего файла. Лучше не трогать эти заголовки если вы не знаете как правильно указать дату последнего изменения.
Отдача заголовка Last-Modified происходит в интервале между передачей тегов <HEAD>?
---------- Добавлено 02.09.2014 в 21:27 ----------
А, я понял, откуда вы, возможно, взяли этот пример.
Вроде бы у вас сайт из статических страниц. Тогда изменения самого файла меняет дату модификации html-страницы.
Хотя не... ведь в этом случае ваши страницы — просто статика безскриптовая.
Нужно сделать так чтобы в ответ на запрос пользователя или поискового робота сервер отдавал заголовок Last-Modified, который говорит клиенту (поисковому роботу/посетителю сайта) о времени последнего изменения страницы.
В общем, нашёл инструкцию, вроде всё просто нужно вставить вот этот код:
1. Это некорректный код, решение отдавать заголовок "304 Not Modified" или "200 OK" принимается по более сложному условию.
2. Тупо слать LastModified при каждом обращении к серверу - бессмысленно и ничего не даст. Кэширование на стороне клиента работает не так:
Если при обращении к серверу был прислан заголовок If-Modified-Since(с датой локального кэша страница у пользователя/робота ПС), то:
- если страница не изменилась с этой даты - сервер отправляет заголовок "304 Not Modified" НЕ ПРИСЫЛАЯ ТЕКСТ САМОЙ СТРАНИЦЫ!
- если страница изменилась - сервер отправляет LastModified, код "200 OK" и ТЕКСТ САМОЙ СТРАНИЦЫ.
Если при обращении к серверу заголовок If-Modified-Since не прислан - клиент не поддерживает кэширование и LastModified отсылать ему бессмысленно, ему всегда оправляется страница сайта.
Хотя по RFC для HTTP1.1 Серверы HTTP/1.1 должны посылать поле Last-Modified всякий раз, когда это возможно.
Все сделали, проверили на валидаторе http://last-modified.com/ru/.Получилось так что Last-Modified показывает дату последнего изменения 23 июня 2014 ....
Я проверила сей сервис "изнутри" - он работает почти корректно:
- сначала посылает запрос для определения даты изменения документа
- потом второй запрос: IfModifiedSinse с этой датой и ловит ответ "304 Not Modified".
Но, судя по предлагаемому этим сервисом PHP-скрипту отдачи заголовков lastModified, создатель сервиса сам до конца не понимает принципы кэширования на стороне клиента.
Поэтому сервис не отрабатывает проверку корректности полученной даты сервером. Для полной проверки надо слать ещё 2 запроса - с датой из будущего и просто некорректной датой. И проверять код ответа сервера на 304/200.
А, я понял, откуда вы, возможно, взяли этот пример.
Вроде бы у вас сайт из статических страниц. Тогда изменения самого файла меняет дату модификации html-страницы.
Для "статики" мутить это бессмысленно - ЛастМодифайд корректно отдаёт сам веб-сервер, беря её из даты последнего изменения файла.
При этом, для статических файлов веб-сервер автоматически поддерживает и второй более гибкий вариант кэширования IfNoneMatch - Etag:
ETag может быть «строгим» (два документа имеют одинаковые ETags только если они совпадают побитово) или «нестрогим» (два документа имеют одинаковые ETags если они совпадают по содержанию, но могут отличаться в незначительных деталях).
1. Это некорректный код, решение отдавать заголовок "304 Not Modified" или "200 OK" принимается по более сложному условию.
2. Тупо слать LastModified при каждом обращении к серверу - бессмысленно и ничего не даст. Кэширование на стороне клиента работает не так:
Ladycharm, я правильно понимаю, что достаточно воспользоваться решением, которое дано в статье (по ссылке, которую вы дали) и сервер будет отдавать правильный ответ в зависимости от того изменилась страница или нет?
Сейчас ситуация такая – если проверять сервисом http://last-modified.com/ru/ то last-modified выдаёт правильный, но почему-то всегда говорит, что страница не изменилась, даже если она совсем новая (ответ 304 Not Modified)
Вот, например, для этой страницы http://calcsoft.ru/kalkulatori-vkladov-bankov , если не трудно посмотрите пожалуйста.
Продолжаю разбираться с настройкой last-modified самостоятельно.
Сейчас сервер отдаёт клиенту правильный last-modified, но также есть ещё
один заголовок:
Cache-Control: no-cache – означает, что кэш, к которому обращается
клиент, должен вновь запросить документ у сервера, с которого он был
получен.
Вопрос такой:
Для правильной работы, этот заголовок нужно убрать или как-то настроить по другому? Ведь, если я правильно понимаю, сейчас страница не кэшируется, а значит и last-modified не работает в полной мере?