Михаил Базаров Разработка на 1С-Битрикс Михаил Базаров

bitrix оптимизация для 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 а не через админку, что бы если что удалить.
Дописал. Почистил кеш, белый экран.
Вот мой код:
Скрытый текст

Куда именно вставлять? Извините, я не программист. подскажите пожалуйста.
Здравствуйте, Михаил!
Благодарю за Ваши решения!
По этому могу сказать, что скрипт сжатия 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'
    );

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

Блог-note Заметки по 1С-Битрикс