Ускоряем индексацию через if-modified-since или 200 на 304

Soft
На сайте с 22.06.2008
Offline
34
1153

Уже на протяжении месяца в логах наблюдаю бот яндекса на старых линках. Страницы отдают 200 Ok. Страниц очень много. И всё по кругу! Новых не видит!

Я даже ради интереса изменил путь site.ru/razdel на razdel.site.ru/ (www.razdel.site.ru/ - убил в dns). Сделал редирект со старых на новые. Сейчас вообще ошибка 302 - Страница временно перемещена.

Я хочу задать $last_modified = date("D, d M Y H:i:s T", time()); - для страниц, которые вообще не изменяются и отдать 304.

Нашёл в одном топе:

Яндекс и гугл едят нормально.
Функцию if_modified_since вставляете перед обработкой запроса, даёте ей время последнего изменения страницы (unix_timestamp из БД, например) и всё.
Она отдаст 304 если изменений не было и завершит работу скрипта, или просто вернёт управление.

// Дделаем обработку Conditional GET'а:

if (!isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
// Conditional Get не задан - просто отдаем файл.
header("Last-Modified: $last_modified"); // последнее изменение - сейчас
} elseif (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
// Conditional GET задан, проверка только по If-Modified-Since:
$unix_ims = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']); // значение If-Modified-Since в UNIX формате

if ($unix_ims > time() || !is_int($unix_ims)) {
// Ошибка Conditional GET - просто отдаем файл.
header("Last-Modified: $last_modified"); // последнее изменение - сейчас
} else {
// Conditional GET корректен.
if ($unix_ims >= $unix_timestamp) {
// Копия файла в кеше клиента не устарела - сообщаем ему об этом...
header("HTTP/1.1 304 Not Modified"); // не модифицировано
// ...и заканчиваем выполнение скрипта, не отсылая сам файл.
while(ob_get_level()) ob_end_clean();
exit;
} else {
// Похоже, что копия клиента устарела.
header("Last-Modified: $last_modified"); // последнее изменение - сейчас
} // if unix_ims > timestamp
} // if unix_ims > time()

} // if isset server-modified-since
return;
} // if_modified_since

Насколько код и сам метод актуален?

di_max
На сайте с 27.12.2006
Offline
262
#1
Soft:
Насколько код и сам метод актуален?

Это не метод, а RFC

// Все наши проблемы от нашего не знания...
P
На сайте с 21.07.2008
Offline
2
#2

метод однозначно актуален для ускорения индексации новых страниц для яндекса.

SP
На сайте с 25.04.2008
Offline
3
#3

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

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