Минификация html, убираем пробелы и переносы

1284
Алексей,
Минификация html, убираем пробелы и переносы

Простой способ пройти еще одну проверку от Google Pagespeed, разгрузить посетителей и место на хостинге (если используете композит)

Вставляем в init.php код:

\Bitrix\Main\EventManager::getInstance()->addEventHandler("main", "OnEndBufferContent", "removeSpacesAndTabs");

/**
 * Удаляет табы и лишние пробелы из html кода
 *
 * @param $content
 */
function removeSpacesAndTabs (&$content) {
	global $APPLICATION;
	$page = $APPLICATION->GetCurPage();

	if ($page != '/bitrix/tools/captcha.php' && $page != '/bitrix/admin/captcha.php') {
		$content = preg_replace("/[ \t]+/", " ", $content);
		$content = str_replace(array("\n \n"), "\n", $content);
	}
}

Простыми словами. После формирования html на стороне сервере (событие OnEndBufferContent), скрипт делает замену переносов строки , отступов (табов) и пробелов на один пробел, но при условии, что не включен режим правки (перестает работать при таких заменах).

Опубликовано 28 Апреля 2018 | Обновлено 2 Мая 2020
производительность
Похожие статьи
Оптимизация сайта для google pagespeed, 100 из 100 0
Собрал все посты в одном для получения максимального балла в Google PageSpeed Insights.
Читать дальше »
Алексей,
Правила эффективного использования кеша для статических объектов 0
Решение проблемы "Задайте правила эффективного использования кеша для статических объектов"...
Читать дальше »
Алексей,
Комментарии
Михаил
22 Окт 2019
У меня при такой минимизации перестает работать часть JS кода. В чем именно может быть проблема?
Алексей
Алексей
22 Окт 2019
Михаил, убираются пробелы и переносы строк в html коде. Все js вставки лучше убрать в отдельные js файлы, либо нужно исправлять сам js код.
Михаил
22 Окт 2019
Алексей, похоже нашел проблему более детально. Связано это вероятно с комментариями. При наличии однострочных комментариев в JS, если заменить перенос каретки на пробел, часть JS кода комментируется.
Алексей
Алексей
22 Окт 2019
Михаил, да, есть такая проблема.