Я использую prerender.io для предоставления поисковым роботам версии сайта с «приложением/JS» (мой экземпляр обслуживает роботов JS-версию через скрытую настройку).
Это работает хорошо, но, похоже, Discourse может подпадать под эту категорию…
Однако некоторые веб-страницы используют собственные сценарии загрузки или постоянную опросную проверку, которые могут запутать логику Prerender; в результате он не может принять решение о готовности страницы.
При первом обращении Prerender к любому URL-адресу Discourse происходит тайм-аут (20 секунд, установленные Prerender).
Страница отображается корректно, но Prerender.io не понимает, что страница полностью загружена, поэтому он «зависает» в ожидании рендеринга страницы до истечения 20 секунд, после чего обслуживает HTML-версию.
Если робот запрашивает страницу повторно, она будет предоставлена за 1 секунду (плюс-минус), так как в кэше уже есть HTML-версия этого URL.
…но это непрактично, поскольку существует тысячи URL-адресов, и ожидание по 20 секунд для каждого из них (при первом обращении) не сработает.
Поэтому мне нужно добавить следующее сразу после тега \u003chead\u003e (и установить переменную в true, когда страница полностью загрузится):
\u003cscript\u003e window.prerenderReady = false; \u003c/script\u003e
Я бы хотел, чтобы это работало на всем сайте — надеюсь, это упростит задачу.
Не совсем уверен, что именно это потребует, но если я ошибаюсь, пожалуйста, дайте знать — $300? $400?