Хостинг: как ускорить сайт

В этой статье я хочу дать основные понятия о факторах, которые влияют на скорость загрузки интернет-ресурса.

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

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

Хостинг: как ускорить сайт

Хостинг и ускорение сайта

Введение

Целевая аудитория: собственники сайтов, веб-студии, любители и специалисты. Постараюсь написать этот материал так, чтобы он был вполне доступным в понимании всем.

Я заметил, что многие не понимают настоящих причин тормозов их интернет-порталов. На загрузку веб-портала влияет множество разнообразных факторов, на большинство из них мы можем повлиять; прочие нам нужно просто учитывать.

Мощность, качество устройства клиента, а также общая скорость его интернета, удаленность от локации сервера

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

  • Расположить собственный сайт в ЦОДе, который расположен в близости от потенциальных пользователей сайта и убедиться в том, что он предоставляет достаточный канал под планируемую нагрузку. То есть, выбрать хороший и надежный хостинг. Многие часто недооценивают всю важность данного пункта, и зря.
  • Чем устройство слабее, тем дольше оно создает новые соединения с сервером, поэтому нам надо снизить количество таких соединений. Владелец сайта часто даже не представляет себе, как плохо грузится его веб-ресурс, и думает, что проблемы тормознутости точно не из-за его детища, это у клиентов слишком медленный интернет. Следует учитывать то, что вы как собственник находитесь на своем портале чаще других и все содержимое веб-ресурса уже давно закэшировано веб-браузером, поэтому не подгружается при каждом переходе по страницам (если у вас настроено специальное кэширование статики в веб-браузере клиента), а просто берется из кэша. Таким образом, не только существенно экономится трафик, не нагружая ваш канал интернета каждый раз, но и не создается соединений для загрузки данных файлов.

Число соединений, стадии загрузки и вес странички можно увидеть в инструментах разработчика веб-браузера. В браузере Google Chrome, дабы открыть инструменты разработчика надо просто на странице кликнуть в любое место ПКМ, нажать «Просмотреть код» и уже там перейти в пункт Network.

Загрузку разделить можно на несколько стадий, каждая стадия загрузки странички вашего веб-ресурса важен.

Хостинг: как ускорить сайт

Время ответа сервера

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

Разобьем данный промежуток на отдельные подпункты.

Отправка запроса веб-браузером клиента.

Скорость Сети и мощность устройства клиента, а также удаленность сервера, где находится ваш интернет-ресурс, от клиента и его загруженность — те факторы, которые могут повлиять на данную стадию.

Дальше до того момента, когда сервер отправит готовую страницу в ответ, проходит несколько стадий, и для каждого отдельного сайта стадии могут отличаться. Я возьму в пример сайт с БД MySQL и на php.

Запрос принимается веб-сервером

Запрос принимается веб-сервером, он находит в перечне виртуальных хостов тот, который подойдет под запрос, а также выполняет обработку виртуального хоста. В нашем примере интернет-ресурс на php, значит веб-сервер обратится к PHP для генерации страницы. Для наполнения страницы данными тот обратится в базу данных. После формирования страницы она будет передана веб-сервером веб-браузеру клиента.

Немаловажную роль играет кэширование на каждой стадии, кэширование на уровне веб-сервера, кэширование на уровне PHP, кэширование запросов в базу данных, могут быть и прочие методы кэширования. Это как раз та стадия на которой вы можете повлиять и этой стадии необходимо уделить время.

Вот методы его ускорения:

  • Выбрать достаточно быстрый хостинг в Украине, либо даже лучше VPS Украина или физический сервер. В случае если вы в таком выборе не компетентны, то лучше попросите помощь у профессионала или же спросите рекомендации от друзей, знакомых, которые пользуются услугами каких-то хостинг провайдеров. Обратите ваше внимания на то, где именно расположен ЦОД хостера: очень хорошо, если он будет располагаться в близости от ваших клиентов. Лично я применяю зарубежные сервера, только когда на сайт осуществляются атки DDOS. Отечественные хостинг провайдеры предоставляют защиту от атак DDOS очень низкого качества, и здесь уже приходится мириться с задержкой и пингами.
  • Грамотная настройка сервера обязательно поможет ускорить от него ответ. Здесь играют роль подбор более быстрого программного обеспечения и его правильное конфигурирование. Для веб-сервера я применяю Nginx, где по возможности применяю hhvm вместе с php 7.1. Выбор версии PHP и hhvm зависит также от кода вашего веб-ресурса: если веб-ресурс использует всяческие устаревшие опции, то вам или придется обновлять его, или же довольствоваться старыми версиями, которые имеют не такую высокую общую производительность. Ну и в качестве базы данных применять MariaBD или Perсona, если у вас достаточно крупный веб-проект. Также не следует забывать о защите: специальные фильтры от типовых атак, антибруты, http-авторизация как вспомогательная авторизация на всех админках, антивирусы, антиспамы и другое.

