Как ускорить сайт на Битрикс при помощи хостинга (сначала свой, а заодно и сотни других)

Алексей Шкарупа
Знаете ли Вы, любители «всякого интересного», что если: Ваш сайт находится на хостинге TimeWeb (из списка «Рекомендованных хостингов») и если Вы включаете CDN в попытке ускорить сайт на Битрикс, то вы сделаете его только медленнее. По крайней мере так будет еще минимум 1 неделю.

По крайней мере так будет еще минимум 1 неделю.

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

Большинство мер, помогающих сделать сайт быстрее, которые делают все (или почти)

  • Везде где нужен кеш — он включен;
  • Сайт многократно прогонялся по монитору производительности;
  • По совету монитора производительности были созданы пара индексов на базе данных (а еще пара была неэффективной и создана не была);
  • Включено объединение CSS/JS;
  • Включен CDN.
Поковырявшись в отладчике Google Chrome, нашел пару CSS и JS которые не объединялись с остальными файлами. Эта проблема была исправлена быстро.

Напоследок решил посмотреть что выдаст анализатор скорости загрузки сайта sitespeed.ru. А выдал он довольно интересные факты, на которые я как-то не обратил внимание находясь в отладчике Google Chrome.


Время загрузки Объем загружаемых данных
Первый заход 30.081s 4 963 kb
Повторный заход 22.657s 3 644 kb

Замечу, что при нашей скорости интернета загрузка страницы занимала не больше 3х секунд, но не у всех такой быстрый интернет.

Проблему с загружаемыми данными при первом заходе победить несложно — больше всего занимала графика в слайдере. Сжали картинки посильнее и получили выигрыш почти в 2 мегабайта. Дополнительно создали сжатые (.gz) копии сторонних шрифтов.

А вот вторая проблема большого объема скачиваемых при повторном заходе данных — это уже совсем другое. Действительно, если посмотреть в Google Chrome — при повторном открытии картинки с CDN браузер не кешировал ее, а каждый раз скачивал заново.

Ошибка в кэше браузера

При выключенном CDN — все кешировалось.

Ускорение сайта через настройку кэша на хостинге

Как может помочь хостинг

Далее следуют почти 2 недели переписок с поддержкой 1С-Битрикс и TimeWeb. Как они играли мной в пин-понг пожалуй опущу. В результате всех терок выяснилось следующее:

  1. CDN при забирании статики с вашего сайта запоминает отдаваемые сервером заголовки ответов и при отдаче файла с обратно заголовки в точности повторяет;
  2. сервер ТаймВеба отдавал для картинок 2 неверных заголовка;
  3. браузер при получении файлов с CDN почему-то фиксировал эти заголовки и т. к. они были неправильные — не кешировал файлы.
К проблемным заголовкам относились вот эти:
  • Last-Modified: Thu, 20 Jun 2013 09:51:24 GMT;
  • Last-Modified: 1371725085 (дубль с неправильным синтаксисом).
После исправления этих заголовков (ТаймВеб убрал неправильный) появился вот такой:
  • Cache-Control: no-cache.
Он тоже был удален поддержкой хостинга.

После этого мы обновили дату изменения всех файлов в папке /upload/ и /bitrix/templates/наш_шаблон_сайта/ и о чудо! Картинки с CDN стали кешироваться.

Описанные меры (сжатие картинок и кеш статики браузером при получении с CDN) позволило прийти к следующим результатам (по данным все того же sitespeed.ru):

Время загрузки Объем загружаемых данных
Первый заход 13.998s 2 267 kb
Повторный заход 8.97s 1 362 kb
Внимательный читатель спросит меня, а как же к названию поста относится все что я написал? А очень просто:
  1. Поддержка TimeWeb пообещала удалить неверный заголовок Last-Modified на всех своих серверах.
    «Мы внесли сейчас изменения и подождем неделю, если проблем не возникнет, изменение внесем полностью.»— TimeWeb.
  2. Поддержка TimeWeb пообещала удалить неверный заголовок Last-Modified на всех своих серверах.
    «Сейчас эта конфигурация только для вашего сайта. Но мы проанализируем текущую конфигурацию nginx на всех серверах на счет подобных изменений заголовков.» — TimeWeb.
