Благодарю за помощь, попробую установить подобный код в движок.
Правильно, но мы здесь не о "Большом брате" говорим, а о яндексе, в котором со стороны вебмастера нет НИКАКИХ возможностей изменить скорость индексации, кроме прямого запрета на индексирование :(
XPraptor, какие-либо попытки влиять на яндекс я отбросил - это бесполезно. Пока он не "насытится", всё будет по-прежнему.
У меня Yahoo и Рамблер ведут себя вполне культурно, они тоже появляются на этих доменах, но интенсивность "поедания" страниц несравненно ниже. И хотя Рамблер поедает до 10 страниц в минуту, он делает паузы и в итоге нагрузок нет. Yahoo ещё скромнее - в минуту считывает не больше 5 файлов, видимо следует директивам файла robots.txt
User-Agent: *
Crawl-Delay: 10
Вот и я так подумал, что прерывать исполнение скрипта слишком опасно.
А период захода паука не изменился (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 потому как ничего хорошего она не даст явно, скорее наоборот. В общем, делать тут нечего, пусть индексирует, только бы ночью он не напакостил. В любом случае придется как видно объясняться завтра с хостером.
Ещё раз ОГРОМНОЕ спасибо товарищам горе-разработчикам из яндекса за это чудо инженерной мысли 🙅
Увы - не получается, специфика... :( Все разделы важны, пока кэш не наполнится свежими страницами, будут нагрузки...
Пока применил такое решение (по времени изменения папки "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"); пока боязно - да и поможет ли?
У меня тоже доля российской аудитории невелика в пределах ВСЕГО домена (от силы 4-5%), но применительно к данным субдоменам - профилирует. И мало того, яндекс - основной поставщик посетителей, к сожалению, потому так рисковать не хочется :(
- ну примерно так оно и работает, только вот яндекс раньше так нагло себя не вел и всё было нормально
- что-ж, спасибо за совет, буду копать в этом направлении
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
Я же писал что кэширование имеется, только вот в данный момент много страниц устарело (читай: удалено) и паук их читает непосредственно с первоисточника.
А яндекс совсем уже о....л - каждые полчаса налетает, вот последние сводки (как в аптеке - взял подряд 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 меня реально заинтересовал - почему нет? Тут интересно - как паук отнесется к подобным "фокусам"??
- кстати, уже имеются некоторые мысли на этот счет, но опять же - а если паук не "поймет" и отреагирует как на запрет?
Ну вообще-то через мой сервер в сутки проходит более 50000 человек разношерстной публики + пауков (нет нужды ограничивать) + контент картиночный - посему огромное количество визитов (около полумиллиона) и виртуальный сервер выдерживает (нагрузок нет ВООБЩЕ).
Как вы думаете - мои скрипты оптимизированы??? Для справки - среднее время исполнения скрипта 0.002-0.005 сек
Но вот незадача - на этом же домене есть субдомены с партнеркой (так уж исторически сложилось) и посещаемость там мизерная - 100-200 человек, но вот страницы обновляются с удаленного сервера с низким временем отклика. Конечно, давным-давно приделал я кэш чтобы снизить кол-во обращений к другому серверу, но иногда кэш нужно обновлять :( .
И вот приходит бешеный неуправляемый паук яндекса и нарушает идилию.
Интересно другое - почему разработчики яндекса не добавят возможность настройки скорости индексирования хотя бы через директиву Crawl-Delay. 😕
Не совсем так - на моем хостинге чем быстрее, тем лучше. А если задерживать контент искуственно, например так - <?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
Не будь он (яндекс) таким стремительным, не было бы и предупреждений.🙅