CSS, JS inline в Битрикс

66
Алексей,

Добиваю Google Pagespeed, до идеального результата осталось несколько пунктов. На данный момент пришлось "заинлайнить" стили и js для того, чтобы не было лишних запросов к серверу.

Добиваю Google Pagespeed, до идеального результата осталось несколько пунктов. На данный момент пришлось "заинлайнить" стили и js для того, чтобы не было лишних запросов к серверу.

/**
 * Инлайнит стили и скрипты
 */
EventManager::getInstance()->addEventHandler("main", "OnEndBufferContent", "inlineCssJs");

function inlineCssJs (&$content) {
	global $USER;
	if (!$USER->IsAdmin()) {
		preg_match_all("/\<link.*href=\"(.*\.css).*\>/i", $content, $matches);
		foreach ($matches[1] as $i => $cssPath) {
			$cssInline = file_get_contents($_SERVER["DOCUMENT_ROOT"] . $cssPath);
			$content = str_replace($matches[0][$i], '<style type="text/css">' . $cssInline . "</style>", $content);
		}
		
		preg_match_all("/\<script.*src=\"(.*\.js).*\>/i", $content, $matches);
		foreach ($matches[1] as $i => $jsPath) {
			$jsInline = file_get_contents($_SERVER["DOCUMENT_ROOT"] . $jsPath);
			$content = str_replace($matches[0][$i], '<script type="text/javascript">' . $jsInline . "</script>", $content);
		}
	}
}

Под админом немного разваливается админка, поэтому её пришлось исключить. Скрипт костыльный, берет со страницы js и css, получает содержимое файлов и вставляет на страницу.

результаты google pagespeed после того как стили и js были вставлены напрямую в страницу

Так же добавил размеры картинок (ни на что не повлияло) и немного почистил css, убрав те стили что не использую.

Опубликовано 21 августа 2021 | Обновлено 25 августа 2021
производительность, костыли, css
Поделиться
Комментарии
Авторизуйтесь чтобы получать уведомления об ответе
22 авг 2021
Комментарий скрыт
Добиваю Google Pagespeed, до идеального результата осталось несколько пунктов. На данный момент пришлось "заинлайнить" стили и js для того, чтобы не было лишних запросов к серверу.