І мене спіткала необхідність зменшувати навантаження на сервер. Один з моїх сайтів інтернет магазинів досить важкий. І незважаючи на включене кешування, спритний хостинг, він дуже сильно вантажив сервак. Коли я переїхав з виділеного сервера на звичайний хостинг зі збільшеною потужністю, необхідність зменшення навантаження стала особливо гостро, тому що при дозволених 150cp у мене один тільки один цей сайт давав навантаження до 250ср. Це нікуди не годилося. Чистка ємних скриптів, наприклад динамічна обробка фото, була дуже ефективною і мені довелося копати далі.
Порившись в інтернеті, я знайшов спосіб, щоб відрубати непотрібних ботів, і обмежити діяльність потрібних.
Отже, п.1. Знижуємо навантаження на сервер за допомогою блокування діяльності непотрібних спамерських пошукових роботів.
Для цього вставляємо в файл .htaccess такий запис:
# Далі список юзерагентов яким ми забороняємо доступ
SetEnvIfNoCase User-Agent MJ12bot bad_bot
SetEnvIfNoCase User-Agent JS-Kit bad_bot
SetEnvIfNoCase User-Agent PostRank bad_bot
SetEnvIfNoCase User-Agent Python-urllib bad_bot
SetEnvIfNoCase User-Agent UnwindFetchor bad_bot
SetEnvIfNoCase User-Agent facebookexternalhit bad_bot
SetEnvIfNoCase User-Agent TweetmemeBot bad_bot
SetEnvIfNoCase User-Agent Butterfly bad_bot
SetEnvIfNoCase User-Agent MFE_expand bad_bot
SetEnvIfNoCase User-Agent Java bad_bot
SetEnvIfNoCase User-Agent Summify bad_bot
SetEnvIfNoCase User-Agent MetaURI bad_bot
SetEnvIfNoCase User-Agent FlipboardProxy bad_bot
SetEnvIfNoCase User-Agent ScribdReader bad_bot
SetEnvIfNoCase User-Agent RockMelt bad_bot
SetEnvIfNoCase User-Agent InAGist bad_bot
SetEnvIfNoCase User-Agent NING bad_bot
SetEnvIfNoCase User-Agent TweetedTimes bad_bot
SetEnvIfNoCase User-Agent PaperLiBot bad_bot
SetEnvIfNoCase User-Agent Library bad_bot
SetEnvIfNoCase User-Agent Ezooms bad_bot
SetEnvIfNoCase User-Agent strawberryj bad_bot
SetEnvIfNoCase User-Agent Scooper bad_bot
SetEnvIfNoCase User-Agent Ahrefs bad_bot
SetEnvIfNoCase User-Agent Spider bad_bot
SetEnvIfNoCase User-Agent None bad_bot
SetEnvIfNoCase User-Agent EventMachine bad_bot
SetEnvIfNoCase User-Agent aiHitBot bad_bot
SetEnvIfNoCase User-Agent SolomonoBot bad_bot
SetEnvIfNoCase User-Agent SearchBot bad_bot
SetEnvIfNoCase User-Agent Wget bad_bot
SetEnvIfNoCase User-Agent Crawler bad_bot
Deny from env = bad_bot
Тобто спочатку ми даємо список ботів, яким хочемо заборонити заходити на сайт, позначаючи їм параметр bad_bot, а далі забороняємо віддавати їм вміст сторінки, якщо вони з'являться.
Список можна поповнювати. У моєму випадку особливі проблеми викликав MJ12bot, який по 1-3К запитів робив на добу.
п.2. Зменшення навантаження за рахунок установки таймінгу
Завантажуючи по багато сторінок, ці боти цілком собі теж можуть покласти сайт і весь сервер разом з ними.
Щоб вони не клали сервер, їм можна задати інтервал мінімального часу затримки, яке має відбуватися до наступного запиту.
Це можна зробити в файлі robots.txt. Додайте туди такі записи:
Цей запис означає, що ботам Яндекса заборонено робити звернення до сайту частіше, ніж 1 раз в 5 секунд.
Точно такий же запис слід зробити для ботів інших пошукових систем.
Робимо, і радіємо зниження навантаження і зростання середньої швидкості роботи сайту.