Отправка сгенерированной страницы клиенту

Отправка сгенерированной страницы клиенту и момент получения данной страницы и будет завершающей стадии этой части загрузки странички. Здесь для уменьшения объема отправляемой информации желательно использовать gzip-сжатие.

Хостинг: как ускорить сайт

DOMContentLoaded

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

На что здесь следует обязательно обратить внимание

Число соединений — если их много, надо задуматься над сокращением числа данных соединений. Как я уже выше писал, чем больше соединений, тем больше необходимо ресурсов для их открытия, а это довольно неплохая нагрузка, в особенности на слабые устройства и, кстати, на сам сервер в частности.

Как их сократить? В http/1.0 и http/1.1 для каждого файла создается отдельное соединение, таким образом наша задача сократить число подгружаемых файлов на странице.

  • Объединить все JS в один файл, как и CSS. Такую процедуру называют конкатенацией.
  • Поместить маленькие изображения в закодированном виде непосредственно в CSS или в тело странички, дабы для них не создавались какие-то отдельные соединения.
  • Возможно избавиться от загрузки не нужных компонентов, и по возможности несколько отсрочить загрузку js, либо поместить их в конец. CSS тоже было бы хорошо оптимизировать.
  • В случае если отложить загрузку CSS, то страница при серфинге по интернет-ресурсу будет моргать. На мой взгляд, это совершенно неприемлемо, однако мы ведь можем загрузить css необходимый для отображения верхней части портала в начале, а все прочее потом. Здесь желательно проконсультироваться с профессиональным верстальщиком.
  • Перейти на http/2.

Вес странички и компонентов, подгружаемых с нее.

  • Убрать в коде все лишние комментарии.
  • Применять сжатие.
  • Оптимизировать содержимое интернет-ресурса, сжать и объединить js и css, сжать изображения.

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

Модуль для веб-сервера PageSpeed. Он есть как для Apache2 (mod_pagespeed), так и для Nginx (ngx_pagespeed). О том же, что он способен делать, лучше почитать в специальной официальной документации. Его настройки весьма гибкие.

Я лишь отмечу, что он может делать конкатенацию на лету. Это поможет сократить число соединений и он же прекрасно жмет содержимое, значительно сокращая вес страницы и ее контента.

Эта стадия загрузки страницы в идеале не должна превышать 2-3 секунд. В случае если у вас это время больше, необходимо задуматься над вышеописанными рекомендациями.

Хостинг: как ускорить сайт

Load

Load — это момент, когда колесико веб-браузера перестало крутиться. То есть выполнилась полноценная загрузка странички. Это менее критичная стадия загрузки и зачастую она затормаживается сторонними онлайн-чатами для общения с клиентами на веб-портале и другими второстепенными компонентами.

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

Загрузка контента со стороны

Преимущества загрузки содержимого со стороны:

  • Сокращаем нагрузку на собственный сервер.
  • Эти же так называемые статические данные, а именно js, css, шрифты и картинки могли быть уже загружены раньше в момент просмотра им прочих сайтов, которые также применяют данную статику, они будут просто грузиться из кэша веб-браузера.

Недостатки загрузки содержимого со стороны:

  • Публичные CDN и интернет-ресурсы, где хранятся картинки, шрифты, css и js зачастую имеют большую нагрузку, поскольку их используют сотни и тысячи интернет-ресурсов с различным уровнем посещаемости, в результате выходит, что отдать со своего часто быстрее, нежели экономить нагрузку.
  • В случае если вы применяете http2 для сокращения количества соединений, то сторонние веб-ресурсы вам их лишь добавят.

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

Надеюсь, что эта статья была для вас очень познавательной.


Отзывы о хостинге:

Оставить комментарий



Хостинг с отличным саппортом — HOSTiQ