Привет!
Я очень взволнован этой новой функцией. Я давно ждал такого решения, и первоначальные отзывы наших читателей на Tecnoblog были отличными — им нравится, что сообщество интегрировано.
Однако после реального тестирования я выявил несколько технических препятствий, которые нужно преодолеть, чтобы система комментариев ощущалась по-настоящему нативной и, что еще важнее, была устойчивой для сайтов с высоким трафиком.
Вот что я обнаружил на данный момент:
1. Производительность и нагрузка на сервер
После внедрения полного приложения нагрузка на наш сервер значительно возросла. Согласно данным Cloudflare, объем наших запросов увеличился в 10 раз. Вот несколько идей по оптимизации:
- Ленивая загрузка (Lazy Loading): Реализация ленивой загрузки для JS помогает значительно (я уже использую для этого обходной путь).
<script type="text/javascript">
DiscourseEmbed = {
discourseUrl: '<?php echo esc_url($discourse_url); ?>',
<?php if ($use_topic_id): ?>
// Режим ID: Тема сохранена в базе, защищена от изменений URL
topicId: <?php echo intval($topic_id); ?>,
<?php else: ?>
// Режим URL: Резервный вариант при сбое создания через API
discourseEmbedUrl: '<?php echo esc_url($permalink); ?>',
<?php endif; ?>
fullApp: true,
embedHeight: '800px',
};
(function() {
var container = document.getElementById('discourse-comments');
// Проверяем, поддерживает ли браузер IntersectionObserver
if ('IntersectionObserver' in window) {
var observer = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
// Когда div появляется на экране, загружаем скрипт
loadDiscourse();
observer.unobserve(entry.target);
}
});
}, { rootMargin: "1500px" }); // Загружаем за 1500px до появления div
observer.observe(container);
} else {
// Резервный вариант для старых браузеров
loadDiscourse();
}
function loadDiscourse() {
var d = document.createElement('script');
d.type = 'text/javascript';
d.async = true;
d.src = window.DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
}
})();
</script>
Здесь вы можете увидеть снижение количества запросов после внедрения ленивой загрузки (при этом некоторые части сайта все еще были закэшированы, поэтому это не окончательный результат):
-
Уменьшение объема данных: Можем ли мы сократить ресурсы, загружаемые внутри встраивания? Например, я заметил запросы к URL чата и проверки кредитов AI — необходимы ли они для режима встраивания?
-
Частота запросов: POST-запросы в реальном времени немного слишком агрессивны. Может быть, мы можем снизить частоту опроса для версии встраивания?
-
Кэширование: Улучшенное управление кэшем для встроенных тем для обработки скачков трафика.
2. Хаос в аналитике
В данный момент встраивание запускает скрипты Google Analytics/GTM. Это удваивает количество просмотров страниц (один запрос для поста, другой для iframe), что искажает наши данные. Было бы идеально, если бы система могла определять, что она находится внутри iframe, и автоматически отключать любые скрипты отслеживания (включая аналитику Discourse).
3. Проблема высоты iframe
Это, пожалуй, самое большое препятствие для UX. Если у поста нет комментариев, появляется странная пустая дыра. Если есть длинная ветка, iframe обрезается уже после первых 2–3 комментариев, вынуждая прокручивать «скролл внутри скролла», что очень плохо, особенно на мобильных устройствах.
Чтобы реально конкурировать с такими решениями, как Disqus, нам нужна динамическая высота (в зависимости от количества комментариев), а также кнопка «Читать далее», которая разворачивает ветку после определенного количества ответов.
4. Конфликты плагинов
Поскольку встраивание загружает все активные плагины, мы наблюдаем странное поведение. Например, «Google One Tap» появляется внутри поста блога. Когда пользователь входит в систему, iframe обновляется и перекидывает его на главную страницу сообщества вместо ветки комментариев. Возможность вручную отключать определенные плагины для режима встраивания была бы спасением.
5. Трение при входе в систему
Текущий процесс немного убивает конверсию: Пользователь нажимает «Войти» → Открывается новая вкладка → Происходит вход → Пользователь остается на главной странице сообщества. Вернувшись к посту блога, iframe все еще выглядит как неавторизованный, пока пользователь вручную не обновит всю страницу. Это запутанный цикл, который заставляет людей сдаваться и уходить, прежде чем они смогут прокомментировать.
Поскольку мы активировали новое встраивание, наши ежедневные регистрации выросли более чем в два раза, что отлично. Однако метрики вовлеченности не изменились. Более того, показатель DAU/MAU упал — у нас больше авторизованных пользователей, но они не взаимодействуют. Метрики, такие как «Ежедневные активные пользователи», «Новые участники» и «Публикации», не показали никакого роста.
Это доказывает, что люди хотят присоединиться к разговору, но они теряются в цикле входа в систему и бросают пост, так и не успев прокомментировать.
6. Мобильный интерфейс
На мобильных устройствах окно ответа занимает весь экран, поэтому вы теряете весь контекст разговора, на который отвечаете. Это кажется немного клаустрофобичным — если мы сможем сделать его более компактным, это будет огромным успехом.
Я очень хочу сделать эту систему системой по умолчанию для Tecnoblog (а также для другого сайта, которым мы владеем). Дайте знать, если хотите углубиться в любой из этих пунктов!



