Примечание главного редактора. Текст этой статьи изобилует техническими терминами: специалистам статья поможет систематизировать и преумножить свои знания, а интернет-маркетологам — сделать еще один шаг к взаимопониманию с программистами и системными администраторами. Эффективный сайт — это результат совместной работы веб-дизайнеров, верстальщиков, программистов и интернет-маркетологов. Поэтому многие наши статьи о создании сайтов знакомят маркетологов с закулисьем веб-разработки.
К сожалению, список причин, по которым посетители уходят с сайтов, довольно длинный. Нередко любой из этих причин может быть достаточно, чтобы новый клиент превратился в упущенную возможность.
1. Кнопки социальных сетей
Вы хотите, чтобы пользователи социальных сетей активно делились вашим контентом друг с другом, но социальные кнопки зависят от внешнего JavaScript и могут существенно замедлять загрузку ваших страниц, особенно, если вы не используете асинхронную загрузку. Они также могут сделать весь сайт практически бесполезным, как выяснили некоторые ритейлеры в начале года.
2. Код рекламных сетей
Рекламные доходы могут иметь значение для вашего бизнеса, но код рекламных сетей, большая часть которого основана на JavaScript, может тормозить загрузку страниц. Некоторые рекламные сети внедрили асинхронную загрузку, что предотвращает блокирование их кода JavaScript, но многие до сих пор этого не сделали.
3. Теги статистики
Статистика чрезвычайно ценна, но основанная на JavaScript аналитика может влиять на время загрузки страниц. Хорошая новость: многие провайдеры статистики используют асинхронную доставку. Плохая новость: многие без особой необходимости используют несколько разных кодов для статистики.
4. JavaScript-функциональность
JavaScript может быть неизбежным злом, особенно, когда дело доходит до рекламы и статистики. Но многие сайты используют JavaScript для реализации функциональности, которую эффективнее реализовать на стороне сервера. Отличный пример — многие сайты используют для комментариев Disqus и Facebook, что является наиболее неэффективным способом организовать эту функциональность (есть и другое мнение. — Прим. переводчика).
5. Неоптимизированные изображения
Возможно, быстрый интернет уже стал для вашей аудитории правилом, а не исключением, но это не значит, что вам не нужно работать над оптимизацией изображений. Перегруженная картинками страница, где изображения были оптимизированы на 5-10%, может загружаться заметно быстрее.
6. Раздутый HTML
Сделать так, чтобы ваш сайт выглядел правильно во всех популярных браузерах может быть непросто. Сделать это с помощью компактного и аккуратного HTML-кода — еще труднее. Раздутый HTML не только увеличивает объем передаваемых пользователям данных, но и может существенно влиять на производительность JavaScript.
7. CSS (плохие каскадные таблицы стилей)
Важно обеспечивать эффективность не только HTML, но и CSS. К сожалению, плохой CSS-код характерен для многих сайтов. CSS могут замедлять загрузку страницы как при использовании селекторов потомков, так и при использовании передовых селекторов CSS3.
8. Любительский jQuery-код
jQuery — наиболее популярная библиотека JavaScript, и это неспроста: она позволяет быстро разрабатывать сложную функциональность. Но это не значит, что любой, кто работает с jQuery, использует ее эффективно. От обработчиков событий до манипуляций с DOM, есть масса областей jQuery, в которых неопытные разработчики только множат хаос.
9. Медленная работа DNS
Многие хостинговые компании и регистраторы доменных имен предлагают бесплатные DNS, и чаще всего вы получаете именно столько, сколько платите. Хотя многие и принимают DNS как данность, так делать не стоит: в некоторых случаях поиск DNS может занимать львиную долю всего времени загрузки страницы.
10. Слишком много доменов
Размещать разные компоненты страницы на разных доменах позволяет распараллелить загрузку — это хорошо, но если элементы страницы разбросаны по слишком большому количеству доменов, будьте готовы к тому, что работа с DNS будет негативно влиять на время загрузки.
11. Плохой заголовок
Если вы не создадите правильные заголовки Expires или Cache-Control, вы усложните пользовательским браузерам локальное кэширование. Это значит, что потребуется больше обращений к элементам страницы.
12. Отсутствие Gzip-сжатия кода
Если ваш сервер не настроен для применения Gzip-сжатия HTML, CSS и JavaScript, вы, скорее всего, передаете пользователям заметно больше данных, чем требуется.
13. Плохой код на стороне сервера
Вы можете сделать все правильно при отдаче готовой страницы пользователю, но если генерация страницы занимает целую вечность из-за медленного приложения, на котором работает ваш сайт, все ваши усилия по части фронтенда будут бесполезны.
14. SQL-запросы из ада
Если веб-приложение работает не слишком быстро, велика вероятность, что есть проблема с SQL-запросами. От неэффективных операторов join до операторов select, включающих большое количество рядов без индексов — много вариантов, как плохо реализовать SQL-запросы.
15. Старые версии серверного программного обеспечения
Популярное серверное программное обеспечение, от PHP до Java, которое используют многие сайты, исторически становится все лучше с течением времени. Так что если вы застряли на старых версиях, велика вероятность, что вы не используете улучшения в производительности, доступные после обновления.
16. Неподходящий веб-сервер
Веб-серверы, такие как Apache или IIS, могут быть оптимальными решениями для хостинга сайтов. Но когда дело доходит до масштабирования и скорости, многие крупнейшие сайты мира переходят к скоростным монстрам вроде Nginx и lighttpd — веб-серверам, которые ваш хостер или системный администратор вряд ли предложат вам по умолчанию.
17. Flash и Java
Хотя количество сайтов, требующих сторонние плагины вроде Flash или Java, существенно уменьшилось в последние годы, Flash и Java еще не умерли и заслуживают место в этом списке.
18. Виртуальный хостинг
Благодаря постоянно снижающимся ценам на аппаратное обеспечение, покупка или аренда мощного сервера перестали быть роскошью. Но несмотря на это, многие компании продолжают размещать сайты на виртуальном хостинге, где чье-то тормозное приложение может замедлять их работу. Здесь можно вспомнить и облачную среду, где скорость ввода-вывода данных порой вызывает тревогу.
19. Публичные сети для передачи частных данных
Одна из первых вещей, которую делают многие издатели при масштабировании проекта, — разделение веб-сервера и сервера базы данных. Но многие не соединяют их с использованием частной сети, создавая проблемную зону, которая может легко повлиять на производительность сайта.
20. Неэффективное серверное кэширование
Благодаря решениям с открытым исходным кодом вроде Memcached и Redis, многие издатели используют серверное кэширование, один из наиболее эффективных способов улучшить производительность веб-приложения. Но не все варианты кэширования одинаково полезны, и плохо продуманная стратегия аннулирования кэша может сделать кэширование бесполезным.