Добрый день дорогие друзья,
в этой статье я хочу рассказать вам немного о структуре скрипта, и как можно оптимизировать его работу, если у вас посещаемый сайт и вы хотите немного снизить нагрузку. Хочу сразу сказать вам что скрипт по умолчанию имеет оптимизированную структуру, поэтому если ваш сайт имеет менее 5 000 уникальных посетителей в месяц, то вам даже нет смысла задумаватся о его оптимизации. Данная статья предназначена для тех у кого посещаемость превышает данное число посетителей, и кто не желает переходить на более дорогой тарифный план у своего хостера.
Итак приготовтесь к тому что за все нужно платить, и если вы хотите уменьшить нагрузку то вам будет необходимо пожертвовать частью возможностей скрипта. И в этой статье я хочу рассказать вам, что вы теряете отключая то или иную возможность, тем самым выставить приоритеты в оптимизации скрипта.
Первое что нужно сделать это включить кеширование сайта. Убедитесь при этом что папка /engine/cache/ доступна для записи. При включении кеширования, вы терятете часть динамики сайта, например счетчик просмотров новостей, будет считаться, но изменятся на странице будет только после обновления кеша. Кеш создается для каждой группы посетителей отдельно обновляется только при обновлении информации в базе данных (например добавление новости или комментария, а также выставления рейтинга статьи). Кеш не имеет срока давности и будет показываться до тех пор, пока не изменится база данных. При включении кеширования, будут кешироваться новости первых четырех страниц на главной и любого раздела, календарь, архив, топ новостей.
Помните: что если вы разрешаете группе пользователей редактировать только собственные новости, то сайт новости для данной группы не кешируются и берутся всегда из базы данных.
Поддержка регистрации на сайте: При отключении данной возможности вы отключаете не только возможность регистрации новых пользователей на сайте, но и отключаете возможность авторизации уже существующих пользователей, для вашего сайта все посетители становятся гостями и механизмы авторизации просто не подключаются. Тем самым вы экономите 1 запрос к базе данных, а также на поддержке кеша для других групп пользователей.
Голосования на сайте: Несмотря на то что в админпанели написано, что при отключении этого блока вы экономите до 3 запросов, то смею вас заверить что в последних версиях скрипта, опрос имеет серьезную оптимизацию, и не создает вообще запросов к базе данных, все имеющиеся опросы сайта кеширутся во время первого старта сайта и кеш не сбрасывается пока не будут внесены изменения в сам опрос, поэтому отключение этого блока не даст вам прироста в производительности. Так что можете смело пользоватся этой возможностью.
Вывод самых рейтинговых статей на сайте: При отключении данного блока вы сможете сэкономить один запрос к базе данных, но имейте ввиду что этот блок кешируется и поэтому данный блок не всегда обращается к базе данных, поэтому много от его отключения вы не выиграете, но тем не менее.
Счетчик просмотров новостей: Отключение данной возможности серьезный шаг на пути оптимизации нагрузки. Связано это с тем что функция обновления UPDATE базы данных, достаточно медленная функция, и во время обновления таблица новостей в базе данных будет заблокирована для чтения, пока не выполнится обновление. И все запросы к базе данных будут стоять в очереди на выполнение. Поэтому если у вас большая база данных с новостями, то мы настоятельно рекомендуем подумать, а нужен ли вам этот счетчик, и что он вам дает.
Календарь: Опять таки кешируется и но позволяет снизить один запрос, и то иногда.
Вывод архивов: Запрос при большом количестве новостей может быть тяжелом, но он кешируется, поэтому нагрузка снизится но ненамного.
Шаблоны: Вы можете использовать на сайте сколько угодно шаблонов, и это не будет создавать нагрузки на сайт, но имейте ввиду, что если вы используете для разных категорий, разные шаблоны то при просмотре полной новости, будет добавлен запрос к базе данных, для получения общего шаблона сайта, именно той категории в которой находится новость.
Рейтинг статей: Если вам не интересны голосования для вашей новости, то не только удалите этот тег из шаблона, но и отключайте данную возможность при добавлении новости, тем самым вы снизите нагрузку на один запрос при просмотре полной новости.
Прикрепление файлов к новости: Если вы загружаете файлы для скачивания (не картинки) то имейте ввиду что будет добавлен один запрос на страницу, на которой показывается ссылка на файл, это необходимо для получения информации о файле, его размере и т.д. Но имейте ввиду что количество ссылок не имеет значения, один файл вы прикрепили или десять, на нагрузку это не влияет, также и не влияет на нагрузку и тот факт если добавите ссылку при просмотре кратких новостей, на все показываемые новости на странице будет всего один запрос. Также имейте ввиду что сама процедура скачивания тоже требует серверных ресурсов, т.к. будет подключение к базе данных, и обновление счетчика, если это не нужно, то можно отключить в админпанели.
Включение GZip сжатия: При включении данной опции, существенно сокращается траффик вашего сайта, и ваших посетителей и ускоряется загрузка страниц, но создается дополнительная нагрузка на центральный процессор. Что вам лучше решать вам.
Незабывайте периодически проводит оптимизацию базы данных в админпанели, эта функция не для красоты сделана, после оптимизации, будут перестроены ваши ключи, а также пересчитаны поля разной длины. Тем самым вы ускорите работу базы данных и уменьшите ее размер.
Ну и самое главное это минимальное использование сторонних модулей, как правило они плохо оптимизированы, поэтому проконсультируйтесь у автора модуля, насколько требователен он к ресурсам.
Ну вот вроде бы и все.
Надеюсь статья принесла вам пользу, удачной вам оптимизации.
август
31
2006
Комментарии