Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
то ждем ваше обращение в нашей службе тех поддержки.
Низкая скорость загрузки страниц отпугивает до 70% пользователей. Это общеизвестный факт. Стратегия решения проблемы понятна, надо сокращать количество загружаемых элементов и уменьшать их «вес». В этой заметке мы рассмотрим один из приемов ускорения загрузки при помощи отложенной загрузки JavaScript и CSS файлов на странице.
1. Доработка заголовка header.php
Разбираем функцию ShowHead на составляющие:
2. . Подключаем вывод скриптов в «подвале» сайта footer.php
3. . Вывод скриптов из init.php
Непосредственно вывод будет выполняться из init.php или functions.php
Готово!
Спасибо за внимание!
Читайте свежий выпуск «Кладовки программиста» каждый день!
Назад в раздел
1. Доработка заголовка header.php
Разбираем функцию ShowHead на составляющие:
//$APPLICATION->ShowHead(); $APPLICATION->ShowMeta("keywords"); // Вывод мета - тега keywords $APPLICATION->ShowMeta("description"); // Вывод мета - тега description $APPLICATION->ShowCSS(); // Подключение файлов стилей CSS if($USER->IsAdmin()) $APPLICATION->ShowHeadStrings(); // Отображает специальные стили, JavaScript
2. . Подключаем вывод скриптов в «подвале» сайта footer.php
$APPLICATION->ShowHeadScripts(); // Вывод скриптов
3. . Вывод скриптов из init.php
Непосредственно вывод будет выполняться из init.php или functions.php
AddEventHandler("main", "OnEndBufferContent", "deleteKernelCss"); 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( '/<li nk.+?href=".+?kernel_main\/kernel_main\.css\?\d+"[^>]+>/', ); $content = preg_replace($arPatternsToRemove, "", $content); $content = preg_replace("/\n{2,}/", "\n\n", $content); } AddEventHandler("main", "OnEndBufferContent", "includeCssInline"); function includeCssInline(&$content) { global $USER, $APPLICATION; if((is_object($USER) && $USER->IsAuthorized()) || strpos($APPLICATION->GetCurDir(), "/bitrix/")!==false) return; if($APPLICATION->GetProperty("save_kernel") == "Y") return; preg_match('/<li nk.+?href="(\/bitrix\/cache\/css\/'.SITE_ID.'\/'.SITE_TEMPLATE_ID.'\/template_[^"]+)"[^>]+>/', $content, $arMatches); $sFilePath = "http://".$_SERVER["HTTP_HOST"].$arMatches[1]; $obCache = new CPHPCache; $life_time = 0*60; if($obCache->InitCache($life_time, $sFilePath, "/")) { $vars = $obCache->GetVars(); $sIncludeCss = $vars["sIncludeCss"]; $sIncludeCssClear = $vars["sIncludeCssClear"]; } else { $sIncludeCss = file_get_contents($sFilePath); $sIncludeCssClear = compressCSS($sIncludeCss); } if(false) { ?><pre style="font-size:10px;line-height: 8px;">До: <?=strlen($sIncludeCss);?></pre><? ?><pre style="font-size:10px;line-height: 8px;">После: <?=strlen($sIncludeCssClear);?></pre><? } $content = str_replace($arMatches[0], "<st yle>$sIncludeCssClear</style>", $content); if($obCache->StartDataCache()) { $obCache->EndDataCache(array( "sIncludeCss" => $sIncludeCss, "sIncludeCssClear" => $sIncludeCssClear, )); } } function compressCSS($css, $arOptions = Array()) { $sResult = $css; $sResult = preg_replace("/\/\*[^*]+\*\//", "", $sResult); // comments $sResult = preg_replace("/\/\**\*\//", "", $sResult); // comments $sResult = preg_replace("/\s*(:|,|;|{|}|\t)\s*/", "$1", $sResult); // whitespaces $sResult = preg_replace("/(\t+|\s{2,})/", " ", $sResult); // tabs and double whitespace $sResult = preg_replace("/(\s|:)([\-]{0,1}0px)\s/", " 0 ", $sResult); // zeros //$sResult = preg_replace("/#(\w){6};/", "#$1$1$1;", $sResult); // #dddddd => #ddd return $sResult; }
Готово!
Спасибо за внимание!
Читайте свежий выпуск «Кладовки программиста» каждый день!
Назад в раздел
Подписаться на новые материалы раздела: