Увеличение скорости индексирования изменившихся страниц. If-Modified-Since

Статус
В этой теме нельзя размещать новые ответы.

Bdiang

Новичок
Увеличение скорости индексирования изменившихся страниц. If-Modified-Since

Здравствуйте

Я столкнулся с проблемой выдачи HTTP/1.1 304 Not changed сервером поисковому роботу.

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

На данный момент у меня выдается такой заголовок header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");

Вопрос такой:
Как наиболее эффективно с акцентировать внимание робота именно на изменившихся страницах?

Спасибо!

С ув. Алексей
 

Bdiang

Новичок
Спасибо!

А вот этот приведенный код это на чем?

if (
exists_at_least_one($If-Match, $If-None-Match,
$If-Modified-Since, $If-Unmodified-Since) and
$ETag->consistent($If-Match, $If-None-Match) and
$Last-Modified->consistent($If-Modified-Since, $If-Unmodified-Since)
)
then
// 300 Not Modified
else
// 200 OK

И еще вопросик.

Т.е сервер сам формирует Etag в котором хранит хеш документа? и робор просто заберет его и сравнит со своим?

Или необходимо в ручную его формировать? - Это вопрос очень важен для меня.
 

phprus

Moderator
Команда форума
Bdiang
А вот этот приведенный код это на чем?
Беспонятья. Скорее всего на каком-то псевдоязыке.

Т.е сервер сам формирует Etag в котором хранит хеш документа?
Если ты страницу генерируеш динамически то ты сам должен генерировать Etag.
 

Bdiang

Новичок
Ну ясно. Просто логику привели))

Т.е я загоняю в md5 контент и выдаю в етаг.
А что делать с last-modified? Имеет значение какая в нем дата?

Приведите пример кода пожалуста если не трудно
 

Bdiang

Новичок
Не совсем.

Насколько я понял достаточно отдать клиенту один из двух заголовков Last-Modified или ETag

Если короче вопрос в том, достаточно ли мне отдавать поисковому роботу только заголовок ETag для определения изменившийся/неизм-ся страницы??
 

phprus

Moderator
Команда форума
Bdiang
Нет не достаточно. Надо отдавать и заголовок Last-Modified и ETag. Тем более добавить отдачу Last-Modified не так сложно.
 

Фанат

oncle terrible
Команда форума
ну, для многих динамических страниц это задача, как раз, не самая тривиальная.
но в простых случаях - да, несложно
 

Bdiang

Новичок
А у какого заголовка выше приоритет?
Т.е клиент сравнивает по etag или по Last-Modified? Или както хитро по обоим?

Сорри если тупой вопрос. Никак немогу допереть(

-~{}~ 29.01.07 10:30:

Автор оригинала: Фанат
ну, для многих динамических страниц это задача, как раз, не самая тривиальная.
но в простых случаях - да, несложно
Вот вот.

Т.е одинаково важно отдавать как правильную дату изменения так и etag?

(Я думал, что или/или - кому как больше нравится или удобнее)
 

Фанат

oncle terrible
Команда форума
Я не понял, о каком ускорении идет речь, если ты собираешься высчитывать етаг при каждом запросе?
Никак немогу допереть(
Слушай, скажи ЧЕСТНО. Ты статью по первой ссылке читал? или проглядел наискосок в поисках кода?
 

Bdiang

Новичок
Автор оригинала: Фанат
Я не понял, о каком ускорении идет речь, если ты собираешься высчитывать етаг при каждом запросе?

Слушай, скажи ЧЕСТНО. Ты статью по первой ссылке читал? или проглядел наискосок в поисках кода?
1) И так и собирался. Ведь если содержимое страницы не поменялось то и ее хэш не измеится. Зайдет робот, сравнит Etag со своим и получит 304 Not Modified. Так?

2) Читал. Прочитал еще раз. Увидел таблицу.
Вопрос: (eq ETag) or (eq '*') - что это за значение?

-~{}~ 29.01.07 11:09:

Дополнение по 1) - возможно выдавать Etag в header имеет смысл только когда страница поменялась относительно робота. Т.е если 304 - но не выдавать етаг, а если 200 - то выдавать
 

Bdiang

Новичок
функцией md5("$txt");

Фанат скажи сразу или я дурак или объясни (логику) как бы ты сделал? )))
 

Bdiang

Новичок
Я собираюсь использовать нестрогий етаг. Поэтому его содержимым будет md5(контент) страницы без банеров и тд
 

Фанат

oncle terrible
Команда форума
а вот интересно
Как наиболее эффективно с акцентировать внимание робота именно на изменившихся страницах?
Скажите, товарищи. А есть ли что-то осмысленное в этом вопросе?
 

slach

Новичок
Фанат, есть, дорвейщики в этом отношении продвинулись достаточно далеко

ссылки не приведу
но в целом построить таблицу весов и изменять ее при "перегенерации контента", вполне можно

либо считать дату последней модификации по данным, глобально в контроллере =)

-~{}~ 29.01.07 16:24:

т.е. поясню
вот есть страница
она "динамическая" и собирается

соответсвенно никто не мешает собирать все в "буфер"
и каждый "блок" \ "модуль" может вычислить когда же он обновился
после чего задать хоть через _GLOBALS что надо отдать в Last-Modified
 

Bdiang

Новичок
У меня портал на 50000 страниц и это количество быстрыми темпами растет.

Неужели было бы плохо если бы робот брал только новые или изменившиеся страницы???? Это же увеличивает КПД индексации.

Фанат давай сразу к чему ты клонишь?

-~{}~ 29.01.07 14:33:

Автор оригинала: slach
соответсвенно никто не мешает собирать все в "буфер"
и каждый "блок" \ "модуль" может вычислить когда же он обновился
после чего задать хоть через _GLOBALS что надо отдать в Last-Modified
slach, много гемора получается дату определять. Можешь что нибудь сказать по поводу етага?)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху