Битрикс скорость сайта - раздел исключение

Битрикс скорость сайта - раздел исключение

Функционал скорости сайта в Битриксе появился уже довольно давно и зарекомендовал себя как удобный инструмент для оценки скорости работы сайта. Но бывают проекты на которых не во всех разделах необходим замер скорости работы по той или иной причине.

Отключить замер скорости сайта в определенном разделе может потребоваться, например, когда раздел для внутреннего использования администраторами или функционал не для публичного использования. В общем причин может быть много. Для замера скорости сайта 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 страницы.

Данный код есть куда улучшать, например, можно не по количеству вхождений подстроки определять раздел, а при помощи регулярных выражений - так можно будет более гибко все настроить (поиск в начале строки, в конце и так далее), также для запрета в нескольких разделах можно создать массив исключений и искать по нему. В данном примере мы просто рассмотрели простейшее применение и реализацию.

 1933 Битрикс, Bitrix, Разработка, Трюки, Скорость сайта, PHP
24 ноября 2015
Команда BXCert

Наша команда разрабатывает портал BXCert, а также занимается разработкой сайтов на CMS 1С-Битрикс. Все участники являются сертифицированными специалистами Bitrix.

Возможно Вам будет интересно

Комментарии

pakhomoff 25 ноября 2015 в 18:48 / # / Ответить
Не совсем понятно где это может потребоваться? Вы пишите что у битрикса есть удобный инструмент замера скорости и...тут же его отключаете? Зачем?
Команда BXCert 26 ноября 2015 в 18:00 / # / Ответить
Все довольно просто. Например, у вас пользователи самостоятельно регистрируются на сайте и вам хочется для себя составить простой график по дате регистрации и по городам, тогда можно написать простой компонент с использованием Google Charts API, например, и выводить визуализированные данные на закрытой от пользователей странице...но этот компонент может работать длительное время (5-10 секунд запросто, если много пользователей), поэтому именно эту страницу можно исключить из статистики, т.е. замер скорости сайта средствами битрикса там не делать.
pakhomoff 26 ноября 2015 в 18:05 / # / Ответить
Ну ок. В принципе идея понятна. Спасибо!
Чтобы оставлять комментарии необходимо зарегистрироваться и пройти авторизацию.