Функционал скорости сайта в Битриксе появился уже довольно давно и зарекомендовал себя как удобный инструмент для оценки скорости работы сайта. Но бывают проекты на которых не во всех разделах необходим замер скорости работы по той или иной причине.
Отключить замер скорости сайта в определенном разделе может потребоваться, например, когда раздел для внутреннего использования администраторами или функционал не для публичного использования. В общем причин может быть много. Для замера скорости сайта Bitrix "включает" в страницу следующий JavaScript код:
var _ba = _ba || []; _ba.push(["aid", "XXX"]); _ba.push(["host", "XXX"]); (function() {var ba = document.createElement("script"); ba.type = "text/javascript"; ba.async = true;ba.src = (document.location.protocol == "https:" ? "https://" : "http://") + "bitrix.info/ba.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ba, s);})();
Для того, чтобы отключить замер скорости для определенного раздела, необходимо в файле /bitrix/php_interface/init.php написать следующий код:
if(!function_exists("sectionNoSpeedTest")) { AddEventHandler("main", "OnEndBufferContent", "sectionNoSpeedTest"); function sectionNoSpeedTest(&$content) { global $APPLICATION; if (substr_count($APPLICATION->GetCurDir(), "/section/") > 0) { $js = 'ba.src = (document.location.protocol == "https:" ? "https://" : "http://") + "bitrix.info/ba.js";'; $content = str_replace($js, '', $content); } } }
Для начала мы проверяем не определена ли функция sectionNoSpeedTest(), если нет, то добавляем событие и определяем саму функцию. В теле функции мы проверяем есть ли в данном URL адресе вхождение /section/ и если есть, то удаляем скрипт замера скорости. Если необходимо отключить замер скорости сайта только для определенной страницы, то достаточно заменить /section/, например, на /test_page.php или любой другой URL страницы.
Данный код есть куда улучшать, например, можно не по количеству вхождений подстроки определять раздел, а при помощи регулярных выражений - так можно будет более гибко все настроить (поиск в начале строки, в конце и так далее), также для запрета в нескольких разделах можно создать массив исключений и искать по нему. В данном примере мы просто рассмотрели простейшее применение и реализацию.