Как увеличить производительность сайта на 1С-Битрикс. Ускорение битрикса
Как ускорить работу сайта на Битрикс в 10 раз / Студия Лайки
Битрикс настолько сложная и большая система, что имеет свои особенности в работе практически во всех аспектах разработки и поддержки.
У каждого сайта есть свои требования к настройкам платформы, конфигурации и хостинга битрикс.
Из-за медленной загрузки сайта посетители могут с легкостью перейти на сайт конкурента, который загружается в разы быстрее.
Чтобы не происходило таких ситуаций, рассмотрим проблемы и решения, которые помогут ускорить работу сайта.
1. Проблемы с кэшированием
Кэширование каталога заключается в том, что так называемый «управляемый кэш» битрикса живет ровно до ближайшей записи. А после этого - стирается. Некоторые сайты работают достаточно активно, а изменения происходят почти непрерывно. Создается впечатление, что на сайте кэш отсутствует.
Варианты решения
Обновление кэша
Кэш нужно сбрасывать. Обновление сайта происходит довольно часто. И это отлично, так как при обновлении формируются свежие веб-ресурсы (URL). В данном случае они станут благополучно закэшированы у пользователей и провайдеров, и практически никаких дополнительных действий при обновлении веб-сайта не понадобится.
В случае если при обновлении веб-сайта изменяются уже разработанные файлы, появляется проблема кэширования: в коде сайта указаны ссылки на устаревшие ресурсы, а содержимое их видоизменилось. Пользователи обязаны получить свежее оглавление сайта по устаревшим ссылкам.
Чтобы преодолеть данную трудность — получения свежего содержания веб-ресурса по устаревшей ссылке — был введен механизм условного кэширования. В данном случае, браузер пользователя или же поисковый робот имеет возможность выслать особый HTTP-заголовок с датой последнего обновления файла или же хэшем последнего обновления. Сервер ответит, собственно что файл не поменялся (не пересылая содержимое файла), или же вышлет свежий файл (если файл был изменен впоследствии пришедшей даты или же хэш файла не совпадает с присланным).
Вроде все отлично, и устройство решает описанную делему обновления давних веб-ресурсов. Но данный механизм, к огорчению, довольно ресурсоемкий: он настоятельно просит запроса на сервер и любой запрос занимает некоторое количество (десятков) миллисекунд. В передовых критериях, когда для отражения странички потребуется сотни веб-ресурсов применения лишь только условного кэширования приводит к задержкам в сотни миллисекунд или же в том числе и секунд при отображении каждой интернет-страницы. Это неприемлемо.
Как раз по причине малой производительности условного кэширования более эффективной практикой считается строгий сброс кэша на всех промежуточных узлах сети, охватывая кэш браузера у конечного пользователя. Достигается это несколькими другими способами:
Смена физического имени файла. К примеру, main.css именуется main2015.css. В данном случае файл будет перезапрошен: для всех агентов это будет свежий файл. Стоит обозначить, что на сервере может быть настроен внутренний редирект: особая пометка в заглавии файла имеет возможность игнорироваться, и сервер станет выдавать иной физический файл. К примеру, при запросе main.v2015.css сервер вышлет содержимое файла main.css. В соответствии с этим, изменяя метку в шаблонах веб-сайта возможно достичь гарантированного сброса кэша у всех пользователей.
Изменение GET-строки после имени файла. К примеру, main.css вызвать как main.css. В данном случае, URL веб-ресурса поменяется и (почти) все агенты станут обязаны перезапросить файл. Но бывают исключения (для прокси-серверов), которые игнорируют GET-строку для статических файлов. Но для сайта маленькой или же средней посещаемости это не имеет большого значения.
2. Правильность выборки
Основная идея оптимизации в плане количества информации и кэширования, это выборка и сохранение в кэш только нужных данных, а не всех.
Выборка всех данных может потребовать большего времени и также заметно увеличить размер кэша.
Пример повышения производительности
1. Для получения элементов одного инфоблока нужно получить дополнительные свойства из другого, путем изменения шаблона или result modifier.
В таком случае это делается в цикле, но это не правильно. Такой цикл снижает производительность, созданием множеством запросов.
Правильный вариант - использовать один единственный запрос, в котором получаются данные для требуемых элементов.
2. Изменение основного API-вызова. Данные можно получить сразу.
3. Использование оптимального кода, который позволит сократить количество запросов.
4. Оптимизация размера кэша. Следует произвести анализ кэшируемых данных.
5. Кэширование только нужных данных. Ограничение результата работы компонента $arResult и установить ключи в SetResultCacheKeys.
Всегда минимизируйте запросы. Например, если в цикле идет запрос к элементу ИБ, то уже необходимо задуматься над минимизацией. Да, это займет больше времени, но вам скажут спасибо клиенты.
3. Композитный сайт
Технология «композитный сайт» – это усовершенствованная версия технологии html-кэширования веб-сайта. Не секрет, что высокая скорость загрузки способствует лучшему ранжированию веб-ресурса поисковыми системами.
Определение сайт, означает место, в котором располагается информация. Данная информация, делится на слои: HTML, изображения, CSS, Javaskript. HTML считается разметкой веб-сайта. Из полученных данных формируется образ страницы. HTML содержит данные о том, где какой элемент должен быть расположен. Параллельно c загрузкой HTML, с сервера загружаются и оставшиеся слои веб-сайта: CSS, Javaskript, изображения. Все это занимает конкретное время.
Данные композитного веб-сайта, в битриксе, именуются "статистическими данными", хранятся на сервере уже сформированными и для всех одинаковыми. То есть браузер загрузит страницу быстрее целиком из кэша, чем слоями. Таким образом, этап загрузки HTML сводится к минимуму.
Единственные данные которые могут различаться, это данные пользователя или те, которые быстро обновляются, для того чтобы оставлять их в кэше. Поэтому такие данные загружаются в фоновом режиме, при отображении HTML в браузере, и называются "динамическими данными".
Данная технология позволяет сайту буквально "парить", но только если не полениться настроить, так как это довольно просто.
Важно - эта технология не заменяет нормального кэширования компонентов. Работа будет в том случае, если кэш уже корректно настроено.
4. Правильная конфигурация сервера
1. Виртуальная машина, виртуальный хостинг, VPS/VDS
Виртуальный хостинг - это сервер, который разделен на аккаунты, делящих одни и те же IP-адреса и ресурсы.
VDS (virtual dedicated server) и VPS (virtual private server) - означают одно и то же.
VPS/VDS (виртуальный выделенный сервер) - это физический сервер, который поделен на несколько виртуальных серверов, имеющих свою ОС и может, независимо от других, быть перезагружен.
Таким образом, VPS/VDS лучше, чем виртуальный хостинг. Но в то же время имеет свои минусы и плюсы.
Минусы, например, заключаются в том, что настройки относительно сложные и цена в среднем выше, чем у виртуального хостинга. Однако, экономия на этом, не стоит того.
Плюсы же заключаются в большей стабильности, контроль над всеми процессами на VPS, настройкой ОС под свои нужды, root доступ к серверу.
2. Версии ПО на сервере
Битрикс разработан на языке программирования PHP и эффективно работает на любой платформе. База данных, которая используется на битрикс, называется MySQL.
Для ускорения времени генерации страницы, рекомендуется использование PHP версии 5.6 и выше (рекомендуемая версия PHP 7.1), и MySQL версии 5.0 и выше.
3. Оптимизатор PHP-кода
Для оптимизации PHP-кода, рекомендуется использовать расширение opcache (входит в комплект поставки PHP 5.5.0).
Данное расширение позволяет сохранять в памяти прекомпилированный байт-код скрипта. Каждый скрипт PHP преобразует понятный человеку код в код, который был бы ближе к машинному.
OpCache, делает это лишь только один раз — во время первого исполнения конкретного файла PHP. После этого прекомпилированный скрипт сохраняется в памяти, что должно привести к увеличению производительности.
4. Отладчик XDebug
XDebug - это средство профилирования и отладки PHP скриптов.
Данное расширение используется на серверах разработки. Позволяет выполнять профилировку приложения и находить те части, которые замедляют его работу.
В целом, расширение нужно, в первую очередь, для экономии времени программистов, так как позволяет быстро локализовать ошибку в коде.
Конечно, нет никакой необходимости использовать Xdebug, если ваш текущий инструментарий может обеспечить всё что он предоставляет, или если вам не нужны его возможности.
Если все таки XDebug используется, то не забывайте его выключать после запуска нового сайта, так как время выполнения кода замедляется.
5. Таблицы в MySQL
Таблицы составляют основу структуры базы данных MySQL. Таблицы содержат введенную в базу данных информацию и могут быть созданы для любых целей хранения данных.
MySQL поддерживает два различных типа таблиц: транзакционные и без поддержки транзакций. Для типовых задач используются транзакционные таблицы (InnoDB).
InnoDB — одна из выбираемых подсистем низкого уровня в СУБД MySQL, входит во все стандартные сборки для различных операционных систем. Основным отличием InnoDB от других подсистем низкого уровня MySQL является наличие механизма транзакций и внешних ключей.
В отличие от таблиц MyISAM, где для каждой таблицы создается один файл данных, данные InnoDB в настройках по умолчанию хранятся в больших совместно используемых файлах, что позволяет использовать постраничный кэш страниц базы данных. Формат данных InnoDB обеспечивает надежное хранение данных за счет транзакционности и блокировки данных на уровне строки.
InnoDB должен быть корректно настроен.
6. Корректность настройки InnoDB
Если использовать InnoDB таблицы, стоит установить максимально возможные значения для системы. Речь идет о размере buffer pool - внутреннем кэше MySQL. Буфер InnoDB кэширует и данные и индексы. Если размер данных не большой, а оперативной памяти предостаточно, то значение ключа стоит устанавливать в 70%...80% всей доступной памяти (с помощью этого кэшируются все данные).
7. Мониторинг работы сервера, проверка использования
Бывают моменты, что сайт перестает отвечать. Причиной тому является достижение предела дисковой подсистемы сервера.
Чтобы избежать данную проблему и выявить причину "торможения", нужен мониторинг работы сервера: использование дисковой подсистемы, пропускная способность сетевого интерфейса и CPU.
Как ускорить сайт на Битрикс (php7 и другое)
Введите Ваш емайл и адрес сайта: мы проведем бесплатный мини-аудит вашего сайта и предложим варианты его ускорения: |
Только в течение этой недели мы можем предложить БЕСПЛАТНЫЙ мини-аудит вашего сайта и подготовку рекомендаций для увеличения скорости загрузки.
Для чего ускорять сайт на Битрикс?
Вам кажется, что ваш сайт работает медленно? Что значит "медленно", как это определить и на что это влияет?Есть разные мнения относительно того, какой сайт считать медленным но чаще всего пограничное время загрузки страницы находится в пределах 1,5 - 2 сек. Если время больше указанного - сайт работает медленно и это влечет за собой проблемы (об этом - ниже).
Как определить, что сайт работает медленно? Если вам кажется, что страницы грузятся долго или на это жалуются клиенты, то, скорее всего, проблема существует. Проверить это и получить конкретные цифры можно разными инструментами. Если сайт на Битриксе, то проще всего перейти в админке по адресу /bitrix/admin/site_speed.php и увидеть подобную картинку:
Если ваш сайт - в желтой зоне или правее, то проблема существует.
На что влияет скорость сайта? На два основных момента:
- на ранжирование поисковыми системами
- на конверсию
Как мы ускоряем сайты на Битрикс?
Скорость сайта зависит от следующих факторов:- скорость и оптимальность настройки хостинга. В частности, включение php7
- качество настройки Битрикса
- качество разработки
Если требуется развернутый аудит, то мы выделяем наиболее нагруженные страницы и выполняем профилирование: определение наиболее нагруженных участков кода:
Профилирование сайта (xhprof) По результатам профилирования принимается решение о доработке сайта для снижения нагрузки и увеличения скорости.Почему именно мы?
- опыт работы - более 7-и лет
- Золотой сертифицированный партнер 1С-Битрикс
- сертифицированные разработчики
- доверие крупных клиентов
- все компетенции
Ускоряем Битрикс: кейсы и отзывы
Сайт: https://www.digacompany.ru/Скорость до оптимизации: 2,3 секСкорость после оптимизации: 0,88 секУскорение: 261%"...когда сайт начал тормозить, я обратился в компанию ITserW, с которой мы давно сотрудничаем. В первый же день нам провели аудит и выдали варианты решения, в течение нескольких дней проблема была решена полностью: мы ожидали увеличения скорости на 70%, а получилось - почти в 3 раза!..."Денис Герасимов, директор
Сайт: http://web-snab.ruСкорость до оптимизации: 2,5+ секСкорость после оптимизации: 1,7 секУскорение: 147%"...мы думали, что проблемы с нагрузкой и скоростью у нас нет, но оказалось, что это не так. Компания ITserW развернула тестовую версию нашего сайта и показала, какие параметры по скорости загрузки можно достичь. В течение нескольких задача была решена. В дальнейшем попробуем увеличить скорость еще..."
Николай, администратор
Заказать ускорение сайта:
Заполните форму заявки и мы проведем бесплатный мини-аудит вашего сайта и предложим варианты увеличения его скорости.ускорить сайт
ускорить сайт
ускорить сайт
itserw.ru
Ускорение сайта на Битрикс
Дата создания: 10.07.2015
Битрикс довольно сложная и большая система, очень большая, настолько большая, что у неё есть свои тонкости работы практически во всех аспектах разработки и поддержки. В данной статье я расскажу о специфичных моментах в ускорении работы сайта на этой CMS, но, конечно же, приёмы из этой статьи остаются более чем актуальными.
Настройка системы
В админпанели CMS есть много полезных кнопок и настроек, распишу по пунктам.
Кеширование
Включите кеширование! ("Автокешировние", /bitrix/admin/cache.php?lang=ru). Это, наверное, самое главное, что можно сделать, так как запросы к БД - одна из самых медленных операций в вебе, а встроенный механизм кеширования снижает их количество в теории до нуля, в самом плохом случае он всё равно уменьшит их количество на пару порядков.
На последних версиях Битрикса нет смысла настраивать работу с html-кешированием (третья вкладка), так как появилась технология "Композитный сайт", который заменяет данный механизм. Подробно об его настройке будет написано позже.
Оптимизация css
В настройках главного модуля есть опции, которые сильно помогут вам с размером страницы. Названия говорят сами за себя:
Для правильной работы этого механизма вы должны подключать стили шаблона через SetAdditionalCSS, а скрипты через AddHeadScript, это позволит переносить скрипты вниз страницы. "Подключать минифицированные версии CSS и JS файлов" означает, что если у вас рядом с файлом лежит файл с тем же именем и расширением, но перед расширением стоит ".min", то Битрикс подключит его, удобно.
CDN
О роли CDN уже было упомянуто в этом разделе в статье "Общие принципы ускорения сайтов", здесь стоит отметить лишь то, что в Битриксе есть успешная кнопка "Включить ускорение сайта" ("Ускорение сайта CDN", /bitrix/admin/bitrixcloud_cdn.php?lang=ru). Учтите, что она работает только при активной лицензии.
Статистика
Я бы рекомендовал отключить сбор статистики (в модуле "Веб-Аналитика" нужно отключить все сохранения). Наверняка, вы подключили хотя бы метрику от Яндекса, так что, как минимум, нет смысла дублировать этот функционал (к тому же как-то странно она работает), тем более на своём сервере.
Обновления
Обновиться - всегда хорошая идея, да и глупо не делать этого в столь дорогом продукте. Новые обновления улучшают работу с кешем, уменьшают количества запросов, оптимизируют код и делают много чего ещё хорошего. Сделайте бекап и обновитесь.
Панель производительности
В Битриксе есть страница настроек "Панель производительности" (/bitrix/admin/perfmon_panel.php?lang=ru), она сильно поможет вам в оптимизации сайта, проведёт множество тестов, выявит ошибки и недочёты, подскажет пути исправления. Просто выполняйте её рекомендации и точно заметите разницу.
Работа с компонентами
В 1С-Битрикс практически вся информация выводится через компоненты. В рамках данной статьи я не буду объяснять что это такое и как с ними работать, но расскажу как нормализовать их работу в целях быстродействия сайта.
Используйте подходящие компоненты
Не очень очевидный шаг. В большинстве случаев вы используете при работе только стандартные компоненты, меняя лишь их шаблоны вывода, и это правильно. Для вывода элементов инфоблока вы используете news.list, а для вывода товаров catalog.section.
В основном компоненты не взаимозаменяемые, но есть, к примеру, пара компонентов sale.basket.basket.line и sale.basket.basket.small, которые очень часто оба подходят к шаблону сайта. Необходимо понимать, что sale.basket.basket.line совершает меньше запросов к бд, поэтому очевидно, что выбрать надо его. Обращайте на это внимание при выборе компонентов.
Используйте стандартные компоненты
Иногда вы можете подумать, что работу какого-то компонента можно ускорить, создав свой со своим component.php, и иногда даже будете правы, но я бы рекомендовал использовать дефолтные хотя бы только из-за интеграции с ядром.
Здесь есть несколько причин.
- Во-первых, механизм кеширования в Битриксе довольно скользкая тема и нет ничего более заточенного под работу с ним, чем родные компоненты. Да и если нет, то новые обновления когда-нибудь решат этот вопрос.
- Во-вторых, обновления. Со временем они улучшают всё.
Подключение компонентов
Очень редко, если, вообще, когда-либо ваш шаблон будет меняться в зависимости от группы пользователя, поэтому у всех компонентов необходимо убрать параметр "Учитывать права доступа" (выставить "CACHE_GROUPS" в "N"). За счёт этого кеш будет создаться лишь однажды и показываться всем группам пользователей, а это сэкономит нам количество обращений к БД и место на сервере.
Также там, где у вас компоненты подключены с каким-то условием по фильтру (или фильтрации даже и близко нет), стоит включить "Кешировать при установленном фильтре" ("CACHE_FILTER" => "Y"), иначе на каждом хите будут выполняться лишние запросы.
Если не надо выводить количество товаров в списке категорий, отключите подсчёт элементов в catalog.section.list ("Показывать количество элементов в разделе", "COUNT_ELEMENTS"). Это сэкономит сотни запросов.
Стили и скрипты шаблона компонента
В Битриксе шаблон компонента может подключать свои собственные стили и js-скрипты, поэтому хорошим шагом будет вынести js и css из шаблона сайта в компоненты там где это возможно, тем самым подключая на странице только нужный код, что уменьшает размер страницы. Да и в плане поддержки это правильное решение.
Несказанные очевидности из прошлой статьи
Некоторые моменты не были рассмотрены в данной статье, так как они вытекают из предыдущей и Битрикс не привнёс в них свою специфику.
Как и везде вам также надо самим следить за своим кодом. Старайтесь оптимизировать тот код, который вы пишите в result_modifier.php и component_epilog.php. Если вы работайте со своими компонентами и модулями, добавляете код в php_interface, и они тормозят сайт, то это совсем не по вине Битрикса. То же самое касается css и js на страницах.
Обязательно сжимайте картинки. Для небольшого упрощения этой задачи зайдите в настройки инфоблока и настройте создание картинки анонса нужного размера из детальной картинки с уменьшением размера. Это к тому же ещё и упростит жизнь контент-менеджера.
Заключение
Держите эти советы в голове при разработке сайта на 1С-Битрикс, они не самые очевидные, но сильно помогут вам в вашем деле.
Похожие статьи
en.aristov-vasiliy.ru
Как увеличить скорость загрузки сайта на «Битрикс» - пошаговая инструкция и тест
Как оценить, что ваш сайт работает достаточно быстро и не теряет посетителей из поисковых систем, лояльность пользователей и конверсию из-за медленной загрузки страниц? Какие шаги помогут увеличить скорость загрузки сайта на «Битрикс», и сколько времени это займет? Читайте в пошаговой инструкции, составленной нашим техническим специалистом.
Медленную скорость загрузки сайта можно сравнить с очередями в реальном магазине. Необходимость ждать вызывает раздражение и недовольство — никто не хочет зря терять свое время. В условиях, когда переключиться на сайт конкурента можно буквально за секунду, привлечь и удержать посетителей могут только очень «быстрые» сайты.
Итак, давайте примем за данность три факта:
- Скорость загрузки страниц сайта влияет на его конверсию и лояльность пользователей.
- «Быстрые» сайты удобны для просмотра и совершения покупок с мобильных устройств — доля мобильного трафика растет с каждым днем.
- Скорость загрузки страниц сайта влияет на его ранжирование в поисковых системах, то есть на его видимость относительно конкурентов.
Из-за промедления загрузки сайта в пару секунд вы можете потерять «горячего» покупателя навсегда.
График 1. Скорость отрисовки страниц по данным Яндекс.Метрика до и после оптимизации сайта
График 2. Динамика числа запросов, по которым сайт вышел в ТОП поисковой системы GOOGLE в Московском регионе. Всего было проанализировано 85 запросов. После увеличения скорости загрузки страниц число запросов в рамках ТОП-10 осталось неизменным. Однако было замечено явное улучшение позиций по запросам в рамках ТОП-3
Рассуждения о том, насколько сильно влияет, оставим для отдельной статьи с кейсами и результатами экспериментов. Сегодня о том, как правильно измерять скорость загрузки, и какие шаги помогут ускорить сайт на «Битрикс».
Как измерить скорость сайта?
Чтобы объективно оценить скорость загрузки сайта — выполнить разовую проверку или постоянно отслеживать изменения, вы можете использовать следующие инструменты:
1. Сервис Pingdom (pingdom.com).
Работает в трех режимах:
- Для разовой экспресс-проверки удобно использовать инструмент https://tools.pingdom.com/. С его помощью вы можете узнать точную скорость загрузки сайта в секундах, оценку сайта в баллах по PageSpeed Insights, вес страницы, а также посмотреть развернутый отчет по техническим параметрам.
- Page Speed Reports — синтетические тесты скорости загрузки. Получаем общую информацию на основе регулярных тестов скорости загрузки главной страницы сайта, включая время «подтягивания» элементов со всех внешних источников, с информацией о размере и типе загружаемого контента.
- Real User Monitoring Reports (RUM) — агрегированная информация о скорости загрузки всех страниц сайта у реальных пользователей. Для использования требуется установка на сайт JavaScript кода. Вы получаете подробный отчет о скорости загрузки страниц с сегментацией по регионам пользователей, браузерам, устройствам (mobile/desktop/tablet), а также информацию о распределении времени по этапам загрузки — сетевые запросы, ответ сервера, загрузка статики.
Если сайт содержит много «тяжелых» картинок, то синтетические тесты могут завышать скорость загрузки, но RUM от Pingdom покажет реальное время ожидания, с которым сталкиваются посетители сайта.
Рисунок 1. Полный отчет RUM от сервиса Pingdom
2. Проверка от Google PageSpeed Insights .
Сервис позволяет определить факторы, влияющие на скорость загрузки страниц всего сайта, — отдельно для мобильной и десктопной версии:
- сжатие изображений,
- объем JS кода,
- время ответа сервера и другие.
В результате проверки сервис предложит рекомендации по внедрению тех или иных изменений.
Чаще всего предлагаются следующие направления оптимизации:
- используйте кеширование,
- избавьтесь от лишнего кода или сожмите его,
- заставьте сервер отвечать быстрее,
- уменьшите «вес» изображений.
По итогам проверки выставляется балл от 0 до 100. Этот показатель среди прочих равных учитывается при ранжировании сайта в поисковой выдаче Google.
3. Для сайтов на «Битрикс» — сервис «Скорость сайта».
Встроенный мониторинг производительности можно использовать как средство «разбора полетов» и для выявления проблемных участков на сайте — сервис помогает локализовать «тормозящий» компонент. Применяется для разового анализа, не подходит для регулярного мониторинга.
Нормальные показатели
Как понять, не теряете ли вы посетителей сайта по причине медленной загрузки сайта?
Сравните полученную в результате тестов скорость загрузки сайта с целевыми показателями:
Сервис | Нормальный показатель загрузки страницы для небольших сайтов | Нормальный показатель загрузки страницы для сложных интернет-магазинов |
Pingdom RUM | 1,5-3 с | 3-4 с |
PageSpeed Insights | от 80 баллов | |
Сервис «Скорость сайта» в Битрикс | до 1 с | до 2 с |
Таблица 1. Целевые показатели скорости загрузки сайта по разным сервисам
Если значения будут ощутимо отличаться в большую сторону — это проблема. Значит ваш сайт необходимо оптимизировать с точки зрения скорости его загрузки.
Детальный аудит
Когда проблема медленной загрузки сайта определена, нужно выполнить детальный аудит.
Стадия технического аудита обязательна для проектов со сложной структурой каталога и большим количеством фильтров, где есть кастомный функционал (технические доработки). Очень часто такие сайты имеют плохое техническое наследие и следование стандартным инструкциям не дает ожидаемого результата.
В этом случае лучше довериться техническому специалисту, у которого есть опыт оптимизации различных сайтов.
Скорость загрузки сайта складывается из двух показателей:
- скорость генерации страниц сервером;
- скорость загрузки и отрисовки страниц и всего контента на них браузером.
Например, у сайта может быть достаточно «лёгкий» дизайн и мало картинок, но очень сложные и неоптимальные выборки товаров из каталога на стороне сервера. В этом случае непосредственное получение контента страниц и их отрисовка браузером будет проходить быстро, но промежуток времени от запроса до момента, когда сервер начнет отдавать этот контент, будет большим. Может быть и наоборот: сервер генерирует страницы очень быстро, но на них слишком много тяжелых картинок. Это необходимо учитывать при оптимизации.
Чтобы сделать объективные выводы, специалист в своей работе опирается на данные, полученные с помощью различных сервисов.
Сначала специалист проверяет сайт с помощью сервиса PageSpeed Insights.
Полученный результат служит отправной точкой для анализа конкретных факторов, влияющих на скорость загрузки сайта:
- скорость генерации страниц сервером,
- структура html-кода,
- размер изображений,
- размер css файлов и т.д.
По итогам детального аудита специалист предложит вам конкретные шаги по оптимизации сайта.
«Детальный аудит позволяет обнаружить все недочеты, оценить, сколько времени потребуется на устранение каждого из них, и какие шаги дадут максимальный эффект. Это поможет расставить приоритеты в процессе технических доработок и даже при ограниченном бюджете достичь значительного улучшения скорости загрузки сайта.»
Станислав Мозгель
Директор по развитию, руководитель технического отдела
Кроме того, специалист определит, насколько стратегически верно дорабатывать существующий сайт. В некоторых случаях лучшим решением будет создать новый сайт — это актуально, если стоимость технических доработок составляет хотя бы половину стоимости разработки нового сайта.»
Для понимания процедуры технического аудита, вы можете изучить внутренние документы нашей компании:
Как оптимизировать скорость загрузки сайта?
Работы по оптимизации скорости загрузки сайта могут потребовать от 0,5 ч до N часов работы технического специалиста. Сложность, а значит и продолжительность работ зависит от состояния сайта и причин низкой скорости загрузки: в некоторых случаях достаточно просто уменьшить вес изображений, для других сайтов необходимо перерабатывать код.
Разберем варианты реализации самых популярных рекомендаций в контексте сайтов на «Битрикс».
«Битрикс» — одна из самых популярных платформ для создания сайтов. Низкий порог входа для разработчиков приводит к частому внедрению некачественных технических решений, которые снижают скорость загрузки страниц сайта.
Схема 1. Шаги по оптимизации скорости загрузки сайта и среднее время, которое затрачивает технический специалист на их реализацию
1. Оптимизировать изображения — 0,5-4 +1-6 часов работы.
Правильный подход — настраивать корректно ресайз изображений при выводе, и размещать в контенте заранее подготовленные сжатые изображения.
Картинки элементов/разделов инфоблоков и других сущностей базы данных (например, изображения товаров в каталоге интернет-магазина) можно сжать при генерации шаблонов компонентов. В зависимости от количества шаблонов это может занять 0,5-4 часа работы программиста.
Изображения в статичном контенте (например фотография, вставленная в статью через визуальный редактор) и элементы дизайна сайта необходимо сжимать вручную с помощью сторонних сервисов. Обычно на это уходит 1-6 часов.
2. Сократить время ответа сервера — 10-16 часов.
Именно в этом блоке работ исправляются ошибки, допущенные при планировании структуры данных и в процессе программирования.
Чаще всего такое наведение порядка в коде проекта даёт самое заметное улучшение скорости работы сайта.
Этот блок прорабатывают в два этапа:
- Технический аудит, составление рекомендаций — 10-16 часов.
- Внедрение рекомендаций и рефакторинг — 12-24 часа.
Необходимые трудозатраты зависят от состояния сайта: общей сложности функционала проекта, качества кода и технических решений, негативного наследия проекта.
Бывают, конечно, особо запущенные случаи или просто очень большие проекты, когда нужно вложить больше 40 часов, но это скорее исключение.
3. Удалите код JavaScript и CSS, блокирующий отображение верхней части страницы — от 0,5 ч.-
Удалите JavaScript.
В настройках главного модуля «Битрикс» есть галочка «Переместить весь Javascript в конец страницы». Она перемещает вниз страницы все JS из шаблона сайта, что частично решает вопрос. Включается за 2 минуты. Но бывают случаи, когда это приводит к поломке JS плагинов или обработчиков, приходится разбираться и вручную исправлять коллизии, тогда решение задачи может занять больше времени.
Удалите CSS.
При стандартном подключении стилей в «Битрикс» их нельзя переместить вниз, они всегда подключаются вначале страницы. Если подключать скрипты нестандартно, то теряются другие преимущества, такие как объединение/сжатие стилей и размещение стилей в CDN. И то и другое влияет на скорость загрузки страницы больше, чем перемещение стилей вниз страницы.
4. Сократите CSS — 0,5-1 час.
Для сжатия CSS можно использовать эти инструменты: https://developers.google.com/speed/docs/insights/MinifyResources.
Также в настройках главного модуля «Битрикс» есть галочка «Объединять CSS файлы», которая склеит несколько CSS файлов в один.
5. Сократите JavaScript — 0,5-1 час.
Алгоритм действий аналогичен сжатию CSS. В верстке нужно использовать сжатые версии js-библиотек или можно сжать их с помощью сторонних сервисов.
Также нужно включить галочку «Объединять JS файлы» в настройках главного модуля — она склеивает все js-скрипты в один файл.
6. Включите сжатие — 0,5 ч.
На большинстве виртуальных хостингов сжатие включено по умолчанию. Если нет, то можно попробовать включить его только через файл .htaccess (mod_deflate), так как доступа к полноценным настройкам сервера обычно нет. На выделенных серверах это делается в настройках сервера (apache/nginx).
7. Используйте кеш браузера — 1-2 часа.
На виртуальных серверах эта опция должна быть настроена автоматически. Если нет, также через .htaccess нужно указать заголовки для определенных типов файлов (скрипты, стили, картинки). На выделенных серверах — снова корректируем настройки сервера (apache/nginx).
Оптимизация по пункту 6 и 7 актуальна только для локальных ресурсов.
8. Оптимизируйте загрузку видимого контента.
Рекомендуется изменить структуру HTML таким образом, чтобы сначала загружался важный контент, располагающийся в верхней части страницы. Это может оказаться сложной или даже невыполнимой доработкой, так как придется менять структуру верстки и порядок загрузки элементов страницы. «Битрикс» не позволяет полностью поменять порядок загрузки: стили не переносятся вниз. Верстальщику будет не просто размещать блоки в идеальном для загрузки порядке.
9. Сократите HTML.
В этот пункт входит сокращение CSS и JS, о которых сказано выше. Чтобы сократить сам HTML код, необходимо переработать верстку шаблонов, если это возможно.
Дополнительные возможности «Битрикса»
Если продолжать разговор о «Битриксе», то в ходе комплексной работы над ускорением сайта нужно обязательно обратить внимание на следующие технологии, предлагаемые CMS:
- CDN (https://www.1c-bitrix.ru/products/cms/features/cdn.php),
- Композитный сайт (https://www.1c-bitrix.ru/composite/).
С их помощью можно добиться эффективного ускорения сайта, но процесс внедрения во многих случаях требует серьезных технических доработок.
Так, технология «Композитный сайт» отлично работает только в проектах, которые идеально соответствуют стандартам — таких сайтов очень мало. Обычно необходимо сначала довести сайт с помощью доработок до такого состояния, чтобы он мог поддерживать эту технологию.
Скорость и стабильность работы сайта – важные факторы, которые напрямую влияют на конверсию сайта и позиции в поисковой выдаче. Экономить на этом вопросе не стоит. Если нет возможности выделить разом необходимый ресурс для технической оптимизации сайта, нужно провести технический аудит и в комфортном темпе устранять все выявленные замечания. При этом начать стоит с тех рекомендаций, которые при минимальных трудозатратах обеспечат наилучший эффект.
Мы осуществляем техническую поддержку проектов на долгосрочной основе и знаем секреты успешного ускорения сайтов на «Битрикс». Обратившись к нам, вы можете быть уверены, что ваш сайт будет правильно оптимизирован с точки зрения технических возможностей платформы: мы не идем на сделки с совестью и предлагаем действительно эффективные решения.
Подробнее об услуге технического сопровождения сайтов и вариантах оплаты: https://www.directline.pro/web-razrabotka/support/
www.directline.pro
Как увеличить производительность сайта на 1С-Битрикс
Эффективность Вашего веб-сайта обеспечивается не только высококачественным уникальным контентом и комфортным интерфейсом, но и быстрым, надежным взаимодействием с пользователями.Программный продукт 1С-Битрикс обладает обширными возможностями и позволяет решать колоссальный спектр задач, гарантируя стабильную работу сайта госучреждения или крошечного интернет-магазина.
По мере совершенствования системы разработчики компании устранили имевшиеся ранее проблемы производительности. Нагрузочные тесты нынешней версии продукта подтвердили стабильность работы сайтов даже при сверхвысоких нагрузках. Сегодня это универсальное и надежное решение для всех.
Вы догадываетесь, почему мы начали беседу об увеличении производительности сайта на 1С-Битрикс с такого лирического вступления. Верно: в большинстве случаев проблемы с производительностью кроются в неверной конфигурации, избытке ненужных модулей или плохом хостинге.
Погодите обращаться в техподдержку. Сегодня мы приведем восемь простых и весьма эффективных способов диагностики и увеличения производительности сайта своими руками.
1. Анализ производительности
Система 1С-Битрикс оснащена «Панелью производительности», благодаря которой Вы можете собственноручно провести анализ производительности сайта и сделать выводы. Панель показывает узкие места в настройках, проблемы с хостингом – все то, на что следует обратить внимание.
Не забудьте развернуть сайт на различных тест-площадках для сопоставления.
Показатели производительности оцениваются в баллах и сравниваются с эталонным значением.
Конфигурацию можно назвать отличной при сумме баллов от 100 – при такой конфигурации сайт будет «летать» и выдерживать огромные нагрузки без сбоев и жалоб. Конфигурации сервера, дающие 30-60 баллов, подойдут разве что для мелких корпоративных проектов или магазинчиков. Соответственно, оценка 60-100 является средней и вполне приемлемой для большей части коммерческих сайтов.
Чтобы выполнить тестирование производительности сайта, откройте настройки во вкладке «Администрирование», перейдите к пункту «Производительность» - «Панель производительности». Наверху имеется соответствующая кнопка с указанием времени проверки (по умолчанию 5 минут).
2. Настройка кеширования
Композитный сайт, включение режима «Автокомпозит» в 1С-Битрикс – недостаточно для оптимальной производительности. Правильно настроив кеш в соответствии с посещаемостью и частотой обновления информации, Вы добьетесь заметного увеличения производительности сайта.
Крайне нежелательно выставлять настройки по умолчанию. Так, при входе на страницу с описанием товара генерируется кеш со временем жизни, скажем, две минуты. Следующий вход на данную страницу через 15 минут снова потребует генерирования кеша. Где же производительность?
Повторимся. Нужно устанавливать время кеширования в соответствии с двумя главными параметрами – посещаемостью Вашего сайта и частотой обновления информации в каждом конкретном разделе. Если речь идет о страницах товара, который отгружается и меняется каждый день, выставляйте сутки. Если обновление данных происходит несколько раз в день, можно выставить два часа. Ни никак не 120 сек!
3. Своевременный переход на PHP7
Один из самых очевидных способов увеличить производительность сайта 1С-Битрикс.
Вот уже почти два года, как вышла в свет PHP7. Новая версия позволяет сократить потребление ресурсов многими приложениями. Результат: весьма приятный скачок производительности, по результатам некоторых тестов - практически в полтора раза.
Если Вы еще колеблетесь и продолжаете эксплуатировать систему на устаревшей версии PHP, наивно искать проблемы в неправильной конфигурации и неиспользуемых модулях. Сегодня хостинг с поддержкой PHP7 уже не редкость, так что переходите на современные решения.
4. Анализ и индексирование базы данных
После тестирования конфигурации возвращаемся к меню «Панель производительности», где находим пункт «Индексы». Запустите выполнение анализа собранных запросов SQL, чтобы проверить наличие индексов. Если они не созданы, сделайте это самостоятельно по инструкции 1С-Битрикс.
5. Фасетный поиск в каталоге
Чтобы получить существенное ускорение работы умного фильтра, нужны фасетные индексы. Они представляют собой готовый набор для поиска по определенным значениям, сохраненный в системе. Фактическое использование фасетного поиска редкое, Вы можете сравнить производительность и сделать свои выводы. Подробнее о фасетах читайте в учебном курсе от 1С-Битрикс.
6. Модуль «Ускорение сайта (CDN)»
Модуль под названием Content Distribution Network предназначен для загрузки статического содержимого сайта (изображения, готовые стили, java-скрипты) при помощи сети CDN. Это означает, что большую часть контента пользователь будет получать с расположенного поблизости сервера.
Помимо сокращения загруженности главных серверов, мы получаем многократное ускорение загрузки страниц с узлов CDN и довольные лица посетителей. Для настройки этого модуля заходим в пункт меню «Облако 1С-Битрикс», где выбираем «Ускорение сайта (CDN)».
Стоит отметить, что отзывы о модуле CDN неоднозначные: в некоторых случаях вместо желанного прироста может наблюдаться торможение загрузки сайта. Проверяйте самостоятельно.
7. Отключение ненужных модулей
Автоматическое подключение множества «лишних» модулей при запуске 1С-Битрикс – это не очень полезно для производительности сайта. Отключив ненужные модули, мы получим определенный прирост. Только не забудьте выполнить резервное копирование сайта перед экспериментом!
Среди малоиспользуемых модулей – workflow, cluster, веб-аналитика, мессенджер, Active Directory/LDAP-интегратор, abtest, idea, обучение, управление масштабом. При отсутствии мобильного приложения можно спокойно вырубить mobileapp и eshopapp.
Отключение производится по инструкции 1С-Битрикс: во вкладке «Администрирование» выбираем «Настройки продукта», затем пункт «Модули». Выбираем лишнее и отключаем. Тестируем.
8. Оптимизация CSS
В систему встроена функция для сжатия и объединения файлов CSS и JavaScript. Чтобы воспользоваться ею, переходим в «Настройки продукта», далее «Настройки модуля» - «Настройки главного модуля». Здесь в разделе «Оптимизация CSS» по отдельности выставляем галочки для объединения CSS и JS файлов, подключения минифицированных версий CSS и JS, затем сжатие. Тестируем после каждого изменения и оставляем оптимальную конфигурацию.
Грамотное применение наших советов поможет Вам увеличить производительность сайта 1С-Битрикс и в подавляющем большинстве случаев избавит от ненужного обращения в техподдержку.
sdvv.ru
10 способов ускорения сайта на Битрикс
Что будет, если нагрузить фуру и старую клячу грузом в 1 тонну? Правильно: первый поедет на максимальной скорости, а вторая не сможет сдвинуться с места. Так и сайты: у каждого из них свои требования к хостингу, конфигурации, настройкам платформы 1С-Битрикс.Каждую неделю в нашу поддержку приходят жалобы на низкую скорость загрузки. В 99,9% случаев оказывается, что проблема кроется в слабеньком хостинге и неправильных настройках. Рассказываем, что делать, если сайт или интернет-магазин тормозит, и как правильно произвести диагностику и самостоятельно увеличить производительность — так, чтобы летал.
1. Оцените производительность
Модуль «Монитор производительности» 1С-Битрикс позволит протестировать производительность сайта и сравнить результаты с эталонными показателями. Он укажет на слабые места: сайт, CMS, конфигурация, некачественная разработка или хостинг. Вы можете развернуть ваш сайт или «чистый» 1С-Битрикс на разных площадках и сравнить эти цифры.Что нужно знать о показателях производительности:
- меньше 30 пунктов – забудьте про производительность и быструю загрузку страниц. Показателя «Очень быстро» вам не видать. Тормозить будет все!
- от 30 до 60 – подойдет для небольших проектов (корпоративные сайты или интернет магазины с небольшим количеством товаров, небольшим количеством SKU и параметров в умном фильтре)
- от 60 до 100 — конфигурация сервера приемлема, но не оптимальна. Подойдет для большинства проектов. Сайт работать будет, но не на сверхскоростях.
- от 100 – вы молодцы: не поленились выбрать нормальную хостинг площадку! Админка летает, большие объемы данных из 1С выгружаются на ура, страницы отдаются быстро. Вы спите спокойно и даже не думаете писать в техподдерожку с жалобами на проблемы с загрузкой сайта, ни разу не видели ошибок Request timeout или 502 Bad Gateway.
- 200 и выше – идеально!
Как протестировать сайт
Перейдите в панель производительности: Настройки → Производительность → Панель производительности. Нажмите кнопку «Тестирование производительности» и подождите несколько минут.2. Перейдите на PHP7
3 декабря 2015 года вышла седьмая версия PHP. Она разрабатывалась с упором на увеличение производительности и уменьшение потребления памяти. Тесты это убедительно показывают — прирост производительности после перехода на новое ядро составляет от 40%!
Сидеть на старых версиях PHP — осложнять жизнь пользователю и делать этот интернет хуже. Если ваш хостинг не поддерживает PHP7, меняйте его. Если ваш сайт не поддерживает PHP 7, срочно исправляйтесь.
3. Настройте кеширование
Использовать композит и автокомпозит — это хорошо и правильно. Но просто включить их — полдела. Чтобы получить ощутимый прирост в скорости, нужно корректно задать время жизни кеша в зависимости от частоты обновления данных на сайте и посещаемости.Как не надо:
- Оставлять настройки по умолчанию (120 секунд).
Почему: первый посетитель заходит на страницу товара. Формируется кеш. Второй посетитель заходит на сайт через час. Кеш нужно формировать заново — его время истекло. В итоге кеш генерируется каждый раз при открытии страницы. Прироста производительности и скорости не просто нет — она даже снижается.
- Не соотносить время жизни кеша с частотой обновления данных на сайте и посещаемости сайта.
- Задавать для отдельных разделов (новости, статьи) огромное время кеширования.
- Цены на сайте обновляются вручную или несколько раз в неделю. Рекомендуемое время кеширования: не менее 172800 секунд (2 суток).
- Цены на сайте обновляются один раз в день, выгрузка из 1С или другой системы складского учета происходит ночью. Рекомендуемое время кеширования: 86400 секунд (1 сутки).
- Нечасто, но бывает: цены обновляются через реал-тайм обмен с 1С и бывает, что несколько раз в течение дня. Рекомендуемое время кеширования: 7200 секунд (2 часа).
4. Создайте фасетные индексы для умного фильтра
Фасетные индексы ускоряют работу умного фильтра. Обычно умному фильтру нужно перебрать все товары каталога и сравнить их свойства с заданными параметрами. Если товаров много, такой процесс может занять определенное время. Фасета же заранее просчитывает и составляет варианты запросов, сохраняет в системе и выдает по запросу.
На словах все здорово, на деле — не очень: фасеты редко создают и используют. Попробуйте это сделать и сравните скорость загрузки результатов фильтрации.
5. Проанализируйте и создайте индексы в базе данных
Индексы анализируются и создаются здесь: Настройки → Производительность → Индексы → Анализ индексов.
Нажмите на кнопку «Выполнить анализ собранных SQL запросов». Если появившиеся индикаторы зеленые, все в порядке: индексы созданы. Если индикаторы желтые, создайте их самостоятельно. Инструкция в мануалах 1С-Битрикс
6. Отключите неиспользуемые модули
При инциализации ядра 1С-Битрикс подключается большой список модулей. Они отнимают ресурсы, но при этом не нужны для полноценной работы сайта. Отключаем лишние модули — получаем прирост производительности. Перед тем, как это делать, обязательно сделайте резервную копию сайта.Какие модули используются редко и их можно отключить без последствий для работы сайта:
- AD/LDAP интеграция (ldap)
- Push and Pull (pull)
- Wiki (wiki)
- А/B-тестирование (abtest)
- Веб-аналитика (statistic)
- Веб-кластер (cluster)
- Веб-мессенджер (im)
- Веб-сервисы (webservice)
- Дизайнер бизнес-процессов (bizprocdesigner)
- Документооборот (workflow)
- Календарь событий (calendar)
- Конструктор отчетов (report)
- Менеджер идей (idea)
- Мобильная платформа (mobileapp) - если не подключено мобильное приложение
- Мобильное приложение для интернет-магазина (eshopapp) - если не подключено мобильное приложение
- Обучение (learning)
- Перевод (translate)
- Почта (mail)
- Техподдержка (support)
- Универсальные списки (lists)
- Управление масштабированием (scale).
- Бизнес-процессы (bizproc).
7. Настройте CDN
Еще одна неоднозначная вещь, которая может как разогнать сайт, так и заставить его хорошенько притормозить. Что это такое?
Теория:
«Модуль Ускорение сайта (CDN), который позволяет загружать весь статический контент вашего сайта (картинки, файлы стилей css, скрипты js) через сеть дистрибуции контента (Content Delivery Network или Content Distribution Network, CDN). Тем самым значительная часть ресурсов сайта загружается посетителем с ближайшего к нему сервера. Это позволяет увеличить скорость загрузки страниц до нескольких раз. Также подключение CDN снижает нагрузку на основные серверы сайта. Так как весь статический контент загружается посетителями вашего сайта не напрямую с ваших серверов, а с узлов CDN, которые умеют очень эффективно кэшировать контент, снижается количество обращений непосредственно к вашим серверам» (отсюда) Настраивается CDN здесь: Настройки → Облако 1С-Битрикс → Ускорение сайта (CDN) Не все так однозначно: для кого-то включенный CDN дает реальный прирост производительности, а у кого-то, напротив, снижает скорость загрузки сайта. Выход один: тестировать и замерять результаты.8. Включите объединение и сжатие CSS и JS-файлов
В настройках главного модуля сайта есть волшебный блок, который позволяют улучшить показатели скорости загрузки сайта. Называется он “Оптимизация CSS”. Отмечайте галочками все, сохраняйте изменения и тестируйте скорость загрузки страниц.
9. $DBDebug = true;
Зачастую при разработке и исправлении ошибок приходиться включать отладку и вывод ошибок для баз данных, но после фикса всех ошибок - банально забывают выключить режим отладки. Открываем файл /bitrix/php_interface/dbconn.php по ssh/ftp или панель хостинга и меняем $DBDebug = true; на $DBDebug = false;10. Место для хранения файлов композитного кеша.
Скорость работы сайта может стать медленней из-за жесткого ограничения композитного кеша. Из-за этого 1С-Битрикс не сможет сохранять файлы композитного кеша после превышения заданного значения, поэтому сайт станет работать медленнее. По умолчанию лимит составляет 100 MB, что крайне мало. Рассчитывайте место по соотношению 1.5 GB на 1000 товаров. Изменить установленный лимит можно в Рабочий стол → Настройки → Настройки продукта → Композитный сайт.
Найдите группу параметров «Механизм хранения кеша». Увеличьте значение в поле «Дисковая квота». Экономить доступное место на диске не рекомендуется – используйте столько, сколько возможно. Для среднего магазина на 3-4 тысячи товаров понадобится примерно 5 Гб.А оценить в количественных и качественных характеристиках эти «до» и «после» поможет старый добрый Google PageSpeed Insights.
mstrkrft.ru
Общие принципы ускорения сайтов
Дата создания: 15.03.2015
Несмотря на то, что сайты стоят на абсолютно разных CMS и фреймворках (или велосипедах), всё равно есть общие аспекты влияющие на скорость загрузки. Ведь у них у всех есть какой-то вес статических файлов (картинки, стили, js-файлы...), практически у всех есть динамически выводимая информация, которая через сервер берётся из БД. И это те вещи, которые можно оптимизировать для уменьшения времени загрузки страниц. В этой статье я расскажу об универсальных приёмах ускорения сайта.
Зачем вообще нужно ускорять загрузку страниц?
4 секунды не так долго ведь, правда?
Вообще, существует два важных факторов, не считая вашего личного эго, ради которых стоит мучиться. Это улучшение ранжирования в поисковиках (SEO) и удобство пользователя (User Experience). С быстрым сайтом намного приятнее и удобнее работать пользователю, а поисковики считают своей целью сделать работу в интернете максимально удобной. Также стоит понимать, что чем быстрее сайт, тем он более производителен, а значит больше юзеров может одновременно просматривать его, а трафик это наше всё. Скорость также косвенно указывает на релевантность запроса в данном регионе, правда это лишь догадки.
Сейчас наступила эра мобильного интернета, всё меньше сайтов не адаптируются к маленькому экрану. Но мобильный интернет не самая быстрая штука на свете и порой у посетителя стоит выбор между сайтом, который сразу открывается, и тем, который никогда не откроется (минуту ждать, например). Для таких ниш как интернет-магазины, скорость загрузки становится одним из самых критичных факторов.
Как проверять прогресс?
Самым лучшим способом является панель разработчика в Google Chrome и её расширение Google Insights. Она анализирует страницу, подключаемые файлы, этапы загрузки и даёт советы после анализа. Также в этой панели будут полезны вкладки "Network" и "Audits".
Веб-версия Google Insights находится по адресу developers.google.com/speed/pagespeed/insights/, здесь доступна более полная, чем в панели, информация.
Способы ускорения
Собственно сами приёмы повышения скорости отдачи страниц. Напомню, что все они общеупотребимые.
Обновления
Всегда ставьте свежие обновления всего, что можно обновить. Новые версии CMS, кроме всего прочего, повышают производительность, уменьшают количество запросов к БД, улучшают работу с кешем, облегчают сам код. Не забывайте также обновлять версии php, это служит тем же целям.
Выберите хороший хостинг
Несмотря на все ухищрения, сайт всегда состоит из файлов, которые надо читать с сервера, html-кеш существует далеко не всегда и поэтому приходится делать много вычислений в php и делать выборки из бд, следовательно чем лучше показатели производительности ваших ресурсов, такие как: скорость работы с mysql, время создания сессий, количество файловых операций в секунду, наличие php-прекомпиляторов, скорость процессора, тем производительнее и сам сайт. Поэтому подберите хороший сервер для своих нужд, не стоит сильно экономить в этом плане. Виртуальные сервера не такие уж дорогие и часто удовлетворяют всем требованиям производительности на небольших проектах.
Минимизация изображений
Вес картинок - это один из самых важных аспектов, потому что эти файлы обычно составляют основной вес страницы. Есть несколько шагов по оптимизации изображений.
Подобрать правильное расширение
Во-первых, нужно определиться с нужным типом файла. В основном, в вебе выжило только три расширения: gif, jpeg, png, и важно знать когда какой применять, картинка ниже доходчиво всё объясняет (прикреплена ссылкой из-за слишком большого размера).
Если в двух словах, то применяйте jpeg ко всем картинкам, кроме тех, где есть прозрачность - это будет png, или анимация - это будет gif.
Также подставляйте картинки только нужных размеров, то есть не надо сжимать их через css или атрибуты, а изначально уменьшайте размеры и обрежьте лишнее, что, очевидно, уменьшит их размер.
И последнее, когда вы уже задали нужные расширение и размеры, сожмите сам файл, это поможет сэкономить вам десятки килобайт. Для этих целей я пользуюсь этими двумя бесплатными веб-сервисами: compresspng.com и compressjpeg.com, просто потому что у них удобный интерфейс и нет заметной потери качества при обработке.
Уменьшите количество http-запросов к серверу
Каждая подгрузка файла с сервера занимает немножко процессорного времени. Самым популярным способом решения этой проблемы является создания css-спрайтов. Это когда создаётся одна картинка, которая содержит несколько других. Для примера:
Таким образом вместо n запросов, мы обращаемся к серверу всего один раз. Чтобы вывести в нужном месте нужный кусочек спрайта, мы создаём элемент, у которого указываем размеры и сдвиг бэкграунда (background-position), а в background-image, естественно, ставим наш спрайт. Несмотря на то, что суммарный вес картинок по отдельности точно такой же (а иногда и меньше), мы уменьшаем время загрузки страниц разгрузкой процессора. У себя на сайт я пошёл ещё дальше и вообще отказался от картинок в оформлении, у меня здесь только лого, а тот домик в меню это, вообще, символ.
В случае с другими файлами, которые загружаются браузером (стили, например), не думаю, что вы их разделили без веской причины, поэтому не стоит думать над этим, к тому же некоторые движки (Bitrix, например) умеют сами объединять и сжимать такие файлы.
Также можно использовать специальный заголовок для запуска кеширования браузером. Для этого необходимо прописать заголовок expires. У себя я задаю его через .htaccess, для примера:
ExpiresActive on ExpiresDefault "access plus 1 day" ExpiresByType image/jpeg "access plus 3 day" ExpiresByType image/gif "access plus 3 day" ExpiresByType image/png "access plus 3 day" ExpiresByType text/css "access plus 3 day" ExpiresByType application/javascript "access plus 3 day"Данный код значит: "по умолчанию кешировать на один день, картинки, css и js кешировать на три дня".
Уменьшите количество запросов к бд
Это одно из самых тяжёлых действий на серверной стороне, потому что надо переосмысливать сам код. Вот несколько мыслей и вопросов, которые прокручиваются у меня в голове при оптимизации бэкенда:
-
Могу ли я точнее указать список необходимых полей для возврата?
В CMS это позволяет уменьшить количество задействованных таблиц при запросах
-
Получал ли я эти данные где-нибудь выше?
Это позволяет убрать лишние запросы в коде. Зачастую бывает не самым очевидным моментом, поэтому этот пункт и включён, несмотря на то, что выглядит он глупо. Примером могут служить сложные способы вывода динамических страниц в CMS, например, компоненты Битрикса.
- Никогда не стоит писать запросы внутри циклов.
- Стоит объединять близкие запросы на одной странице.
Зачастую вам, вообще, не надо обращаться к бд при каждой загрузке страницы, так что закешируйте всё что можете, чтобы отдавать уже готовый html при повторных загрузках.
Минимизация css и js
Как и все файлы, эти файлы также имеют вес, который отрицательно влияет на скорость загрузки. Но фанатичное сокращение символов, ведёт к потере читаемости. Я не думаю, что ради 1-2 кб веса стоит жертвовать поддержкой разработки. Но если подойти с умом, то можно, конечно, найти компромисс, например, использовать быстрые правила, уменьшать размер селекторов, убрать дублирующиеся правила, объединить функции и циклы.
Подробнее об ускорении работы css и js файлов будет рассказано отдельно.
География
Как ни странно, географическая удалённость сервера от запроса тоже имеет значение (чем ближе, тем быстрее), поэтому постарайтесь выбрать сервера поближе к своей целевой аудитории.
В наше время уже широко распространён cdn, зачастую он даже бесплатный, так что если удастся подключить эту технологию, она даст вам заметное увеличение скорости.
К чему стремиться?
К идеалу конечно, человек моргает за 0,3-0,4 секунды. У акул рынка скорость загрузки страниц составляет как раз 0,3 - 0,5 секунд и это позволяет приводить на их сайты большУю аудиторию. Выполняя советы из этой главы, можно добиться загрузки в полсекунды, лично у меня получалось на моих основных проектах.
Если остались какие-то вопросы по поводу пунктов этой инструкции или вы знаете ещё действенные способы, которые стоит упомянуть, отпишитесь, пожалуйста, внизу, я вам отвечу.
Похожие статьи
aristov-vasiliy.ru