Тормозит сайт

Тормозит сайт? Причины «тормозов» могут быть самые разные: низкая скорость интернет-соединения на стороне пользователя – наиболее частая причина медленной загрузки страниц

Тормозит сайт

На сегодняшний день эта проблема обрела вторую жизнь благодаря взрывному росту мобильного трафика. Важно расстояние, на котором рабочая станция (компьютер, ноутбук или любое другое устройство) пользователя находится от сервера. Естественно, сигнал до московского пользователя будет идти гораздо быстрее из Санкт-Петербурга или из Москвы, нежели из Канады или Германии. Хотя, при использовании хорошего зарубежного хостинга время «доставки» веб-страниц остается приемлемым (разница в пару-тройку сотен миллисекунд для человека просто не заметна).

«Тяжелые» страницы – чаще всего данная проблема кроется в отсутствии прямых рук у разработчиков или в обилии «тяжелого» контента у, и без того «перегруженных», серверов хостинговой компании, что может произойти как по естественным причинам, так и при активном участии недоброжелателей (DDoS-атаки). С причинами «болезни» и ее последствиями мы разобрались. Приступим к «лечению» тормозов при загрузке сайта.

Стандартные болезни стандартных движков

Использование стандартных движков зачастую сопряжено со стандартными причинами тормозов при загрузке веб-страниц. Я уже цитировал Дмитрия Сатина: «Стандартные решения рождают стандартные проблемы». Правда, Дмитрий упоминал стандартные решения и типовые «косяки» в плане юзабилити. Честно говоря, то же самое я говорил своим ученикам, когда вел курсы по веб-разработке.

Сегодня не составляет проблем выбрать один из десятков готовых CMS и развернуть достаточно приличный сайт на ее базе. Только вот беда – типовые движки идут по пути универсализации. Обилие модулей и изобилие функциональных возможностей (порой совершенно не востребованных конечным пользователем и заказчиком) порождает избыточное потребление системных ресурсов, что может стать причиной «перегруза» сервера по причине чего, в свою очередь, тормозит сайт.

Аксиома:

Если вы располагаете достаточным количеством ресурсов, то предпочтительным будет написание сайта или веб-сервиса с нуля, «заточив» его под те функциональные возможности, которые будут действительно востребованы. Такой продукт изначально будет способен выдержать большую нагрузку без ущерба для своей работоспособности.

Разгоняем стандартную CMS

Первое правило, которым следует руководствоваться при выборе готовой CMS для будущего сайта – наиболее полное соответствие ее требованиям, предъявляемым к конечному продукту (вашему сайту).

Постарайтесь не делать интернет-магазин на движке, который для этих целей не приспособлен – воспользуйтесь движками интернет-магазинов. Точно так же не следует делать форум, например, на базе Joomla. Лучше воспользуйтесь «форумным» движком. Для блогов же, несомненно, стоит выбрать WordPress.

С выбором CMS вам поможет определиться обзор CMS на хабрахабре и тесты производительности CMS.

При работе с типовыми CMS так же следует обратить особое внимание на шаблон оформления, который вы хотите установить. Проверьте тщательно его код и вычистите оттуда весь «мусор» («левые» ссылки, ненужные крипты и прочий «лишний» и подозрительный код). Данная операция уменьшит вес загружаемых страниц (насколько сильно – зависит от того, где эта тема добыта и кем писалась/ переводилась) избавит ваш сайт от утечки ссылочного веса.

На WordPress помимо проверки тем на «вредоносный код» я так же использую плагин Belavir для проверки целостности файлов – это одна из процедур защиты сайта от взлома.

Следующий шаг по ускорению работы готового движка – установка плагина кеширования (для прожорливого WordPress это особенно актуально, когда посещаемость сайта сильно возрастает). У моего знакомого был случай падения его сайта на WordPress из-за высокой посещаемости.

Ускоряем самописный сайт

Методы ускорения самописных движков вполне сгодятся для оптимизации скорости работы стандартных CMS. Самописный сайт уже по определению должен работать на порядок быстрее типовой сборки популярной CMS (правда, при наличии прямых рук у разработчиков). Вот несколько моментов, на которые следует обратить внимание при разработке «самописного сайта».

Указывайте кодировку страниц (в примере указана кодировка UTF-8)

Это не только исключит возможность появления «крякозябр» вместо нормальных букв (за последние полгода мне несколько раз попадались такие «кустарные» работы), но еще и несколько ускорит процесс формирования готовой страницы на мониторе пользователя.

