Многие сталкивались с проблемой медленной работы блогов или своих сайтов, да нужно оптимизировать скрипты, чтобы сайт работал быстрее, но многие при этом забывают, что даже при не большой посещаемости сайт может создавать большую нагрузку и хостинг не всегда будет адекватно работать.
Как снизить нагрузку на WordPress или любой другой движок?
Для этого можно включить кэширование страниц или кэширование запросов к базе данных, но все это работа с последствиями нагрузки, нужное дело, без всяких сомнений.
Только нагрузку на сайт создают как роботы поисковых машин, так и простые спамеры. Каждый из которых вкладывает свою частичку в это дело.
Давайте посмотрим статистику, собранную при помощи плагина StatPress для WordPress, который знает не все, но основные поисковые системы и поисковых ботов - точно знает:
Как мы можем видеть - нагрузку создают не только пользователи, но и огромную долю создают роботы.
Это очень разные боты, вот только верхушка айсберга:
В плагине много полезных данных. В том числе и по количеству обращений по RSS.
Мы точно можем определить, какие поисковые роботы нам полезны:
По данным, которые мы видим на скрине, нам понятно, что приходил основной индексатор яндекса (Yandex/1.01.001 (compatible; Win16; I) и робот индексирующий мультимедийный контент (Yandex/1.01.001 (compatible; Win16; m).
При продвижении сайта - эти данные анализировать нужно обязательно, чтобы понимать как и что индексируют поисковые системы, а также с какой периодичностью, тогда прогнозирование будет более точным, после внесения каких-либо изменений на сайт.
Также мы видим роботов, которые нам не очень интересны, т.к. они создают нагрузку на сайт, но трафика с них мы не получаем или получаем, но очень не целевой:
И тут наступает самый интересный момент, который многие упускают.
Нам виден в этом отчете именно юзерагент, которого можно конечно запретить в файле robots.txt, но эта мера не может быть эффективной, ведь поисковые системы не раз уже доказывали, как они могут игнорировать этот файл и директивы в нем.
Нам нужно отбить роботов посредством файла .htaccess, а именно блокировать их на уровне сервера, даже не давать доступ к сайту. Делать это можно как при помощи юзерагента, так и при помощи IP.
Естественно, нужно быть четко уверенным в том, что вы заблокируете ненужные элементы, а то по незнанию можно больших дел натворить Один только робот гугла приходит как минимум под 6 разными масками.
Также, анализируя логи сайта, Вы сможете понять корректно ли работает хостинг.
Как видим - после ручного запроса по юзерагенту сервер по идее должен отбывать поискового робота Twiceller-0.9, ведь эта директива прописана в .htaccess, но в логах сервера мы видим иную картину:
В результате - Вы можете обоснованно писать в службу поддержки, чтобы они решали эту проблему, т.к. не блокируется, мы видим код 200, а не код 403, который должен был быть.
Блокируя роботов в .htaccess вы снижаете нагрузку на сервер.
Далеко не всегда юзерагент соответствует реальным данным, сюда можно подставить что угодно и представляться хоть самим Яндексом, поэтому страховочный вариант - это блокировка IP адреса. Если 100% нужно кого-то заблокировать - лучше продублировать обе директивы.
Также можно поступать не только с роботами поисковых систем, но и со спамерами. Смотрим кто нас спамит.
Выявляем закономерности, IP адреса и блокируем их Если спамят с серверов Китая, к примеру, можно блокировать даже подсети.
К примеру спам блогов может быть полезен для Вас. Как? -
Вы собираете статистику - а именно сайты, которые продвигаются и наращивают себе показатели таким образом, а затем смело заносите их в черный список на бирже ссылок (еще 1 вариант его пополнения), ибо веса эти сайты передавать не будут, какими бы авторитетными они не казались, рано или поздно к ним будут применены санкции. Да и переплачивать за "накрученность" показателей не стоит, а именно показатели определяют цену ссылки.
В данный момент в файле .htaccess у мена более 300 строк запретов.
Все что выше было сказано - это лирические отступления, а теперь к практике, как мы это делаем.
SetEnvIfNoCase User-Agent "^msnbot" search_bot
<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=search_bot
Deny from 87.118.86.131
Deny from 89.149.241
Deny from 89.149.242
Deny from 89.149.243
Deny from 89.149.244
</Limit>
Поясняю - при этом содержании файла будут блокированы роботы ia_archiver (веб-архив) и msnbot (поисковая система MSN/Bing), а также несколько IP адресов 100% спамеров.
Естественно свой файл .htaccess я полностью не буду выкладывать, но собирая свою статистику вы сможете не только снизить нагрузку, но и убрать нежелательные элементы с сайта, которые анализируют и спамят.
Чаще анализируйте логи сайта - там много полезного можно найти, а сфер применения у этих данных много
#1 by Футбол онлайн on 04/21/2010 - 18:11
У Вас очень интересный и полезный блог. За счёт разных счётчиков нагрузка увеличивается или нет?
#2 by Иван on 04/21/2010 - 18:22
Спасибо... Попробуем воплотить в Жизнь Ваши рекомендации. У меня что-то блог очень медленно работает в последнее ремя... Пытаюсь определить причину....
#3 by Stek on 04/21/2010 - 18:29
Таким образом можно и начать фильтровать посетителей из не подходящих стран.
Может просто есть смысл купить нормальный хостинг, чем блокировать потенциальные деньги.
#4 by MyOST on 04/21/2010 - 20:03
За счет плагина, про который речь, да.
Обычные счетчики на сервер не влияют, скорее при тормозах - на скорость загрузки страницы у пользователя.
Да, если прет неизвестный не целевой трафик, почему нет?
Нормальный хостинг - это миф. Все зависит от сервера, насколько он загружен.
А где я потенциальные деньги блокирую? Я вроде полностью описал механизм.
#5 by Антон Тыщенко on 04/21/2010 - 21:54
msnbot (поисковая система MSN/Bing)
А зачем бедный бинг блокировать? На то есть практическая причина или же это из вредности к MS?
#6 by MyOST on 04/21/2010 - 23:12
Посмотрел на трафик с бинга - это несколько человек в месяц, которые просматривают 1-2 страницы. Решил, что этот поисковый бот мне каждый день на сайте не нужен.
#7 by JamBlog on 04/22/2010 - 08:35
По-моему, портянка из 300 строк в .htaccess создаст не меньший напряг для Апача, а может и большИй, чем 100 бестолковых обращений ненужных вам роботов.
#8 by Виктор Фомин on 04/22/2010 - 11:29
Да, нынче гугл снижает траст блога или сайта из-за скорости загрузки, так что этот метод не помешает тоже.
#9 by MyOST on 04/22/2010 - 12:19
Нет, это не создает никакой нагрузки. Тем более, что обить гораздо легче, чем обработать обращение бота к вордпрессу, который сразу от 20 запросов на 1 страницу даст.
#10 by SergeySL on 04/22/2010 - 12:50
Не следует блокировать роботов через .htaccess. Для этих целей существует ответ 304. И еще, Вы очень сильно заблуждаетесь по поводу того, что файлы .htaccess не увеличивают нагрузку на Веб-сервер.
#11 by Александр on 04/22/2010 - 12:58
Спасибо за инфу.. скорость загрузки страниц имеет значение. К тому же хостинг не будет так нагружать) так что берем метод на заметку
#12 by MyOST on 04/22/2010 - 13:02
304 - можно отдавать, только зачем мне отдавать 304 различным парсерам, различным анализаторам сайта и т.п.?
Т.К. в базе "не допускаемых" их естественно огромное количество.
По поводу нагрузки, в предыдущем сообщении я конечно перегнул во фразе "никакой нагрузки", имел ввиду именно соотношение от его использования и обычной загрузки того же вордпресса, когда уже далеко ни один запрос идет.
Опять же, почему 403, а не 304 отдаю, проконсультировался с компетентными людьми, все-таки сошлись на мнении, что лучше не пускать его вовсе.
#13 by SergeySL on 04/22/2010 - 13:06
Если страница не менялась, нужно отдавать 304 не зависимо от User-Agent. Еще есть Last-Modified и т.д. и т.п. Короче говоря, нужно настраивать сервер согласно требованиям стандартов, и с точки зрения лишней нагрузки все будет хорошо.
#14 by MyOST on 04/22/2010 - 13:28
Я конечно тоже люблю валидность кода, стандарты и все такое, но есть дела насущные и есть дела "политические". Дак вот - политические меня абсолютно не волнуют.
Не секрет, что поисковик не должен игнорировать robots.txt - но игнорирует! Как его можно "отбить"? - не 304 и не датой последнего изменения уж точно.
Я не зря написал о том, что мне, лично мне, не нужны на сайте те элементы, которые не приносят пользы. Я их блокирую.
А как поступит кто-то другой - решать ему, стандарты или эффективность.
Выше написал - я блокирую не только ненужные поисковики, а ВСЕ что мне не нужно, любых ботов которые проявляют не нужную мне активность
#15 by SergeySL on 04/22/2010 - 14:12
Не могу не согласиться. К сожалению, на стандарты забивают все больше и больше.
#16 by jerr on 04/23/2010 - 09:55
со спамерами я согласен, а вот с ботами я бы не стал рисковать...
#17 by 44rum on 04/24/2010 - 09:27
Offtop:
не мешало бы у Вас в .htaccess прописать
AddDefaultCharset UTF-8
а то сервер отдает Content-Type text/html; charset=WINDOWS-1251
а в HTML:
У меня RSS-читалка кракозябры показывает..
#18 by MyOST on 04/24/2010 - 09:34
Ох, да, это мой косяк, но суть не поменяется. Этот косяк длится долго и до него руки никак не доходят. База данных win-1251, блог - utf-8. Приходится импровизировать, чтобы видимая часть блога хотяб в браузерах читалась нормально.
Ждет переделки, думаю с редизайном блога - все переделаю.
P.S. через фидбернер или через фид блога подписка?
#19 by 44rum on 04/24/2010 - 09:42
У меня NewzCrawler - там есть просмотр полной статьи - так вот при просмотре полной и глючит (т.е. это косяк в программе.. но исправить всеравно не помешает..)
#20 by getalifejerk on 04/24/2010 - 11:05
Бинг рискованно блокировать - мало ли как их алгоритмы могут измениться, а ты даже не заметишь. А вот всяких там байду - это да.
#21 by Kirill on 04/24/2010 - 19:50
Скорость загрузки очень влияет на время провождения посетителей на сайте.
#22 by neural on 04/25/2010 - 17:16
без оптимизации никуда.. но блокировать как то не хочется
#23 by LUTERRR on 05/01/2010 - 17:49
Случайно можно что-то и не то заблокировать)))
#24 by Андрей on 05/02/2010 - 17:40
Скажите, а чем вы пользуютесь для анализа логов и заходов поисковых роботов? Для вордпресс плагин есть, это понятно уже. А как насчет других движков, для которых нету подобного плагина?
Вручную смотреть логи как-то не удобно. Хотелось бы просматривать эту информацию в более удобном и структурированном виде.
#25 by MyOST on 05/02/2010 - 17:46
Вручную, на самом деле, т.к. эта база собирается изначально трудно, а дальше уже гораздо легче, нужно только добавлять.
Автоматизированного софта нормального я не припомню, хотя была программа раньше (может загнулась уже, можете еще есть, не помню названия).
В принципе был скрипт, да как-то забросили его, нужно поднять архивы - там как раз разбор логов был. Любой программист это напишет без проблем - останется только загрузить файл логов.
#26 by Ilya on 05/04/2010 - 21:07
→ Случайно можно что-то и не то заблокировать)))
Такое уже было, если помните то в прошлом году мастерхост так яндекс всем своим клиентам забанил, вот тогда не очень смешно было, я в тот момент как раз к ним переехал хостится...
#27 by Алексей on 05/05/2010 - 19:36
Слышал уже про эту тему с ботами Поисковых систем, но до сих пор не пробывал их блокировать
#28 by vital2k on 06/07/2010 - 15:09
Наверно нубский вопрос, но всё-таки. Что за поисковый робот такой Java? Постоянно ошивается на сайте. Заблокировать его или оставить?
#29 by MyOST on 06/07/2010 - 16:52
Может быть парсер, может "читалка". Ходит из США вроде, я заблочил по юзерагенту и IP.
#30 by vital2k on 06/08/2010 - 08:48
А как его заблочить по юзерагенту, как он себя обзывает?
User-agent: Javabot
Disallow: /
#31 by Progoni on 06/29/2010 - 20:01
Неплохой способ избавить сайт от лишней нагрузки, у меня еще иногда бывает желание заблокировать саповского робота, который в последнее время довольно сильно нагружает сервер на сайте которого лазит.
#32 by trendbender on 06/30/2010 - 21:34
Можно еще снижать нагрузку для ботов поисковых систем:
User-agent: Yandex
Crawl-delay: 2 # задает таймаут в 2 секунды
#33 by Денежный сайт on 07/12/2010 - 20:32
Интересная тема, причем живая. Но у меня вопрос. Вы все описали для вордпресса. А если у меня движок самопальный, как мне узнать каких роботов блокировать. Где взять такую информацию. Я так понимаю если даже информация будет то придется запреты писать в ручную. Прошу всех ответить на мои вопросы. Они для меня очень важны.
#34 by batik on 07/26/2010 - 21:59
Отлично ускорил блог за счет zlib компрессии и незаморачивался c htaccess
Откройте файл header.php и в самом верху, перед строчкой !DOCTYPE… вставьте этот код: