Каким образом работает If-Modified-Since?

D2
На сайте с 11.04.2013
Offline
54
399

Решили использовать на сайте HTTP заголовки Last-Modified и If-Modified-Since.

Суть поняли, что если страница товара не обновлялась с последнего посещения роботом, то он её не будет лишний раз индексировать.

Но тогда возник вопрос:

Если Google бот к просканирует страницу товара 1 раз после добавления (после этого товар не будет обновлятся), присвоит к примеру ему 22 позицию, а далее товар не будет расти в выдаче, поскольку бот на его внимания не будет больше обращать?

plattoo
На сайте с 12.05.2010
Offline
195
#1
deedee2008:
а далее товар не будет расти в выдаче, поскольку бот на его внимания не будет больше обращать?

Неверное рассуждение.

Во-первых, выдача не статическая, а очень даже подвижная. Например, нагнул Гугл вашего конкурента, следовательно, страница товара поднялась выше/упала.

Во-вторых, появились внешние/внутренние ссылки на страницу товара, страница товара поднялась выше/упала.

В-третьих, заматерел ваш интернет-магазин в представлении Гугла, страница товара поднялась выше/упала.

И.т.д.

Думаю, понятно объяснил.

K
На сайте с 03.06.2015
Offline
45
#2

Вам гугля что ли жалко? Пусть шуршит, он все равно железный.

Ответ по заголовку темы. Работает так: браузер (робот) посылает заголовок if- в контенте которого дата ресурса в кеше. Сервер берет файл и смотрит дату, если новее - 200, если станее - статус 304 в конце last-modified.

Однако что такое продуктовая страница. Она же не существует сама по себе. Она всегда внутри другого контента и контекста. Откуда вам знать что там - за ее пределами ничего не поменялось?

---------- Добавлено 04.06.2015 в 18:09 ----------

Технически проверка вручную выглядит так:


$filetime = filemtime($src);
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) &&
(strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $filetime)) {
header('Last-Modified: '.gmdate(GMT_DATE_FORMAT, $filetime), true, 304);
exit;
}

и ради чего весь этот геморрой?

MYSQL PHP JS HTML CSS SEO TXT США СССР
L
На сайте с 07.12.2007
Offline
351
#3
deedee2008:
если страница товара не обновлялась с последнего посещения роботом, то он её не будет лишний раз индексировать.

Google периодически переиндексирует старые страницы, даже если они отдают Last-Modified. Для этого, бот просто не присылает заголовок If-Modified-Since.

Боты Яндекса имеют суточный лимит индексации по число страниц. Поэтому, если сайт с тысячами страниц, он может не найти новые, а заниматься переиндексацией старых.

Если страница отдаёт 304 Not Modified, робот Яндекса берёт для индексации следующую страницу. При этом суточный лимит не превышается и новые/изменившиеся страницы быстрее попадают в индекс.

K
На сайте с 03.06.2015
Offline
45
#4

Забавный алгоритм. А я думал робот заходит в листинг статей или товаров - хоба-на а контент-то поменялся, и в нем несколько новых ссылок, пойдем-ка по ним...

---------- Добавлено 04.06.2015 в 19:49 ----------

Или на главную заходит, а там анонсы статей, крутятся, или стоят, в них ссылки и все такое.

IBakalov
На сайте с 05.10.2011
Offline
218
#5
L
На сайте с 07.12.2007
Offline
351
#6
kostyanet:
Забавный алгоритм. А я думал робот заходит в листинг статей или товаров - хоба-на а контент-то поменялся, и в нем несколько новых ссылок, пойдем-ка по ним..

Все новые url робот заносит в свою базу, сразу же по ним он не ходит. В базе помечены приоритеты сканирования url, и робот индексирует/переиндексирует страницы по этому списку.

Если url переиндексировать не надо (304 Not Modified), робот помечает дату в своей БД и берёт из неё новый url.

Суточный лимит на индексацию установлен только для реально переиндексированных страниц.

PS: Если вы запустите поддержку заголовков LastModified на своём сайте - вы увидите это в логах. Если раньше робот ежедневно запрашивал на переиндекесацию по 600 страниц, после LastMofified это число увеличится примерно на количество страниц с 304 Not Modified

---------- Добавлено 05.06.2015 в 14:21 ----------

kostyanet:
Технически проверка вручную выглядит так:...
Для статических файлов так делать смысла нет - для них это делает веб-сервер(Apache) самостоятельно.

Всё шаманство с LastMidified нужно для динамических страниц, там Apache не знает какую дату надо отдавать.

K
На сайте с 03.06.2015
Offline
45
#7

То есть робот сначала обходит весь сайт по принципу лабиринта и строит дерево сайта. Правильно? А потом по этому дереву и каким-то там приоритетам он начинает загружать тексты и картинки в кеш. Так?

Но тогда зайдя по урлу чтобы проверить а нет ли там внутри новых урлов и нет ли внутри тех новых урлов еще урлов и нет ли в общем вы же знаете что нельзя проанализировать древовидную структуру не заполучив ее всю сразу.

Исходя из этих соображений я и подумал, что если робот зашел в листинг и нашел новые урлы, он пойдет по ним дальше, чтобы найти конец ветки и вернуться. Тогда зачем откладывать скачивание контента, если ты уже его скачал чтобы найти тупик?

Конечно, а у кого сейчас статические интернет-магазины? Ну там понятно закешировать можно часть, но все равно не все.

Короче, по-моему это из домена premature optimisation is evil. Есть гораздо более важные задачи чем объяснять роботу что там ничего не поменялось синс.

---------- Добавлено 05.06.2015 в 17:10 ----------

Атавизм html'ного интернета.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий