Как увеличить скорость загрузки страниц на сайте

28.07.2017

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

Почему сайт может медленно работать?

Что происходит, когда страница открывается? В этот момент контент передается клиенту, поисковику, парсеру или браузеру. На скорость загрузки влияют четыре фактора:

  • как далеко (географически) расположен сервер от клиента;
  • какой контент передается – коды или изображения;
  • как именно происходит передача данных;
  • как сгенерирован контент.

На что можно повлиять? Конечно, в первую очередь, на Front-end и Back-end сайта, то есть непосредственно на тип контента и способ его генерирования. А вот удаленность сервера от клиента не всегда подвластна владельцам ресурса. Впрочем, и здесь есть технологии ускорения.

Географическая удаленность

Чем больше расстояние между сервером и клиентом, тем выше будет ping – то самое время, за которое передается определенный пакет информации. Но влияет не только время. Важен и маршрут, и общая загруженность канала. Нужно учитывать, что DNS-запросы с каждой страницы отправляются по каждому из упоминающихся на странице доменов. Но при выборе хорошего сервера вы не заметите никаких проблем: зачастую общее время подключения к серверам не превышает 2% от суммарного времени загрузки.

Тип контента или Front-end

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

Изображения: могут быть большого объема и очень большого размера, неправильно выбранного формата (JPEG грузится гораздо быстрее, чем PNG-24), слишком высокого разрешения (например, макет для печати вместо обычного фото). Нужно использовать специальные плагины для обработки изображений, а также контролировать «технические характеристики» всех фото и картинок, которые вы собираетесь разместить на сайте. для оценки объема изображений можно использовать статистику сайта. Также важно минимизировать количество изображений, оставив действительно значимые, чтобы сократить частоту обращения к серверу.

Программный код. Для CSS и JavaScript базовая сложность все та же: количество файлов + их объем. Если сайтом занимаются профессиональные разработчики, то они могут минимизировать все эти данные еще на этапе разработке. На практике же часто бывает по-другому: на оптимизацию попадает уже действующий сайт со сложностями в загрузке. Объем файлов JavaScript изменяют путем удаления комментариев и переноса строк, а также заменой имен переменных на короткие. Уменьшить количество файлов и избежать при этом конфликта сложнее. Но можно использовать технологию минификации: есть специальные автоматизированные сервисы, сжимающие и объединяющие js- и css-файлы. Тем самым обеспечивается увеличение производительности ресурса.

Скорость передачи: способы оптимизации

Если невозможно переработать контент, можно увеличить скорость его передачи. Для этого существует 6 технологий. Их можно протестировать независимо друг от друга и подобрать подходящий вариант:

  1. Компрессия текстов. Этот способ ускорения загрузки рекомендуется HTTP1.1. Для сжатия в большинстве случае используется Gzip, популярный в Unix-системах алгоритм. Метод сжатия напоминает тот, что используется в зип-архивах. Таким образом можно сокращать объем, занимаемый текстовой информацией (включая программный код и хтмл, но не картинки). Проверить сжатие можно, запустив «проверку ответа сервера» в Вебмастере. Также для компрессии можно использовать файл .htaccess с добавленными в него инструкциями.
  2. Кэширование в браузере. При кэшировании браузер сохраняет копию и открывает уже скопированную и сохраненную копию страницы. Сервер отправляет браузеру сведения об изменениях страницы. Есть несколько типов заголовков, отправляемых сервером – например, Expires, по времени, до которого контент считается актуальным, или Last-Modified, по времени последнего изменения. Перед тем, как показать страницу пользователю, браузер проверяет все разрешенные заголовки. Поэтому посетитель всегда видит актуальную информацию. Лучше, если контент с самого начала сгенерирован сервисным языком программирования php. Это поможет обеспечить лучшую управляемость.
  3. HTML-кэш динамических страниц на жестком диске. Кэш может сохраняться на жестком диске или в оперативной памяти сервера, поэтому страницы будут открываться максимально оперативно. Но очень важно профессиональное внедрение технологий кэширования, иначе можно перегрузить оперативку. Есть несколько популярных кэширующих плагинов.
  4. Асинхронная загрузка В этом случае плагины подгружаются параллельно базовомуконтенту. Чтобы включить такой способ загрузки, достаточно прописать атрибут async к тегу script.
  5. CDN-технология для параллельной загрузки. Можно перенести часть контента на другой домен или создать поддомен для хранения самых «тяжелых» частей сайта. Технология CDN позволяет размещать статичный контент в сети распределенных серверов, минимизируя воздействие географического фактора. Для запуска такой технологии обращаются к CDN-провайдерам.
  6. Протокол HTTP/2, позволяющий загружать все файлы параллельно, как один поток. Однако для запуска нового протокола может понадобиться обновление ПО сервера.

Способы генерации контента

На производительность сайта сильно влияет работа сервера, то есть непосредственно время его ответа при загрузке страницы. Если ответ сервера не достигается на протяжении 10 секунд, Яндекс.Метрика может посчитать сайт неработоспособным.

На скорость сервера влияют предустановленные настройки. Чаще всего используется связка Nginx + Apache для качественной сортировки запросов и быстрой их передачи.

Также нужно правильно подобрать режим работы PHP. По умолчанию он работает в режиме CGI, не слишком производительном. Режим mod_php обеспечивает большую производительность, но требует много ресурсов. Для высоконагруженных сайтов понадобится режим FastCGI (или FPM).

Сервер может долго отвечать и по причине продолжительной обработки запросов к базам данных. При работе с БД важно проверить все настройки, в том числе: объем и эффективность КЭШа запросов, количество разрешенных одновременных подключений, объем занимаемой физической памяти на сервере. Можно настроить лонгирование запросов, а потом определить, какие из них нагружают базу данных на самое продолжительное время.

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

Последнее в нашем блоге