Elizov

Elizov
Рейтинг
1
Регистрация
17.06.2007
djatell:
Господа, при 304 как раз ОБЯЗАТЕЛЬНО делать exit !
Но надо учитывать что 304 отдаётся в ответ на запрос содержащий заголовок If-Modified-Since. Примеров правильной логики обработки такого запроса масса.
...
Вот например кусочек кода... по мотивам обсуждения на xpoint.ru
В начале разбираемся какой заголовок отдать...
А в конце отдаём...
...
Для правильной обработки надо знать реальное время последнего изменения страницы. Как дополнительная мера - для роботов отдавать заголовок Expiries с текущим временем+скажем неделя. На проиндексированность сайта не влияет, а вот трафик экономит прилично.

Благодарю за помощь, попробую установить подобный код в движок.

adman:
В гугле со страницы вэбмастера, можно замедлить скорость индексации.

Правильно, но мы здесь не о "Большом брате" говорим, а о яндексе, в котором со стороны вебмастера нет НИКАКИХ возможностей изменить скорость индексации, кроме прямого запрета на индексирование :(

XPraptor, какие-либо попытки влиять на яндекс я отбросил - это бесполезно. Пока он не "насытится", всё будет по-прежнему.

XPraptor:
А я вот на днях на всех сайтах своих убил в роботе Yahoo слурпа - тоже грузил по полной своими заходами. Теперь смотрю логи - красота, IP роботов не выскакаивают из 50-и, а с yahoo каждый день зашкаливали за 900.

У меня Yahoo и Рамблер ведут себя вполне культурно, они тоже появляются на этих доменах, но интенсивность "поедания" страниц несравненно ниже. И хотя Рамблер поедает до 10 страниц в минуту, он делает паузы и в итоге нагрузок нет. Yahoo ещё скромнее - в минуту считывает не больше 5 файлов, видимо следует директивам файла robots.txt

User-Agent: *

Crawl-Delay: 10

XPraptor:
Нет, прерывать не вздумайте - это будет приравнено к 404. А как игнорирует? Снова заходит на эту страницу? А период захода не удлинился? Может он постепенно начнет снижать период захода, нужно просто попасти несколько страниц с отдачей 304, а остальные пока не трогать.

Вот и я так подумал, что прерывать исполнение скрипта слишком опасно.

А период захода паука не изменился (1-2 секунды). Мало того, почему-то на этот раз, паук остался на большее время: не 7 а целых 14 минут он беспрерывно сдергивал страницы (400 подряд, время генерации каждой где-то 0.4-2 сек), из-за чего поставил рекорд нагрузки:

2007-06-18 01:45:01 2007-06-18 02:00:00 14.18 % 4.25 min 3.14

В общем убрал я эту вставку с кодом 304 потому как ничего хорошего она не даст явно, скорее наоборот. В общем, делать тут нечего, пусть индексирует, только бы ночью он не напакостил. В любом случае придется как видно объясняться завтра с хостером.

Ещё раз ОГРОМНОЕ спасибо товарищам горе-разработчикам из яндекса за это чудо инженерной мысли 🙅

muar:
ну может периодически закрывать лишь какие-то разделы? которые он особенно треплет и которыми можно пожертвовать? У нас было много разделов-дублей типа "версия для печати"

Увы - не получается, специфика... :( Все разделы важны, пока кэш не наполнится свежими страницами, будут нагрузки...

Пока применил такое решение (по времени изменения папки "cache/" определяю когда была последняя запись в кэш):


if ($useragent == "Yandex/1.01.001 (compatible; Win16; I)") {
if ($xtimex = time()-filemtime("cache/")<3)
header("HTTP/1.1 304 Not Modified");
} else
header ("Last-Modified: ".gmdate("D, d M Y H:i:s")." +0200");

P.S.: код этот уже показал свою неэффективность - яндекс хидер 304 игнорирует (в таком виде), величина $xtimex постоянно равна = 1, а не 3 (и больше), как было задумано.

Прерывать же выполнение командой exit(); следом после header("HTTP/1.1 304 Not Modified"); пока боязно - да и поможет ли?

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

У меня тоже доля российской аудитории невелика в пределах ВСЕГО домена (от силы 4-5%), но применительно к данным субдоменам - профилирует. И мало того, яндекс - основной поставщик посетителей, к сожалению, потому так рисковать не хочется :(

bimcom:
а почему самому нельзя инициировать обновление кэша?
ну а если информации для обновления много - делайте локальныю копию той БД к которой обращаетесь и синхронизируйте их.

- ну примерно так оно и работает, только вот яндекс раньше так нагло себя не вел и всё было нормально

progress:
Поймет, если даже не поймет - то заберет контент, Вам надо только научить движок правильно отдавать 304

- что-ж, спасибо за совет, буду копать в этом направлении

P.S.: Начались новые сутки, всё по-прежнему, к тому же американцы сейчас добавляют нагрузки своей активностью :( - сервер-то общий

2007-06-18 00:15:01 2007-06-18 00:30:01 9.83 % 2.95 min 5.16

2007-06-18 00:00:01 2007-06-18 00:15:01 5.37 % 1.61 min 4.3

bimcom:
если эти страницы не часто изменяются то юзаем
http://sb-news.net/index.php?n=12

Я же писал что кэширование имеется, только вот в данный момент много страниц устарело (читай: удалено) и паук их читает непосредственно с первоисточника.

А яндекс совсем уже о....л - каждые полчаса налетает, вот последние сводки (как в аптеке - взял подряд 200 страниц... пауза... и т.д.)

2007-06-17 23:15:01 2007-06-17 23:30:01 8.67 % 2.6 min 6.2

2007-06-17 22:45:01 2007-06-17 23:00:01 8.37 % 2.51 min 3.73

2007-06-17 22:15:00 2007-06-17 22:30:01 8.42 % 2.53 min 3.2

2007-06-17 20:15:01 2007-06-17 20:30:01 8.97 % 2.69 min 4.25

А вот вариант со статус кодом HTTP 304 Not Modified меня реально заинтересовал - почему нет? Тут интересно - как паук отнесется к подобным "фокусам"??

XPraptor:
Только разобраться когда нужно отдавать 304 а когда уже пора бы и пустить попастись.

- кстати, уже имеются некоторые мысли на этот счет, но опять же - а если паук не "поймет" и отреагирует как на запрет?

Deni:
У меня на виртуалке роботы Яндекса в сутки индексируют около 40.000 страниц (на 4 доменах) и никакой нагрузки и никаких жалоб от хостера

Ну вообще-то через мой сервер в сутки проходит более 50000 человек разношерстной публики + пауков (нет нужды ограничивать) + контент картиночный - посему огромное количество визитов (около полумиллиона) и виртуальный сервер выдерживает (нагрузок нет ВООБЩЕ).

Как вы думаете - мои скрипты оптимизированы??? Для справки - среднее время исполнения скрипта 0.002-0.005 сек

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

И вот приходит бешеный неуправляемый паук яндекса и нарушает идилию.

Интересно другое - почему разработчики яндекса не добавят возможность настройки скорости индексирования хотя бы через директиву Crawl-Delay. 😕

progress:
Можно скриптом ограничить скачивание, замедляя скорость отдачи контента сильно желающим

Не совсем так - на моем хостинге чем быстрее, тем лучше. А если задерживать контент искуственно, например так - <?php sleep(1) ?>, то только хуже будет, т.к. в формулу расчета нагрузки хостинга входит время исполнения скрипта.

А контент сайта специфичный - страницы берутся с удаленного сервера, потому время исполнения приличное - 0.5-1 сек. Понятно, что прямой нагрузки на процессор сервера практически нет, но формула берет это самое суммарное время исполнения скриптов за 15 минут и выдает уже в предупреждении о нагрузке. К примеру, яндекс прошелся по 200 страницам за 7 минут, и создал в панели вот такую строчку:

Начало периода Конец периода Процент нагрузки Процессорное время LA сервера

007-06-17 20:15:01 2007-06-17 20:30:01 8.97 % 2.69 min 4.25

Не будь он (яндекс) таким стремительным, не было бы и предупреждений.🙅

12
Всего: 11