Используйте только блочную верстку (это сильно «облегчает» страницы за счет уменьшения количества «лишнего» кода). Только опять же не переусердствуйте – бывают такие умельцы, что верстают на уровне кодогенератора

Аксиома:

Не пользуйтесь генераторами шаблонов – куча «мусора» и путаницы в коде вам гарантированы. По этой же причине минимизируйте использование WYSIWYG-редакторов. Проверено лично и неоднократно.

Выносите все скрипты и стили во внешние файлы – это облегчит редактирование, поддержку проекта и ускорит загрузку страниц за счет исключения дублей кода. Кроме того подключаемые файлы кэшируются браузером на стороне пользователя.

Кстати, для облегчения поддержки проектов я даже элементарные сайты пишу только на PHP, чтобы можно было «собирать» на лету из повторяющихся блоков страниц (этот принцип используется в шаблонах того же WordPress).

Тормозит сайт? По возможности постарайтесь не подключать скрипты к страницам с внешних ресурсов – это провоцирует лишние временные задержки уже за счет «посредника». Лучше скачайте нужный скрипт и разместите его в каталоге с сайтом.

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

Постарайтесь минимизировать использование различных скриптов: Flash слишком тяжел и не всегда поддерживается мобильными платформами, а многие эффекты, реализуемые на JavaScript можно более или менее полноценно заменить технологией CSS (правда, иногда для этого приходится включать фантазию).

Постарайтесь (по возможности) подключать файлы JavaScript в нижней части странниц. В этом случае пользователь увидит текст страницы немного раньше, а подгрузка скриптов будет происходить уже во время чтения страницы. Конечно, физическое время загрузки страницы от этого не изменится, а вот визуальные ощущения изменятся в лучшую сторону.

Используйте при верстке спрайты, заливку цветом посредством CSS и замостите фоновые рисунков везде, где это возможно.

По максимуму ужимайте всю графику, используемую на сайте (только постарайтесь, чтобы это не сильно отразилось на качестве самих картинок).

Указывайте в обязательном порядке размеры всех картинок (атрибуты width и height тэга) – это позволит браузеру быстрее сформировать разметку страницы на экране, заранее распределив место для всех элементов страницы.

Не переусердствуйте с установкой счетчиков на сайте. Нет нужды в установке 10-и счетчиков посещаемости и 53-х кнопок каталогов и рейтингов. Уберите весь этот мусор, тормозящий работу сайта. Достаточно использовать один невидимый счетчик системы веб-аналитики (в своей практике я использую 2 невидимых счетчика веб-аналитики).

Все прочие кнопки и счетчики (если они действительно нужны вам) устанавливайте в варианте «невидимки» – без подгрузки «лишних» картинок с внешних серверов (к сожалению, такая возможность есть не всегда).

Технические заморочки

Честно говоря, в глубоких админских тылах я не силен, но попробую донести до вас некоторые нюансы серверной стороны Интернета.

Во-первых, подберите хороший хостинг (расписывать что-то подробно тут, мне кажется, будет излишним).Во-вторых, не используйте многократные редиректы. Каждый редирект – это лишняя временная задержка (вспомните, насколько дольше открываются ссылки, «обрезанные» при помощи сервиса коротких ссылок). Кроме того редиректы – это лишние и не всегда оправданные препоны поисковым роботам. В-третьих, используйте GZIP-сжатие страниц на сайте, если чувствуете, что все выше приведенные советы явно исчерпали себя.

Не забываем о мобильниках!

Я уже написал выше, что использование технологии Flash может сильно помешать пользователям мобильного Интернета. Кроме того, постарайтесь реализовать на своих сайтах мобильную версию (в своем блоге я одно время использовал плагин WordPress Mobile Pack).

Для платформ Adroid, Bada или iOS может быть оправдано создание мобильных приложений, взаимодействующих с вашим интернет-проектом. Я, как обладатель устройства с андроидом на борту, уже успел убедиться в скорости работу и высоких показателях юзабилити мобильных интернет-приложений.

И это еще не все!

Теперь вам известно более 20 причин, по которым сайт может тормозить и столько же способов ускорить работу сайта. При этом я рассказал только о самых «популярных» проблемах со скоростью загрузки веб-страниц. Прозорливые умы могут найти еще примерно такое количество же способов решения данной проблемы.

Отписывайтесь в комментариях, с какими проблемами по снижению скорости сайта вы сталкивались. Какие хитрости и уловки применяли, чтобы ускорить работу своего сайта? В общем, не жадничайте, делитесь своим опытом.