Як зменшити навантаження на сервер, зниження навантаження за рахунок ботів, просування і аудити

І мене спіткала необхідність зменшувати навантаження на сервер. Один з моїх сайтів інтернет магазинів досить важкий. І незважаючи на включене кешування, спритний хостинг, він дуже сильно вантажив сервак. Коли я переїхав з виділеного сервера на звичайний хостинг зі збільшеною потужністю, необхідність зменшення навантаження стала особливо гостро, тому що при дозволених 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 секунд.

Точно такий же запис слід зробити для ботів інших пошукових систем.

Робимо, і радіємо зниження навантаження і зростання середньої швидкості роботи сайту.