Создание статического HTML-кода с созданного на стороне клиента JavaScript-сайта

Я генерирую весь сайт, используя только index.html с JS-скриптами.

JS создает HTML-контент на основе данных JSON, полученных через API-интерфейс на стороне сервера. Это отлично работает на стороне клиента и быстро и быстро загружает скорость и взаимодействие с сайтом, но есть загвоздка... когда искатель приходит, чтобы индексировать страницу, он увидит пустую страницу.

Очевидным решением является предоставление карты сайта XML со статическими версиями всех страниц. Проблема в том, что... как создавать статические версии каждой страницы, когда они создаются только на стороне клиента, а вся логика и шаблоны являются клиентскими?

Это не новая проблема... Я уверен, что кто-то, кто генерирует страницы с динамической клиентской стороны, попал в эту проблему и решил это, но я думал, что попрошу сообщество разработчиков перед тем, как погрузиться и попытаться решить эту проблему.

1 ответ

Мне удалось создать статические страницы с выхода на стороне клиента с помощью PhantomJS и захватить вывод HTML после страницы, и все JS закончили загрузку/выполнение. Этот метод медленнее, чем мне хотелось бы, и вряд ли он будет хорошо масштабироваться, но это единственный вариант, о котором я могу думать до сих пор.

Сайт уже получает более 10 000 просмотров страниц в день с более чем 8 000 уникальных посетителей, поэтому страницы обновляются регулярно, когда создаются новые комментарии/сообщения, а затем эти изменения добавляются в очередь, которая получает процесс на отдельном сервере для создания статических страниц с Phantom.

Единственный способ, которым я могу это сделать, - создать процесс Node.js, который использует ту же библиотеку jsRender и создает HTML-вывод из файлов шаблонов на основе некоторых данных, но это потребовало бы много времени для установки и не будет генерировать тот же самый результат, который создает динамический сайт. Google может нахмуриться, что я обслуживаю его статические страницы, которые на самом деле не представляют динамическую версию, которую могут видеть "обычные" посетители.

Это кажется неразрешимой проблемой. Либо я генерирую страницы полностью на стороне сервера, либо сканеры не могут индексировать страницы.: (

licensed under cc by-sa 3.0 with attribution.