Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
Панель управления
  • Русский
  • Українська
  • UAH
  • USD
  • RUB
  • EUR
  • 0-800-307-307  Горячая линия
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

2.19.3. Оптимизация сайта

Увеличить производительность и скорость работы сайта можно несколькими путями:

  1. Оптимизация сайта:
  2. Оптимизация работы ПО сервера (для VPS и выделенных серверов).
  3. Увеличение предоставляемых ресурсов:

Оптимизация сайта не напрасно вынесена на первое место, потому что имеет наивысший приоритет среди остальных.

Если взять два совершенно одинаковых сервера с одинаково настроенным ПО и разместить на одном сайт, на котором используется неоптимизированная тема оформления, плюс 2-3 десятка никем не проверенных в отношении нагрузки и взаимодействия плагинов, а на другом тот же сайт, но использующий кеширование готовых страниц, с критически необходимым минимумом максимально оптимизированных между собой плагинов/модулей, то окажется, что второй сервер даже без выполнения других пунктов может работать в 2-4 раза быстрее (в некоторых случаях всё намного драматичнее и ускорение после грамотной оптимизации сайта составляет десятки раз) и создавать меньше нагрузки, чем первый.

Содержание

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

Из самых простых направлений оптимизации можно выделить следующие этапы, касающиеся практически всех популярных CMS:

  1. Отказ от плагинов и дополнительных модулей — всевозможные плагины, модули и расширения, которые, казалось бы, расширяют функциональность сайта, в очень многих случаях — его же враги в разрезе производительности. Причин тому масса. Основная — многие модули написаны энтузиастами и имеют очень низкое качество как в плане потребляемых ресурсов, так и в плане бесконфликтности с другими модулями и CMS. Поэтому прежде чем добавить новый модуль или плагин подумайте, нельзя ли реализовать тот же функционал без него? Если нельзя — после установки подробно протестируйте его под нагрузкой, посмотрите как возросло потребление ресурсов, почитайте отзывы других пользователей.
  2. Отказ от ворованных и некачественных тем оформления и плагинов — как ни странно, это тоже важный момент, так как в 8 случаях из 10 взломанный продукт, вопреки заверениям хакеров, остаётся не только опасным в плане возможных «закладок» и бэкдоров, но и гораздо более проблемным в плане потребления ресурсов. «Самописные» же компоненты и темы в подавляющем большинстве случаев очень некачественные. По возможности избегайте их. Если важно низкое потребление ресурсов, не используйте «универсальные» темы. За счёт использования различных дополнительных фреймворков такие «комбайны» работают медленнее, а ресурсов потребляют больше.
  3. Кеширование страниц скриптами — такой способ позволяет генерировать страницы сайта заранее и сохранять их в статические файлы, которые будут передаваться в разы быстрее. Стоит использовать сохранение страниц скриптами сайта в файлы везде, где возможно. Отдача заранее сформированной страницы сайта тратит гораздо меньше ресурсов и времени, чем формирование её для каждого нового посетителя «с нуля». Этот способ является одним из наиболее эффективных за счёт использования статических страниц.
  4. Оптимизация базы данных и запросов к ней. При использовании большинства CMS одним из наиболее важных моментов является оптимизация работы базы данных и запросов к ней, так как она используется для хранения практически всех данных, требуемых для корректной работы сайта и генерации страниц. Многие сайты могут работать медленно только по причине проблем с хранением данных в базе данных и неоптимизированных запросов к ней. Именно поэтому может расти показатель TTFB и увеличиваться время на обработку запросов.
  5. Обращения к сторонним источникам. Огромной проблемой в скорости загрузки страниц или их генерации может быть загрузка данных с других серверов. Причин проблем в загрузке ресурсов может быть огромная масса, но наиболее частыми и решаемыми на стороне сайта являются:
    • Удалённость сервера, к которому выполняются запросы. Чем дальше размещается целевой сервер, тем больше времени занимает обмен данными с ним. Это выражается в медленной генерации страниц скриптами из-за того, что они ожидают ответ от удалённого сервера и, как следствие, в медленной загрузке страниц в браузере, довольно часто — зависающей на некоторых этапах «отрисовки» страницы (это явно выражено при последовательной медленной загрузке частей страницы — сначала шапки, затем, после некоторого ожидания, подгрузки остального контента).
    • Недоступность целевого сервера. Если сервер, с которым должен выполняться обмен данными, недоступен, то может возникнуть огромная проблема в скорости загрузки и генерации страниц. Если проблема возникает на стороне бэкенда, то страница может быть длительное время пустой и только спустя некоторое время (чаще всего это обрыв соединения, что в рамках виртуального хостинга произойдет после 300 секунд от начала соединения, а на бизнес-хостинге спустя 3600 секунд), при этом будет казаться, что сайт не работает.
    • Для решения подобных проблем рекомендуем:
      • Использовать CDN-сервисы для нужных ресурсов, если такая возможность есть.
      • Минимизировать удалённое хранение ресурсов. Это можно сделать путём хранения нужных ресурсов в каталоге сайта, тем самым повысив стабильность и скорость сайта.
      • Использовать асинхронную загрузку ресурсов (с помощью async или defer), которые не участвуют в генерации контента или являются маловажными. К примеру, счетчики, реклама и прочее.
      • Минимизировать обращения к сторонним ресурсам со стороны бэкенда и, по возможности, устанавливать определённый таймаут для функций, которые выполняют подключения (к примеру, используя stream-set-timeout, в curl опция CURLOPT_CONNECTTIMEOUT, и другие).
  6. Уменьшение количества запросов к серверу. При загрузке сайта, в случае множества подгружаемых файлов, могут возникать проблемы в скорости его загрузки или же вовсе в виде ошибок. На хостинге существуют определённые ограничения на количество одновременных соединений, в связи с чем могут появляться ошибки. Но даже если таковых нет, то множество запросов будет влиять на скорость загрузки сайта. Каждый файл создает отдельное подключение к серверу, процесс инициации подключения и всех остальных этапов для корректной передачи данных также занимает определённое время, что и создает задержки в скорости загрузки сайта. Если сравнивать два идентичных сайта, но в одном 150 загружаемых файлов, а во втором те же данные, но уже в 50 файлах, то можно заметить значительный прирост скорости его отображения.
    Для решения этой проблемы рекомендуем:
    • Уменьшить количество загружаемых файлов на сайте путём отказа от ненужных элементов или путём подгрузки их после определённых событий (к примеру, прокрутка страницы, активация кнопок и прочее).
    • Объединить возможные файлы в один или несколько. Если использовать несколько CSS-файлов, то в некоторых случаях их можно объединить в один для экономии количества запросов и улучшения сжатия. Автоматически такие действия могут проделывать некоторые плагины или компоненты, а также функционал Pagespeed. Но крайне важно убедиться, что при использовании таких средств оптимизации сайт работает корректно.
    • Не стоит использовать асинхронную загрузку ресурсов повсеместно, так как если на сайте, где загружается 50 ресурсов, для всех файлов будет установлена асинхронная загрузка, то это породит 50 одновременных подключений при одном обращении к сайту, что может создать не только сложности в виде ошибок со стороны сервера из-за ограничений по одновременным соединениям, но также и на стороне клиента, который открыл сайт, так как все одновременные запросы также создают довольно высокую нагрузку на стороне браузера.
  7. Оптимизация ресурсов сайта. При загрузке сайта могут возникать проблемы, что сама вёрстка подгружается довольно быстро, но элементы сайта грузятся очень долго, всё подвисает и прочее. Чаще всего такая проблема наблюдается при неправильной загрузке крупных ресурсов сайта. К примеру, изображения, имеющие очень высокое разрешение, загружаются для мобильной версии сразу в высоком разрешении, или загрузка множества JS-скриптов с огромным количеством данных. Существуют различные технологии, позволяющие ускорить загрузку данных, к примеру некоторые из них:
    • Lazyload (ленивая загрузка) — суть технологии заключается в том, что при открытии страницы загружаются не все изображения, а только те, которые попадают в область видимости. Остальные изображения подргужаются браузером динамически по мере прокрутки страницы.
    • Оптимизация размера изображений. За счёт эффективного сжатия изображений можно добиться существенного прироста к скорости загрузки страниц.
    • Использование изображений в формате WebP. Такой формат получил популярность за счёт меньшего «веса» относительно других форматов без потери качества изображения.
    • Отложенная загрузка скриптов. В большинстве своем некоторые скрипты сайта не нужны до его генерации, потому их первоочередная загрузка теряет смысл. Чтобы сайт выглядел крайне быстрым, должна прогружаться первой визуальная составляющая сайта, после чего уже только весь динамический контент. За счёт такого изменения порядка загрузки можно добиться визуального ускорения загрузки сайта.
  8. И ещё один очень эффективный, но трудоёмкий и не всегда возможный путь — отказ от скриптов везде, где это возможно. Самый быстрый сайт — сайт, состоящий из набора статических файлов. Один из вариантов такой реализации — использование систем управления контентом (CMS) формирующих именно набор HTML-файлов (разумеется сама административная часть CMS при этом вполне может состоять из скриптов). Примером такой CMS может быть Movable Type.

