Поисковая индексация комментариев

В этой статье мы расскажем про то, как реализуется индексация комментариев в плагинах для cms  и на обычных php сайтах.

Где и для чего сохраняются комментарии?

Хранение комментариев на серверах облачных платформ обусловлено особенностью их работы: загрузка виджета первоначально происходит с облачных серверов через установленный javascript код. Это позволяет установить виджет комментариев на любую html страницу  и получить автоматическую индексацию в Google без отображения html в коде страницы. Преимущество данного метода в том, что снижается нагрузка на сайт, т.к комментарии загружаются с облачного сервера, а недостаток в том, что без отображения html комментарии не будут проиндексированы Яндексом.

Индексация комментариев без вывода html

Для отображения html необходимо синхронизировать комментарии  в локальную БД, получив их через api и отображать html из базы.

Синхронизацию следует проводить как с целью индексации поисковыми системами, так и получения каких-либо данных комментаторов или простого бэкапа имеющегося контента. Такой функционал создает приличную нагрузку на облачные платформы, например, с момента основания нашего проекта( октябрь 2011 год) в базе данных было сохранено более 30 млн. комментариев. На некоторых сайтах ежедневно создается от 10 до 50 тыс комментариев в день, и в итоге все эти комментарии могут быть выгружены на сайты клиентов через api.  По этой причине многие сервисы вводят ограничение на кол-во вызовов api и делают эту опцию платной. В Cackle такая возможность уже включена в стоимость комментариев и мы не ограничиваем api по кол-ву запросов на получении комментариев. Вместо этого мы постоянно оптимизируем api и алгоритмы синхронизации, снижая нагрузку.

Существенным упрощением процесса интеграции виджетов на веб сайты клиентов является наличие плагинов для cms, библиотек для различных фреймворков. Если вы используете наш плагин для таких cms систем как Wordpress, Drupal, Bitrix, Dle, InstantCms, Opencart, Prestashop, то вам достаточно просто установить плагин и синхронизация там уже будет встроена.

Новый алгоритм синхронизации комментариев

В ходе постоянных консультаций с нашими клиентам и анализа запросов api, мы нашли возможность ускорить его работу. Средний запрос api по скорости  зависел от кол-ва комментариев на сайте, и на больших выборках (если на сайте более 100к комментариев) мог достигать 400-500мс, что в принципе является нормой, но при большом кол-ве комментариев на сайте может приводить к существенным задержкам. Нам удалось ускорить этот запрос примерно в 10 раз до 40-50мс, путем конкретизации канала в запросе, т.е тоже самое api 3.0 теперь необходимо запрашивать по-канально, добавляя параметр channel. В этом случае сам алгоритм синхронизации почти не изменился, за исключением того, что синхронизация теперь должна проходить не разом для всех комментариев, а отдельно для каждой страницы (поста). Более подробное описание алгоритма располагается в документации по синхронизации комментариев.

Общая библиотека для PHP

Несмотря на то, что процесс синхронизации описан в документации и возможен для реализации самостоятельно нашими клиентами, мы создали библиотеку для php которая позволяет быстро добавить функционал синхронизации на php сайт вне зависимости от используемой cms или фреймворка. Библиотека реализует новый по-канальный(по-страничный) алгоритм, который включает общий проход по всем постам и короткий проход по недавним постам, по которым могут еще появляться новые комментарии. Если на сайте большое кол-во постов, то синхронизация по кругу может затянуться и не успевать синхронизировать новые комментарии по свежим постам. Короткий проход как раз и решает эту задачу. Библиотека доступна для загрузки по ссылке. В readme описаны необходимые настройки для конфигурации и пример инициализации библиотеки.

Индексация комментариев в плагинах cms

Алгоритм синхронизации уже реализован в плагинах следующих cms: Wordpress, Drupal, Joomla, DLE, InstantCms, Bitrix. В большинстве случаев достаточно просто установить плагин и ввести данные для виджета: id и ключи api. Также обязательным условием является активация на хостинге следующих расширений php: curl - для запросов к api, pdo - для работы с БД в некоторых плагинах - DLE. Для этого достаточно обратиться к хостинг провайдеру или в случае собственного сервера активировать эти расширения в php.ini.

Плагины для cms постоянно обновляются. Новый алгоритм синхронизации пока внедрен только в Wordpress, но в ближайшее время будет внедрено и в другие плагины. Но это не отменяет то, что в этих плагинах уже сейчас уже есть механизм синхронизации, и индексация там работает.

Тестирование и поддержка решений

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

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

Поддержка решений осуществляется отделом технической поддержки Cackle на бесплатной основе. Мы не занимаемся внедрениями под ключ на платной основе. Поддержка осуществляется только для установленных плагинов cms и/или подкл. библиотеки на php. Поддержка обычно включает информирование по установке, помощь устранения ошибок, дебаг на сервере клиента в сложных случаях. Это означает, что

  1. если например у вас как-то некорректно работает наш плагин для cms или вы внедрили наше общее решение для php и у вас что-то не работает, то можете смело писать в саппорт и мы постараемся подсказать решение возможной проблемы, при необходимости провести дебаг на вашем сервере для ее решения

  2. Если вас не стандартная cms система(самописный php, ruby, nodejs, etc сайт), и вы не программист и хотите сделать синхронизацию, то вам необходимо сначала найти человека, который будет проводить интеграцию, и уже с ним мы и будем работать. Некоторые компании, в отличии от нас, делают такие интеграции под ключ, и потом клиенты даже не вкурсе как и где это решение подключить/отключить, т.е теряется контроль над своим сайтом. Мы против таких практик, и вместо этого предлагаем поддержку уже установленных решений.

Также существуют сторонние решения для интеграции Cackle: Ruby, NodeJs