Яндекс рекомендует следить за корректностью http-заголовков. Цитата из документа «Рекомендации Яндекса по созданию сайтов»:
«В частности важно содержание ответа, который отдаёт сервер на запрос
«if-modified-since». Заголовок Last-Modified должен отдавать корректную
дату последнего изменения документа.»
Проверим как с Last-Modified обстоит дело в различных CMS.
Проверять можно с помощью If Modified Since Tool, HTTP compression and HTTP conditional GET test tool, Проверка If-Modified-Since, либо вручную.
Joomla+VirtueMart
Joomla поддерживает Last-Modified, но всегда прописывает текущую дату:

что-то я не понял, откуда тут взялось «304 Not Modified»? Вообще это
какой-то непонятный тест, согласно всем остальным тестам и
экспериментам, на запрос «if-modified-since» Joomla возвращает
StatusCode=200 (OK) ну а в Last-Modified ставит текущую дату.
интересно, почему VirtueMart не использует для обработки запроса
«if-modified-since» дату модификации товара mdate, которую можно
посмотреть через следующий SQL запрос:
SELECT `product_name`, FROM_UNIXTIME(mdate) mdate FROM `jos_vm_product` ORDER BY mdate DESC ; |
И почему Joomla не использует дату модификации статей?
SELECT `title`, `modified` FROM `jos_content` ORDER BY `modified` DESC ; |
WordPress
WordPress Last-Modified просто напросто не поддерживает:

однако это не мешает Яндексу его успешно индексировать.
Проверка If-Modified-Since вручную
Есть простой способ проверки if-modified-since с помощью telnet. Запускаем telnet:
# telnet www.example.com 80 |
и вводим следующее:
GET /index.html HTTP/1.0 User-Agent: Mozilla/5.0 From: something.somewhere.net Accept: text/html,text/plain,application/* Host: www.example.com If-Modified-Since: Wed, 19 Oct 2005 10:50:00 GMT |
если сервер вернет 304 (Not modified), значит он If-Modified-Since
поддерживает, но страница не была изменена. Код 200 (Ok) означает, что
страница изменена.
Также можно проверить через PHP, см How to test for “If-Modified-Since” HTTP Header support.
Проверка If-Modified-Since на С#
Проверить как работает If-Modified-Since можно с помощью следующего C# кода:
private HttpWebResponse GetPage() { // Place the web request to the server by specifying the URL HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); // No need for a persistant connection request.KeepAlive = false ; // The link that referred us to the URL request.Referer = url; // The user agent of the browser request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215)" ; //Instead of HTTP 1.1 I will use HTTP 1.0. When a request tells the server it uses 1.0, //the server won't respond with chunked data but will send the response all at once. request.ProtocolVersion = new Version(1, 1); request.IfModifiedSince = DateTime.Now.AddDays(-5); // Get the response from the server return (HttpWebResponse)request.GetResponse(); } private void TestLastModified(VirtueMartContext db, jos_vm_product product) { using (HttpWebResponse response = GetPage()) { Debug.Print( "Status Code : {0}, Description : {1}\n" , response.StatusCode, response.StatusDescription); string text = WebResponceReader.GetResponceText(response); Debug.Print(text.Substring(0, 100)); } } |
с помощью этого метода можно убедиться в том, что Joomla всегда
возвращает StatusCode=200 (OK), независимо от значения
request.IfModifiedSince.
Проверка If-Modified-Since через сервис Яндекса
Если в Яндекс Веб-мастере нажать на кнопку «Проверка ответа сервера«, то мы попадаем сюда:

тут опять же видно, что сайт slogpost.ru и соответственно WordPress без
плагина WP Super Cache не добавляет заголовок Last-Modified.
Ну с CMS разобрались, а как работает сам Яндекс?
Здесь можно привести такой пример: сегодня 7.7.2011, контент в Joomla
был обновлен 20.6.2011, а у Яндекс в кэше версия от 11.06.2011, хотя
после этой даты робот приходил уже неоднократно. В данном случае
обновления Яндекс загружает с очень существенной задержкой. Вопрос —
почему?
Вот, что по этому поводу говорит Платон Щукин:
По мере обхода сайта робот также переобойдет указанную страницу, после
чего с обновлением поисковых баз она обновится в выдаче. Мы работаем над
тем, чтобы это происходило как можно быстрее.
Со своей стороны Вы также можете помочь роботу быстрее индексировать сайт, воспользовавшись следующими рекомендациями со страницы нашей Помощи.
Комментариев нет:
Отправить комментарий