Меню
RSS
bitrix оптимизация для pagespeed, Как оптимизировать битрикс для Google pagespeed
 
Достаточно обширный вопрос, возможно запишу видео инструкцию на свой ютуб канал.

Но некоторые наводочки:
- Включите объединение и сжатие css и js
- Включите перемещение js вниз страницы
- Включите подключение минифицированных файлов css и js
- Оптимизируйте все картинки на сайте (например так http://optimizilla.com/ru/)
- Включите кеширование и композитный сайт

ВАЖНО! Ниже делаете на свой страх и риск, все очень индивидуально
Отключить служебные css и js (иногда нужны, но скорее редкость)
И сжать html код страницы
Для разделов создаем новый параметр save_kernel - и для разделов, у которых нужно сохранить скрипты уставливаем в параметр Y

В init.php добавляем код
Код
<?
AddEventHandler("main", "OnEndBufferContent", "deleteKernelJs"); //Убрать js
AddEventHandler("main", "OnEndBufferContent", "deleteKernelCss"); //Убрать css
AddEventHandler("main", "OnEndBufferContent", "ChangeMyContent"); //Сжать html
function deleteKernelJs(&$content) {
    global $USER, $APPLICATION;
    if((is_object($USER) && $USER->IsAuthorized()) || strpos($APPLICATION->GetCurDir(), "/bitrix/")!==false) return;
    if($APPLICATION->GetProperty("save_kernel") == "Y") return;
    $arPatternsToRemove = Array(
        '/<script.+?src=".+?kernel_main\/kernel_main\.js\?\d+"><\/script\>/',
        '/<script.+?src=".+?bitrix\/js\/main\/core\/core[^"]+"><\/script\>/',
        '/<script.+?>BX\.(setCSSList|setJSList)\(\[.+?\]\).*?<\/script>/',
        '/<script.+?>if\(\!window\.BX\)window\.BX.+?<\/script>/',
        '/<script[^>]+?>\(window\.BX\|\|top\.BX\)\.message[^<]+<\/script>/',
    );
    $content = preg_replace($arPatternsToRemove, "", $content);
    $content = preg_replace("/\n{2,}/", "\n\n", $content);
}

function deleteKernelCss(&$content) {
    global $USER, $APPLICATION;
    if((is_object($USER) && $USER->IsAuthorized()) || strpos($APPLICATION->GetCurDir(), "/bitrix/")!==false) return;
    if($APPLICATION->GetProperty("save_kernel") == "Y") return;
    $arPatternsToRemove = Array(
        '/<link.+?href=".+?kernel_main\/kernel_main\.css\?\d+"[^>]+>/',
        '/<link.+?href=".+?bitrix\/js\/main\/core\/css\/core[^"]+"[^>]+>/',
        '/<link.+?href=".+?bitrix\/templates\/[\w\d_-]+\/styles.css[^"]+"[^>]+>/',
        '/<link.+?href=".+?bitrix\/templates\/[\w\d_-]+\/template_styles.css[^"]+"[^>]+>/',
    );
    $content = preg_replace($arPatternsToRemove, "", $content);
    $content = preg_replace("/\n{2,}/", "\n\n", $content);
}

//Сжатие HTML
function ChangeMyContent(&$content)
{
    global $USER, $APPLICATION;
    if((is_object($USER) && $USER->IsAuthorized()) || strpos($APPLICATION->GetCurDir(), "/bitrix/")!==false) return;
    if($APPLICATION->GetProperty("save_kernel") == "Y") return;
    $search = array(
        '/\>[^\S ]+/s',
        '/[^\S ]+\</s',
        '/(\s)+/s'
    );
    $replace = array(
        '>',
        '<',
        '\\1'
    );
    $content = preg_replace($search, $replace, $content);
}
?>
 
Здравствуйте. Помогите пожалуйста. У меня в init.php уже есть код отвечающий за обработку почты. Как объединить Ваш код с моим. Чтобы все работало.
 
Цитата
Анатолий написал:
Здравствуйте. Помогите пожалуйста. У меня в init.php уже есть код отвечающий за обработку почты. Как объединить Ваш код с моим. Чтобы все работало.
Добрый

Достаточно дописать его в самый низ файла. Но внимательно, делайте это через FTP а не через админку, что бы если что удалить.
 
Дописал. Почистил кеш, белый экран.
Вот мой код:
Скрытый текст

Куда именно вставлять? Извините, я не программист. подскажите пожалуйста.
Изменено: Михаил Базаров - 24.01.2022 19:41:33
 
Здравствуйте, Михаил!
Благодарю за Ваши решения!
По этому могу сказать, что скрипт сжатия HTML в моём случае делает нерабочими скрипты в теле страницы <script type='text/javascript'></script> с комментариями разработчиков:
Код
{   //with bitrix panel   
if(1)   {   bxPanel.setAttribute('style','margin-bottom:20px !important');   }...

трансформирует в:
Код
{   //with bitrix panel    if(1)   {   bxPanel.setAttribute('style','margin-bottom:20px !important');   }...

и комментарий экранирует дальнейшее.
В моём случае летят 6 скриптов. Но, думаю, я не одинок и у других могут быть подобные ошибки.
Сейчас копаю как: или предварительно очистить комментарии, или как обойти их.
 
Цитата
Константин написал:
Здравствуйте, Михаил!
Благодарю за Ваши решения!
По этому могу сказать, что скрипт сжатия HTML в моём случае делает нерабочими скрипты в теле страницы <script type='text/javascript'></script> с комментариями разработчиков:
Код
 {   //with bitrix panel   
if(1)   {   bxPanel.setAttribute('style','margin-bottom:20px !important');   }... 

трансформирует в:
Код
 {   //with bitrix panel    if(1)   {   bxPanel.setAttribute('style','margin-bottom:20px !important');   }...
 

и комментарий экранирует дальнейшее.
В моём случае летят 6 скриптов. Но, думаю, я не одинок и у других могут быть подобные ошибки.
Сейчас копаю как: или предварительно очистить комментарии, или как обойти их.

Несколько помогло (нагуглил):
Код
    $search = array(
   '/(?:(?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:(?<!\:|\\\|\'|\")\/\/.*))/',
        '/\>[^\S ]+/s',
        '/[^\S ]+\</s',
        '/(\s)+/s'
    );
    $replace = array(
    '',
        '>',
        '<',
        '\\1'
    );

осталась одна проблема (заказ обратного звонка), которую пытаюсь отловить. Сообщу, если получится.
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Bst

Блог-note: заметки разработчика

Удалить все картинки элементов инфоблока: анонс, детальную и дополнительные картинки (MORE_PHOTO)

Задача: В инфоблоке 10 000 элементов, нужно удалить картинки анонса, детальные и дополнительные картинки из свойства MOR...

Массово: применить наценку ко всем товарам каталога с пересчетом от базовой.

Рассмотрим как, в магазине работающем на 1С-битрикс, массово применить наценку на все товары каталога. Устанавливать буд...

Пункты меню из разделов инфоблока Битрикс

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

Сортировать товары по названию, цене и дате поступления в каталоге Битрикс

Достаточно часто заказчик просит вывести сортировку по цене, новым поступлениям и названию в каталоге товаров работающег...

Прямое открытие мессенджеров по ссылке из приложения Apache Cordova

Задача: При клике по ссылкам на Telegram и WhatsApp в мобильном приложении необходимо сразу открывать мессенджеры без пр...

Кнопка для отправки на печать карточки товара, без лишних данных

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

Вывести артикул в печатную форму бланка заказа

Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе.

Вывести товары в каталоге перебрав их по свойству и разделив на секции.

Задача: В каталоге, у товаров, есть свойство типа список с названием "Тип изделия" и кодом "TIP_IZDELIYA&...

Самодельная форма добавления элемента на API Битрикс

Компонент iblock.element.add.form написан таким образом, что вы не сможете (не попотев изрядно и не используя js) как уг...