Содержание
- 1 Битрикс. Секрет успеха
- 2 Задаем теги для каждой страницы
- 3 Работаем с изображениями
- 4 Создаем Sitemap.xml и Robots.txt
- 5 Оптимизируем ссылки
- 6 Повышаем скорость загрузки
- 7 Анализируем статистику
- 8 Выводы
- 9 Цели статьи
- 10 Введение
- 11 Изменение стандартных настроек BitrixVM
- 12 Оптимизация настроек Mysql
- 13 Оптимизация настроек apache в bitrixenv
- 14 Оптимизация php под bitrix
- 15 Настройка nginx для сайта bitrix
- 16 Заключение
- 17 Онлайн курс по Linux
<font>Оглавление</font>
Мы не раз писали о поисковой оптимизации и ее специфике. Тема, действительно, сложная и обширная. Сегодня уделим внимание тому, как продвинуть ресурс, созданный на 1C-Битрикс. А начнем статью с преимуществ движка.
Битрикс. Секрет успеха
Несмотря на то, что Битрикс является платным движком, он необыкновенно востребован. Как правило, его используют для реализации сложных проектов. Например, если речь идет об интернет-магазине, то это, конечно, Битрикс. С одной стороны, для работы с CMS нужны серьезные знания, с другой, — есть готовые шаблоны, из которых может собрать сайт даже новичок.
За что так любят Bitrix?
- Возможность интеграции с 1C, существенно упрощающая ведение бухгалтерского учета.
- Большой выбор кроссплатформенных шаблонов
- Способность выдерживать большой наплыв посетителей, стабильность
- Защищенность от взлома
- Удобная панель администрирования
Возможности движка позволяют разместить в интернет-магазине порядка 100 тысяч товаров. С развитием бизнеса у компании могут появиться другие сайты. И всеми проектами можно будет управлять из одной админки.
Отдельно отметим высокий уровень безопасности, предоставляемый CMS. Движок располагает встроенным антивирусом, позволяет сделать уровни доступа для разных пользователей, контролирует продолжительность каждой сессии, анализирует PHP-скрипты. Кроме того, система способна выявить вредоносную активность, в том числе dDOS.
Задаем теги для каждой страницы
Начиная работу с SEO, уделяем внимание каждой странице — прописываем три тега — Title, Description и Keywords. Для этого заходим в раздел “Управление”.
Тайтл — название страницы, которое будет показываться в браузере.
Дескрипшен — краткое описание содержимого страницы.
Кейвордс — ключевые слова, использованные в тексте. Считается, что прописывать последние необязательно, т.к. поисковики перестали обращать внимание на этот тег.
Для того, чтобы роботы лучше индексировали страницу, тайтл и дескрипшн тоже наполняют ключевыми словами. Но делать это нужно очень изящно, иначе вы столкнетесь с переспамом, а это будет негативно расценено поисковиками.
Более подробно о специфике заполнения каждого тега читайте в наших материалах о Title, Description и Keywords.
Работаем с изображениями
Оба тега могут быть прописаны как вручную, так и автоматически при помощи шаблона.
На заполнении тегов работа с изображениями не заканчивается. Важным фактором в SEO является скорость загрузки страниц сайта. Чтобы ее повысить, необходимо уменьшить вес изображений. Сделать это без потери качества можно с помощью специального модуля сжатия изображений под Google Page Speed.
Создаем Sitemap.xml и Robots.txt
Оба файла играют весомую роль в СЕО продвижение сайта на Bitrix или на любом другом движке.
Sitemap.xml — карта сайта, сравнимая с содержанием книги. Файл призван помочь пользователям и роботам быстрее найти необходимый раздел. Здесь можно указать приоритет страниц, частоту их обновления. Не стоит рассчитывать, что все прописанные действия будут строго выполняться роботами. Для них эти команды носят только рекомендательный характер. Создать карту в 1с-Битрикс можно через админку. Переходим из Поисковой оптимизации в Настройку Sitemap.xml. Лучше всего, если адрес карты будет выглядеть следующим образом http://www.название веб-ресурса.ru/sitemap.xml. Теперь выбираем “Добавить правило в robots.txt после генерации”.
Затем через раздел “Файлы” отмечаем, что именно включим в карту сайта. Здесь реализована возможность выбирать именно разделы, а не каждую страницу, все будет сгенерировано автоматически с включением страниц из каждого отмеченного раздела.
Robots.txt — файл, который покажет роботам элементы, доступные для индексации. Создать его также можно в разделе “Поисковая оптимизация”. Для формирования базового варианта не потребуется особых знаний. Просто используйте кнопки “Стартовый набор” и “Карта сайта”. Полученный файл отражает структуру CMS. Для роботов по умолчанию закрыт ряд системных элементов, например, поиск.Образец кода:
User-agent: *Disallow: /bitrix/Disallow: /search/Disallow: /auth/Disallow: /auth.phpDisallow: /*?print=Disallow: /*&print=Disallow: /*register=yesDisallow: /*forgot_password=yesDisallow: /*change_password=yesDisallow: /*login=yesDisallow: /*logout=yesDisallow: /*auth=yesDisallow: /*backurl=*Disallow: /*BACKURL=*Disallow: /*back_url=*Disallow: /*BACK_URL=*
Disallow: /temp_index.phpDisallow: /access.logDisallow: /include/Disallow: /upload/Disallow: /cgi-bin/Host: название сайтаSitemap: domen/sitemap.xml
CMS позволяет настроить индексацию для Google и Яндекса по отдельности. Сделать это можно в соответствующих вкладках. В итоге увидеть получившийся код можно в разделе “Редактировать”. Здесь при необходимости можно внести изменения в файл вручную.
Оптимизируем ссылки
И снова одновременно работаем на два фронта: стараемся угодить и пользователям, и роботам. Изначально URL представляет собой набор букв и знаков, которые не воспринимаются пользователями и не дают им никакой информации. Поэтому меняем их на человекопонятные урлы, которые помогут пользователю лучше ориентироваться на сайте.
Более подробно о значимости настройки user friendly URL читайте в нашей статье “Человекопонятный URL. Стоит ли тратить на него время”.
Чтобы добиться лучших результатов при ранжировании, рекомендуется добавлять к ссылке на конечную страницу, например, карточку товара, суффикс .html. А ссылку на страницы разделов или подразделов стоит завершать слэшем ( /). Это делается для того, чтобы роботы могли лучше понимать структуру сайта и сканировать содержимое страниц.
Повышаем скорость загрузки
Чтобы задействовать эту опцию, перейдите в модуль “Автокеширование” и выберите Управляемое кеширование. Это позволяет автоматически обновляться кешу компонентов, если были внесены какие-то изменения в базу данных.
Чтобы справиться с проблемой, разработчики Битрикса предлагают технологию “Композитный сайт”, когда страница разбивается на статическую и динамическую часть. Статический блок загружается моментально, а динамический кешируется в браузере пользователя.
Анализируем статистику
SEO модуль от Битрикса позволяет не только выстраивать кампанию по продвижению сайта, но и отслеживать результаты. Это можно сделать с помощью инструментов “Переходы”, “Ссылающиеся ссылки”, “Индексация”.
Выводы
Чек-лист для первичной оптимизации сайта
- прокачиваем страницы
- работаем с изображениями
- создаем Sitemap.xml
- генерируем Robots.txt
- меняем урлы на понятные человеку
- кешируем сайт
- анализируем трафик и ссылки
Познакомиться с основными параметрами SEO можно в нашей статье “Чек лист для SEO. Как не упустить важное”. Об особенностях поискового продвижения на Джумле читайте в материале “Как оптимизировать сайт на Joomla!”
В очередной раз пришлось повозиться с настройкой Bitrixenv и сайта на нем. В какой-то момент bitrix сайт стал сыпать 500-е ошибки на некоторые операции. По логам было видно, что не хватает памяти для работы некоторых скриптов, хотя раньше хватало. Пришлось заняться расследованием и оптимизацией потребления памяти bitrix сайтом.
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужно пройти .
Цели статьи
- Разобраться с потреблением памяти на сервере с bitrixenv — выяснить, кто больше всех потребляет памяти и приводит к нестабильной работе сервера.
- Разобраться, где хранятся настройки различных приложений в bitrixenv.
- Выбрать оптимальные параметры для apache, mysql, php, nginx для равномерного распределения памяти.
Введение
Вопрос с потреблением памяти mysql при работе в bitrixenv я уже разбирал отдельно некоторое время назад — где хранятся настройки mysql. Рекомендую с ней ознакомиться, так как там информация напрямую относящаяся к текущей теме оптимизации использования памяти сайта на bitrix при работе в bitrixenv.
Разработчики bitrixenv упростили работу системных администраторов по настройке сервера, внедрив службу bvat, которая автоматически при запуске сервера подбирает оптимальные параметры следующих служб:
- mysql
- apache
- nginx
- php
Настройки будут зависеть от количества доступной оперативной памяти. В целом, это неплохой шаг, который упрощает начальную настройку сервера. Чаще всего конфигурация служб получается адекватной и подохдящей для типовых сайтов.
В моем случае стандартные настройки перестали подходить. На сервере время от времени появлялась нехватка оперативной памяти. Приходил OOM Killer (OOM — Out of memory) и грохал mysql сервер, так как он потреблял больше всего оперативной памяти. Какое-то время все работало нормально, потом провторялось то же самое.
Мое внимание привлекли события из мониторинга Zabbix, такие как Lack of available memory on server. Посмотрел график и все сразу стало ясно, еще до подключения к серверу.
Зашел на сервер, посмотрел системный лог. Увидел там вот это:
kernel: Out of memory: Kill process 7382 (mysqld) score 431 or sacrifice child kernel: Killed process 7382 (mysqld) total-vm:3967860kB, anon-rss:1942144kB, file-rss:0kB, shmem-rss:0kB systemd: mysqld.service: main process exited, code=killed, status=9/KILL systemd: Unit mysqld.service entered failed state. systemd: mysqld.service failed. systemd: mysqld.service holdoff time over, scheduling restart. systemd: Stopped MySQL Server. systemd: Starting MySQL Server... systemd: Started MySQL Server.
Первое, что я сделал — увеличил swap раздел до объема всей оперативной памяти. До этого он был размером в 1G. Это сразу помогло и предотвратило регулярный приход OOM Killer. А я стал спокойно разбираться, что делать дальше.
План дальнейшей настройки сервера для стабильной работы сайта на bitrix следующий:
- Определяем основных потребителей оперативной памяти.
- Распределяем всю свободную память между ними.
- Убеждаемся, что под нагрузкой все работает корректно, всем хватает памяти, OOM Killer не приходит.
Изменение стандартных настроек BitrixVM
Как я уже говорил, служба bvat автоматически регулирует некоторые настройки стандартных служб bitrixenv. Чтобы применять наши настройки, нужно их указывать в отдельных конфигурационных файлах.
- MySQL — /etc/mysql/conf.d/z_bx_custom.cnf
- Apache — /etc/httpd/bx/custom/z_bx_custom.conf
- nginx — /etc/nginx/bx/conf/z_bx_custom.conf
- PHP — /etc/php.d/z_bx_custom.ini
А вот общий список всех основных конфигурационных файлов bitrixenv:
- /etc/php.d/bitrixenv.ini — основные настройки php
- /etc/httpd/bx/conf/prefork.conf — параметры модуля Apache — MPM prefork;
- /etc/php.d/z_bx_custom.ini — пользовательские настройки PHP;
- /etc/httpd/bx/custom/z_bx_custom.conf — пользовательские настройки Apache;
- /etc/mysql/conf.d/z_bx_custom.cnf — пользовательские настройки MySQL;
- /etc/nginx/bx/conf/z_bx_custom.conf -пользовательские настройки nginx;
- /etc/nginx/bx/conf/push-im_settings.conf — настройки nginx-push-stream-module.
Оптимизация настроек Mysql
На подопытном сервере имеется 12 Гб оперативной памяти. Я решил половину этой памяти отдать под mysql. Приступим к тюнингу конфигурации mysql. В общем случае достаточно будет одного параметра, который в основном отвечает за потребление памяти:
innodb_buffer_pool_size = 4G
В моем случае этого было недостаточно. Я решил более внимательно подойти к настройке mysql. Нашел неплохой инструмент — MySQLTuner, который анализируя работу mysql, выдает некоторые рекомендации по настройке. Сам я не разбираюсь в тонкой настройке mysql, поэтому решил довериться утилите. Судя по отзывам, она неплоха и доверять ей можно, если сам не разбираешься в теме. Забегая вперед скажу, что с помощью этого тюнера я настроил mysql на стабильную работу с фиксированным потребелением памяти. Проблем с этим сервером с тех пор не возникало.
Итак, копируем себе на сервер сам скрипт:
# wget http://mysqltuner.pl/ -O mysqltuner.pl
Запускаем его:
# perl mysqltuner.pl
Для того, чтобы рекомендации получились более эффективные, служба mysql должна поработать у вас несколько дней. Если накануне перезапускали ее, а я это делал, то рекомендую через несколько дней зайти и еще раз прогнать тесты. Будут новые советы по конфигу.
Для оптимизации потребления памяти, достаточно будет прогнать скрипт в любое время. Я вам рекомендую внимательно изучить его возможности. Подробно на них я сейчас не буду останавливаться, а рассмотрю только то, что касается памяти. Помимо прочего, вы увидите следующую информацию.
У меня уже все оптимизировано под потребленее не более примерно 6 Гб памяти. Расскажу, какие параметры за это отвечают. Как уже сказал ранее, это параметр innodb_buffer_pool_size. В общем случае для mysql сревера рекомендуют указывать этот параметр равный 80% доступной памяти сервера. Но это в том случае, если у вас кроме mysql на этом сервере ничего не крутится. А у нас там полно других служб, поэтому нам такой совет не подходит.
Дальше нам нужно выяснить, сколько памяти занимает thread (процесс, который порождает соединение) и в соотвествии с этим выставить предел числа подключений. Размер thread равен сумме следующих парметров — read_buffer_size + sort_buffer_size + join_buffer_size.
Параметр read_buffer_size установлен по-умолчанию в 128 КБ. Я его не стал трогать. Остальные два я изначально выставил по рекомендациям mysqltuner, а значение max_connections, которое отвечает за максимальное количество подключений, выставил такое, чтобы сумма трех буферов, помноженная на количество подключений не превышала 2 Гб памяти. Сервер немного поработал в таком режиме и выяснилось, что выставленных подключений не хватает. Тогда я снизил join_buffer_size до 18 Мб, а количество подключений увеличил. В итоге остановился на таких настройках.
innodb_buffer_pool_size = 4G sort_buffer_size = 18M join_buffer_size = 18M max_connections = 70
С такими настройками максимальное потребление памяти службой mysql не будет превышать 6.8 Гб, о чем подсказывает вывод mysqltuner. Конкретно моему сайту 70 подключений к mysql достаточно. До этого поставил 50, были сообщения о нехватке подключений. На своем сервере выбирайте параметры сами, у меня не копируйте.
[OK] Maximum possible memory usage: 6.8G (58.69% of installed RAM)
На практике так и получилось. Через несколько дней я зашел и прогнал еще раз проверку, которая показала, что реально использование памяти не вышло за эти пределы. Плюс, подредактировал некоторые параметры.
Советы по изменению параметров даются в заключительной секции mysqltuner — Variables to adjust. Не буду приводить свои рекомендации, так как они будут актуальны только для конкретного сервера. Советую посмотреть все рекомендации, почитать описание параметров и попробовать применить их у себя. Слепо не надо менять то, что там советуют.
Приведу список основных параметров mysql, которые влияют на производительность и на которые надо в первую очередь обращать внимание:
- max_connections
- log_bin
- table_open_cache_size
- table_definitions_cache_size
- open_files_limit
- innodb_buffer_pool_size
- innodb_log_file_size
- innodb_flush_log_at_trx_commin
- innodb_flush_method=O_DIRECT
Список взял отсюда. Очень полезная статья, рекомендую.
Оптимизация настроек apache в bitrixenv
Дальше переходим ко второму основному потребителю оперативной памяти на сервере с сайтом на bitrix — apache. Ему, как и для mysql, служба bvat автоматически выставляет некоторые настройки. Она хранятся в файле /etc/httpd/bx/conf/prefork.conf. Нас будут интересовать настройки, касающиеся количества запущенных процессов.
Чтобы узнать, количество запущенных процессов httpd, обслуживающих работу bitrix сайта, введите в консоли сервера команду:
# ps ax | grep httpd | wc -l
Вы получите число, на 2 больше, чем указано в приведенном конфиге, в параметрах модуля mpm_prefork. В моем случае bvat выставлял максимально возможное количество процессов httpd равное 60, но для меня это было слишком много, сервер не тянул такое количество процессов. Я его уменьшил до 30.
Как вы понимаете, в зависимости от bitrix сайта, один процесс httpd будет использовать разное количество памяти, поэтому автоматически невозможно выставить этот параметр корректно для всех сайтов. В данном случае, дефолтный параметр мне не подошел, поэтому я создал свой файл настроек httpd — /etc/httpd/bx/custom/z_bx_custom.conf.
Привожу скриншотом, потому что движок сайта проглатывает все строки в угловых скобках. Не получается выложить полностью конфиг в текстовом виде. В общем случае, вам надо посмотреть, сколько у вас занимает памяти один процесс httpd и рассчитать максимальное количество процессов, которое потянет ваш сервер.
Посмотреть, сколькло памяти занимает один процесс httpd можно в htop или с помощью команды:
# ps -o vsz,rss,cmd --pid $(pgrep httpd)
Будет один основной процесс, который занимает больше всего памяти и дальше его форки, которые потребляют примерно одинаково. На них и ориентируйтесь. У меня основной процесс потребляет 500 Мб и 30 форков по 100 Мб. В сумме получается 3.5 Гб.
Итого в пике у меня 6.5 Гб использует mysql и 3.5 Гб использует httpd, итого 10 Гб из доступных 12-ти. На практике, свободной памяти обычно больше, чем 2 Гб, так как mysql чаще всего потребляет ниже максимального предела.
Оптимизация php под bitrix
Из настроек php я бы обратил внимание на следующие параметры:
- memory_limit — максимальное количетсво памяти на выполнение php скрипта;
- sendmail_path — управляет параметрами отправки сообщений, хотя к теме текущей статьи и не имеет отношение;
- post_max_size — максимальный размер данных для всего POST запроса;
- upload_max_filesize — максимальный размер файла для загрузки через POST запрос;
- max_execution_time — максимальное время в секундах, в течение которого скрипт должен полностью загрузиться.
Так или иначе, эти параметры, кроме sendmail, влияют на производительнойсть сервера и потребление памяти. Не ставьте эти значения слишком большими без особой надобности. Я бы для начала выставил в 256 Мб и увеличивал по мере необходимости. Да, 256 Мб это и так очень много, но сайт на bitrix требует высоких значений этих параметров для корректной работы. 256 мб это общая рекомендация для дефолтных значений.
Свои параметры php вы можете размещать в отдельном конфиге, который не будет перетираться bitrixenv — /etc/php.d/z_bx_custom.ini. После изменения настроек надо перезапускать apache для применения.
Настройка nginx для сайта bitrix
В самом nginx в bitrixenv настраивать для производительности особо нечего. Он работает в качестве proxy сервера для apache. С помощью proxy_pass он перенаправляет все динамические запросы, а сам отдает только статику. В таком режиме работы он потребляет минимум ресурсов и оптимизировать в нем нечего. Если вам все же интересно разобраться в настройках nginx, то читайте мою отдельную подробную статью.
Отдельной настройки требует только модуль Push and Pull, если он у вас используется. Его конфигурация располагается в файле /etc/nginx/bx/conf/push-im_settings.conf. В контексте данной статьи нас интересует только параметр push_stream_shared_memory_size, который отвечает за использование оперативной памяти.
В принципе, дефолтного значения 256 Мб обычно хватает, хотя по сути это небольшие цифры. Но имейте ввиду, что если свободной памяти совсем нет, то можно подрезать этот параметр.
Заключение
После оптимизации всех указанных выше параметров в bitrixenv, потребление памяти сервером стабилизировалось. Bitrix сайт стал работать ровно с предсказуемой производительностью без неожиданных тормозов и падений.
На этом у меня все по теме оптимизации настроек сервера под bitrix. Система интересная и многогранная. Всегда любопытно заглянуть под капот bitrixenv. Как по мне, сделано неплохо, хотя и доставляет хлопот при разборе каких-то иницидентов.
В целом считаю, что в общем случае, все сделано удобно и функционально для быстрого запуска bitrix сайта. Справится даже неподготовленный человек, а конкретно какой-нибудь программист. Он бы запарился настраивать эту связку самостоятельно, а тут все из коробки работает. Но вот если возникают проблемы, то разобраться бывает не всегда просто.
Следующим этапом жду появление docker сборок с bitrixenv внутри. Либо один общий образ, либо набор через docker-compose. Это было бы логичное продолжение развития в свете популярности контейнеров и микросервисов.
Онлайн курс по Linux
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Что даст вам этот курс:
- Знание архитектуры Linux.
- Освоение современных методов и инструментов анализа и обработки данных.
- Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
- Владение основными рабочими инструментами системного администратора.
- Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
- Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по .
Помогла статья? Есть возможность отблагодарить автора
Друзья, любите ли вы настройку целей так как «люблю» её я? Для меня это дело всегда непростое и муторное, в интернетах почти нет информации об этом, а тема, на мой взгляд, важная. Сегодня мой пост посвящается настройке целей сайта на Битриксе, если пост понравится, то расскажу про другие CMS1.1. На кой вообще нужны цели на сайте? Цели необходимо настроить, чтобы не просто смотреть на график посещаемости, а понимать какой канал является эффективным, а какой нет. Приведу цитату из справки Google: “Цели являются отличным индикатором эффективности работы вашего сайта или приложения. Целью может быть любое действие, в котором вы заинтересованы, называемое конверсией. Вот некоторые примеры целей: покупка (для сайта электронной торговли), прохождение уровня игры (для мобильного игрового приложения), отправка контактной информации (для сайта по привлечению клиентов). Определение целей – важнейший компонент планирования аналитической оценки. Правильно выбранные цели позволяют получать важную информацию, такую как количество конверсий и коэффициент конверсии для сайта или приложения. Без этих сведений практически невозможно оценить эффективность онлайн-бизнеса и маркетинговых кампаний.” support.google.com/analytics/answer/1012040?hl=ru Настраивайте только те цели, которые действительно будете анализировать и отслеживать. Например, регистрация, отправка контактных данных, запрос обратного звонка и другие действия, которые потенциально ведут к продаже можно считать целями. Цель, которая срабатывает в момент просмотра посетителем двух страницы, либо пребывании на сайте более трёх минут, на самом деле целями не являются.«1.2. Какими бываю цели?Основные цели — покупка товара — отправка контактных данных — звонокВспомогательные цели -просмотр карточки товара -просмотр контактов -просмотр 3 страниц1.2. Нууу… у меня есть счётчики, зачем мне ещё цели? Несмотря на то, что у вас настроены счетчики статистики, они не смогут отследить все. Сервисы отслеживают в основном просмотры страниц. А самое вкусное остаётся за бортом, например клики, отправки форм, и другие более сложные события (например, “регистрация на сайте, подтвержденная по е-майл”) Итак, на рисунке мы видим, что “просмотры страниц” сразу отправляются в аналитику, и тут все в порядке “клики, отправки форм” можно отследить с помощью Google Tag Manager. На практике не всегда просто настроить отслеживание валидной отправки формы. “сложные события” — это то, что не удается отследить с помощью предыдущих средств. Для их отслеживания в код сайта в нужные места внедряются небольшие коды java script, которые и отправляют необходимую информацию в аналитику. Хочется отметить, что для каждой системы, которой необходима информация о свершении цели, необходимо вставить свою команду в код. И тут нас ждёт опасность: после того как уже все настроено, отлажено и проверено появляется необходимость отправлять данные куда-нибудь еще. И чтобы это сделать придется пройтись везде, где мы уже вставляли коды. Другими словами, сделать всю работу два раза. Именно в этом случае нам на помощь приходит Google Tag Manager.1.3. Зачем нужен Google Tag Manager? Установка только одного кода, все остальные МОЖНО НУЖНО установить через него. — Позволяет отслеживать клики, клики по ссылкам, отправку форма и др. — Позволяет создавать собственные правила, чтобы вызывать нужные коды в нужное время. — Позволяет отправлять данные о достижении целей куда угодно. Благодаря Tag Manager вырисовывается более удобная и правильная схема настройки целей: Этот способ позволяет масштабировать проделанную вами работу на любые системы, в которых нужны данные о достижении ваших целей.1.3.1. Как правильно установить Google Tag Manager? Единственно правильный путь — установка после открывающего тега body и не включая его ни в какие другие блоки. Тогда код будет срабатывать сразу. А все что нужно активировать по окончании сборки модели DOM или когда страница загрузится полностью можно легко настраивать правилами Tag Manager1.3.2. Что обычно устанавливают через GTM? Все сторонние коды, например: — Коды счетчиков GA, YM — Доп сервисы UpToCall, Jivosite и т.п. — Коды ретаргетинга для соцсетей. и тд и тп1.4. Какой код надо вставить на сайт для отслеживания достижения целей? Команды, которые нужно вставить очень просты2. Настройка целей в Битрикс Честно, я бы все формы на сайте реализовал через «навесные сервисы», проблем было бы меньше. На нашем сайте стоит обработчик JotForm adverbs.ru/feedback и я вслепую могу настроить все цели. На CMS же все формы всегда реализованы по-разному и иногда, простите, не через то место 🙂 Здесь я постараюсь по шагам описать процесс настройки нескольких целей на примере реального проекта. Сразу скажу, что я не являюсь программистом на Битрикс. Если в моих словах ниже будут ошибки в терминологии или предложенных вариантах решения просьба не закидывать меня помидорами, а подсказать или поправить в комментариях. Буду мегаблагодарен 🙂2.1. Определимся со списком целей Прежде чем приступать к настройке целей необходимо определиться с самими целями. Не поленитесь и составьте список целей с их названием, описанием, ссылками, скриншотами и комментариями. Уверяю через месяц вы уже не вспомните что и зачем делали. После нескольких десятков итераций наш файл целей выглядит так: Забегая вперед скажу, что Google Tag Manager позволяет отслеживать много разных событий без правки кода сайта. Однако на практике все таки много целей приходится настраивать, добавляя дополнительные коды в исходный код сайта.2.2. Куда в битрикс вставлять код? На каждом сайте и в каждой CMS это придется делать в разных местах. Если вы ничего не понимаете в программировании, то вам точно нужен программист. Более того скажу, что даже для любого сайта, написанного на Битрикс, скорее всего вам придется вставлять коды в разные места. И даже для разных форм одного и того же сайта это будут различны места, особенно если над сайтом колдовали и шаманили несколько программистов в разное время 🙂 Так приступим же, друзья, к практике:-) Разбирать будем на примере “живого” проекта a-tria.ru. Цели, описанные в таблице выше, как раз для него. Входим в админку сайта. 2.3. Настройка цели “Заказать звонок” 2.3.1. Вставка кода цели “Заказать звонок” Цель должна срабатывать НЕ при клике на кнопку, а при успешной отправке данных формы. Обычно, если какая то часть сайта представляет собой компонент, то при наведении на нее курсора мыши появляется всплывающее меню. Как на картинке ниже. Но при наведении на форму заказа звонка ничего не появляется, значит можно предположить, что форма каким-то образом “зашита” в шаблон сайта. Открываем для редактирования шаблон сайта. Находим в нем текст “Заказать обратный звонок” И видим, что ссылка открывает страницу по адресу /modal-forms/call-back/ Ну что ж, заглянем туда Здесь мы видим что в шаблон этой страницы включен компонент z-labs:ajax.call_order Его можно найти вот по этому пути: /bitrix/components/z-labs/ajax.call_order Но то, что нам нужно нашлось в шаблоне этого компонента чуть глубже, вот тут: /bitrix/components/z-labs/ajax.call_order/templates/call-back/template.php После просмотра файла было найдено место, где выводится сообщение об успешной отправке формы. Рядом с ним мы и вставили код, который отправляет данные о свершении целевого действия:yaCounterXXXXXXXX.reachGoal(‘forms_zvonok’);, где XXXXXXXX- номер вашего счетчика Яндекс метрики forms_zvonok — идентификатор цели в вашей Яндекс метрике. Более подробная информация о передаче информации о достижении цели в Яндекс метрику: yandex.ru/support/metrika/objects/reachgoal.xml Более подробная информация об отслеживании событий в Google Analytics: developers.google.com/analytics/devguides/collection/analyticsjs/events?hl=ru2.3.2. Настройка цели “Заказать звонок” в Google Analytics В Google Analytics переходим во вкладку “Администратор” → “Цели” — Указываем, что цель будет “Специальная”. — Указываем название: “Обратный звонок” и тип цели “Событие”. — Указываем подробные сведения о цели. Категория “forms”, Действие: “zvonok”2.3.3. Настройка цели “Заказать звонок” в Яндекс метрике В яндекс метрике процесс настройки цели не менее простой. Заходим в раздел “Настрока” → “Цели” Указываем “Название”: “Обратный звонок”, Тип условия: “JavaScript событие”, идентификатор цели: “forms_zvonok”2.4. Настройка цели “Форма участвовать в акции” 2.4.1. Вставка кода цели “Форма участвовать в акции” Редактируем шаблон Текст “Участвовать в акции” нашли, но тут нет ссылок как в прошлый раз. Возможно нажатие обрабатывается подключаемым скриптом. Посмотрим, что подключается к этому файлу: Помимо стандартных скриптов, подключается какой-то script.js Здесь мы находим определение функции, которая будет срабатывать при клике на элемент с классам “callbutton”. Именно этот класс установлен на нужной нам кнопке. Ниже видим код отвечающий за отправку сообщения. Вставляем код, который отправляет данные о достижении цели.2.4.2. Настройка цели “Форма участвовать в акции” в Google Analytics и Яндекс метрике Аналогичным образом добавляем цели в Яндекс и Гугл. В Яндекс метрике идентификатор цели “forms_akciya”, в гугл аналитике событие с идентификаторами “forms”, “akciya” 2.5. Как понять что код отправляет данные? Думаю, что любой программист скажет вам, что невозможно писать код, если у вас нет средств отладки. Далеко не все знают про это, но средства отладки есть и здесь.2.5.1. Отладка в Яндекс.Метрике Для того, чтобы увидеть отправляются ли данные в Яндекс.Метрику вам необходимо в адресной строке браузера ввести адрес сайта, на котором вы настраиваете цели и добавить параметр отладки: www.site.ru/?_ym_debug=1 Открыть инспектор кода, вкладку “Console”. Когда вы совершите на сайте целевое действие, то увидите сообщения о том что данные отправляются.2.5.2. Отладка в Google Analytics В Google Analytics немного иной способ проверить отправляются ли данные в аналитику. Для этого есть отчеты в “режиме реального времени”—> “События” Просматривая этот отчет, мы практически в ту же секунду увидим визуальное отображение при совершении целевого действия на сайте. Если его нет, значит что-то не так.2.5.3. Отладка в Google Tag Manager Невероятно, но факт, в GTM также есть система отладки, причем достаточно неплохая. В интерфейсе рядом с кнопкой “Опубликовать” жмем на стрелочку. В открывшемся меню выбираем “Предварительный просмотр и отладка”. После перехода в режим отладки, в том же браузере нужно открыть сайт, для которого вы настраиваете цели. В этом же окне откроется отладочная панель GTM Здесь вы увидите все события, которые фиксирует Google Tag Manager, а также какие теги были активированы на эти действия.3. Вместо послесловия… Мы разобрались с общей правильной схемой настройки целей и разобрали по шагам пример настройки двух целей реального проекта. Напоследок хочу дать несколько советов: — Делайте все постепенно, после каждого шага проверяя, что все сделано правильно и работает. — Идентификаторы для целей гугл и яндекс делайте одинаковые, с идентичным написанием. Если идентификатор для яндекс “forms_zvonok”, то для гугл идентификаторы должны быть “forms”, “zvonok”, иначе это приведет к путаннице. — Давайте понятные названия для целей, т.е. названия должны быть такие, чтобы любой человек посмотрев на них мог вам сказать что это за цели. Например, если цель срабатывает при отправке формы “заказать звонок”, то пусть название будет “Форма — Заказать звонок”. Если же цель срабатывает при нажатии на кнопку “Заказать звонок”, и не важно отправил он форму или нет, то назовите цель “Кнопка — Заказать звонок”. Либо придумайте любой другой понятный принцип именования. — Используйте только латинские маленькие буквы и знак подчеркивания в названии идентификаторов. Так будет меньше шансов ошибиться в написании и вы не потратите лишние пару часов на поиск багов. — Обязательно запишите все что вы сделали, например в таблицу настройки целей — Сначала лучше сделать меньше, но чтобы это четко работало, чем много, но работающее через раз и непонятно как. PS: буду благодарен за любые комментарии 🙂Используемые источники:
- https://stebnev-studio.ru/blog/kak-nastroit-seo-dlya-sayta-na-bitrix/
- https://serveradmin.ru/bitrixenv-optimizacziya-nastroek-servera-pod-sajt-na-bitrix/
- https://habr.com/post/300810/