В рамках хостинга можно произвести определенные настройки, которые в некоторой степени могут помочь в оптимизации работы сайта, но их не стоит воспринимать как универсальное средство на все случаи жизни, так как та или иная технология может не принести ожидаемой эффективности. Большая часть рекомендаций настроек на хостинге заточена на использование кеширования данных и страниц для последующей передаче клиенту без повторной обработки запроса скриптами и генерации страниц заново. Принцип кеширования данных позволяет уменьшить передаваемый объем данных между скриптами или серверами, уменьшать количество обрабатываемых сценариев и прочее, тем самым гораздо ускоряя генерацию ответа. Такой способ довольно полезен для устранения проблемы с высоким TTFB. Важно учитывать, что не для всех CMS есть возможность настроить все указанные способы оптимизации.

  1. Включение кеширования (Memcache(d)). Использование Memcache(d) в разных системах организовано по разному, в некоторых он используется исключительно для сохранения данных передаваемых из баз данных (что позволяет сэкономить на времени передачи запроса в БД, поиска нужных данных и передаче запроса обратно), в некоторых он используется для кеширования конкретных страниц сайта (что более эффективно в плане скорости, но менее удобно в плане генерации динамического контента). Стоит обратить внимание, что поведение кеширования данных в памяти Memcache(d) указывается непосредственно в скриптах сайта.
  2. Настройка кеширования Opcache. Использование Opcache позволяет сэкономить множество времени за счет сохранения скомпилированного байт-кода скриптов. Такой способ крайне полезен в случае, если используется множество неизменных скриптов которые и могут занимать большую часть времени. В отличии от Memcache(d) – Opcache может быть просто подключен к сайту без потребности дополнительных настроек.
  3. Использование хранилища данных Redis – по своему подобию этот способ схож с использованием Memcahce(d) за счет того, что они оба сохраняют данные в оперативную память и после позволяют использовать для более быстрого доступа, логика поведения сохранения данных и прочего также схожа.
  4. Использование возможностей оптимизации PageSpeed. Модуль оптимизации PageSpeed установлен на хостинге по умолчанию и все его возможности доступны для любого сайта. В некоторой степени большинство его настроек могут быть опасными для работы сайта за счет того, что изменяются имена подгружаемых скриптов, принцип их загрузки и прочее, в зависимости от включенных параметров, но как один из способов оптимизации – его можно рассматривать для ускорения загрузки содержимого. Важно понимать, что для уменьшения TTFB (времени ответа от сервера) данный способ вовсе не подойдет, так как он направлен на улучшение генерации страниц в браузере клиента и загрузку ресурсов сайта.
  5. Кеширование статического содержимого. Крайне полезная основополагающая возможность для ускорения загрузки веб-страниц это кеширование непосредственно самих страниц и подключенных в них ресурсов. Важно обратить внимание на то, что такое кеширование производится не на стороне сервера, а на стороне клиента и потому первая загрузка сайта будет неизменна, но последующие переходы по страницам или входы на сайт могут быть гораздо быстрее и вовсе не заметны, при правильной организации сайта и кеширования.

Как можно ускорить работу моего сайта?

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

Можно ли ускорить работу сайта путём смены тарифа?

Тарифные планы виртуального хостинга работают на одних и тех же серверах, поэтому смена тарифа вряд ли поможет.

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