Получается что все сайты, которые лежат на TimeWeb и включили функцию CDN скоро получат такую работу системы, какой она должна быть — с кешированием картинок.

Для тех, кто не хочет ждать, алгоритм действий следующий:
  1. Просим поддержку TimeWeb удалить Last-Modified.
  2. Когда это сделано, проверяем не появился ли заголовок Cache-Control: no-cache и просим удалить его если появился.
  3. Обновляем дату модификации всех статических файлов на сайте (выполняем в консоли команду find. -exec touch {} \; находясь в папках /upload/ и папке шаблона сайта).
Как мы в очередной раз убедились у TimeWeb адекватная служба поддержки, которая признает ошибки и исправляет их (а ошибки делают все люди). Поэтому не стесняйтесь к ним обращаться.

Ну и напоследок я провел тест с выключенным CDN.

Время загрузки Объем загружаемых данных
Первый заход 13.757s 2 174 kb
Повторный заход 2.585s 37 kb

Здесь меня ждал неожиданный результат — время загрузки и загруженные данные при повторном открытии уменьшились!!! Как так?

Объяснение этому чуду было следующее: на CDN не отправляются сжатые (.gz) копии стилей/скриптов/шрифтов. А жмутся через gzip они очень хорошо.

Какой вывод мы сделали

Следить за размером ваших страниц и файлов нужно — само все хорошо не будет.

К чему пришли:

  • починили кеширование картинок с CDN на TimeWeb;
  • отказались от использования CDN до тех пор пока туда не будут отправляться сжатые копии статических файлов (На основе информации из данного обращения была создана заявка в отдел разработок. Номер обращения: 40808.).

Оцените статью
05.07.2013
Понравилась статья?
Поделитесь ссылкой с друзьями и коллегами!

Статьи по теме

07.03.2023
Дорожная карта внедрения платформы автоматизации оптовых продаж Про построение эффективных отделов продаж написано много крутых статей. Одни эксперты готовы сделать это за 10 шагов, другие предлагают многоэтапную эволюц...
16.02.2023
Как начать B2B-продажи онлайн - особенности и методы оптовой торговли После пандемии рынок e-commerce начал стремительно расти. Мы говорим не только о B2C, но и о B2B-сегменте. Многие крупные компании уже разглядели потенциал...
10.01.2023
Как битриксоиды в React уходили Приятно познакомиться, мы битриксоиды. Да-да, те самые которые: вообще не модные, пишут НЕ на Laravel и Symfony, ...
10.01.2023
Товарная дистрибуция 30 лет спустя. Как программисты изменили продажи крупного бизнеса «Я думал, что буду строить банк, а на самом деле построил ИТ-компанию» Олег Тиньков, безработный Есть такая штука — товарная дистри...
10.01.2023
Как мы решили выпускать собственный продукт через CustDev и у нас получилось Собственный продукт как фиксация компетенции  В развитии крупных компаний-аутсорсеров наступает момент, когда они уже обросли опытом и компетенциями ...
19.12.2022
Учимся настраивать свою почту, не наступая на чужие грабли: Postfix + msmtp + сайт Привет, меня зовут Никита, я backend-разработчик в компании ИНТЕРВОЛГА. Работаю в компании уже 3 года, и за этот срок достаточно часто мне приходилось вози...

Мы работаем по одному из двух форматов:

  • аренда команды (от 2 человек, не менее 3 месяцев);
  • итерации с фиксированной ценой (1-3 месяца длительностью).

ИНТЕРВОЛГА предоставляет:

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

Для доработок и развития мы предлагаем формат 100 часов в месяц. Что можно сделать за это время:

  • новые нетиповые страницы или раздел;
  • 2 отчета с индивидуальными настройками;
  • 3-5 веб-сервисов интеграции;
  • замудренный калькулятор и т.п.

Поддержка «чтобы все работало как часы» стоит 45 тысяч рублей в месяц и описана тут.

Хочешь получать лучшие статьи от INTERVOLGA раз в месяц?
Подпишись на рассылку — спамить не будем