' Как оптимизировать сайт и ускорить его работу | Шнайдер блог

Как оптимизировать сайт и ускорить его работу

Здравствуйте. Давно хотели написать статью на эту тему. Часто получается, что сайт на хостинге, у которого, казалось бы, нет предпосылок для этого, начинает очень сильно нагружать процессор и потреблять ОЗУ. Это сказывается как на работе сайта (он начинает медленней работать), так и на работе хостинга в целом. В этой статье я хотел бы рассказать, как можно несколькими простыми шагами снизить потребление ресурсов сайтом, и, тем самым, ускорить его работу.

1. Кеширование. 

Я думаю, все мы когда-то слышали об этом слове, и многие знают, что оно означает. Не будем останавливаться на этом, а скажем лишь то, что, если движок предусматривает это, кеширование должно быть включено. Кеширование ОЧЕНЬ сильно влияет на ресурсы потребляемые сайтом. Никогда не стоит им пренебрегать. Вреда от него практически никакого, а польза - сумасшедшая. У отдельных модулей сайта также бывает опция кеширования - ее тоже стоит включить. Также существуют различные надстройки, помогающие кешировать движки, например WP Super Cache для WordPress. Со временем мы постараемся написать статьи о кешировании для всех распространенных движков и разместим ссылки в этой статье. А пока просто подведем итог - включаем кеширование сайта.

2. Оптимизация БД. 

Если с кешированием все относительно просто, достаточно включить его в настройках движка, то с оптимизацией БД дело обстоит немногим сложнее. На личном опыте я узнал, что оптимизация БД может снизить нагрузку, которую дает сайт, более чем в 3 раза. Не каждый сайт можно так оптимизировать, но попробовать стоит всегда. 

ВНИМАНИЕ!! Перед всеми действиями настоятельно рекомендуем сделать полный экспорт базы, чтобы в случае чего восстановить ее.

Для начала зайдем в PHPMYADMIN и в списке БД слева выберем базу, которую мы будем оптимизировать:

В итоге получаем список таблиц. Отсортируем их по количеству строк в каждой из них:

Теперь мы видим самые заполненные таблицы. Обычно они и представляют источник нагрузки, так как обращение к таким загруженным таблицам обычно занимает наибольшее количество процессорного времени. В таблицах может быть что угодно. Логи, сообщения пользователей, какие-то данные кеша, комментарии. Может быть также и основной контент - статьи, новости, файлы. Вы должны сами понять, какую таблицу можно подчистить, а какую не стоит. Вот например в нашем примете, у нас есть таблица на 130 тыс записей, которую можно немного почистить, удалив устаревшие записи. Давайте сделаем это. Для этого жмем на таблицу и просматриваем поля, какие там имеются. В нашей таблице есть след. поля: 

Можно будет удалить старые сообщения как по ID, так и по DATE. По ID способ проще, но по DATE - надежнее. Просто не в каждой таблице есть поле DATE. Что ж, давайте удалим все посты, которым больше чем полгода. Для этого зайдем в раздел SQL и выполним такой запрос:

delete FROM `имя таблицы` WHERE date < "2012-06-01" (то есть удалить все записи, которые старше 01.08.12)

либо если по ID ориентировать, то такой запрос

delete FROM `имя таблицы` WHERE id < 100000 (удалит все записи, с айди меньше чем 100000, то есть больше четверти всех записей)

жмем ок и получаем сверху примерно такую запись:

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

То есть мы избавились примерно от 200 тыс записей суммарно по всем таблицам. И как итог, можно сделать следующее. Прокрутите список таблиц вниз, выделите все таблицы и с выбранными нажмите - Оптимизировать. Это также даст небольшой прирост производительности.

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

Данную операцию стоит делать регулярно, хотя бы каждые полгода работы сайта. 5 минут работы, а сайт будет летать. 

3. Задания крон

 Здесь все просто. Ставьте на выполнения такие задания в ночное время, желательно в 2-3 часа ночи. Если же требуется определенная регулярность запуска, то ставьте на запуск НЕ ЧАЩЕ чем каждые 10 минут. Запуск скрон задания чаще чем раз в 10 минут может повлечь накомпление крон процессов и увеличение суммарной нагрузки на аккаунт, а значит увеличить шансы на его возможную блокироку за превышение использованных ресурсов.

4. Грузящие модули

Как уже было сказано в шаге номер один, стоит кешировать все модули, которые кешируются. Но есть просто очень грузящие модули, которые несут минимальную смысловую нагрузку, зато могут грузить сервер больше, чем весь остальной сайт. К таким модулям относятся - модуль "Кто онлайн" на сайте (он постоянно делает запросы к БД), а также некешированное облако тегов, так как оно генерирует запросы на БД с каждым новым посетителем.  Также очень большим источником нагрузки может стать модуль - "Миничат". Если Вы можете не использовать его, то по крайней мере поставьт частоту обновлений не чаще чем раз в 2 минуты, и включите кеширование. Все вышеперчисленные модули необходимо кешировать либо, что лучше, просто отключать.

Пока на этом все. Если вы выполните все эти действия, нагрузка от сайта упадет не меньше чем в 3 раза. Если же, казалось бы все это выполнено, а сайт все равно плохо работает, или хостинг пишет Вам о превышении нагрузки, значит просто должно быть посещалка Вашего сайта выросла настолько, что пора думать о покупке дополнительных мощностей, таких как ВПС или выделенный сервер. Но данная статья не об этом. Оптимизируйте Ваши сайты, и пусть они работают как часы.

С уважением, команда Шнайдер-хост.