Выполнение JavaScript для рендеринга HTML для кэширования на стороне сервера

Есть множество виджетов, предоставляемых сайтами, которые фактически представляют собой фрагменты JavaScript, которые генерируют HTML с помощью манипуляций с DOM или document.write() . Вместо того, чтобы еще больше замедлять браузер за счет дополнительных запросов и доверять еще одному провайдеру, чтобы он был быстрым, надежным и не изменял вывод виджета, я хочу выполнить * JavaScript для генерации визуализированного HTML, а затем сохранить этот источник HTML.

Вещи, которые я изучил, которые кажутся невыполнимыми или слишком сложными:

  1. Браузер ссылок ( не lynx! )
  2. Безголовое использование Xvfb плюс Firefox плюс Greasemonkey ( yikes )
  3. Набор инструментов для браузера Cobra, полностью основанный на Java ( лучший вариант! )

Любые идеи?

** Очевидно, вы не можете полностью выполнить JavaScript, так как у него не обязательно есть путь выхода, но вы поняли идею.

Ответов (3)

Решение

В статье Википедии «Серверный JavaScript» перечислены многочисленные реализации, многие из которых основаны на преобразователе JavaScript Rhino в Java от Mozilla или его кузене SpiderMonkey (тот же движок, что и в Firefox и других браузерах на базе Gecko). В частности, вам может подойти что-нибудь простое, например mod_js для Apache.

Если вы просто используете простой JS, Rhino должен помочь. Но если код JS на самом деле вызывает методы DOM и т. Д., Вам понадобится полноценный браузер. Лом может вам помочь.

Действительно ли это ускорит работу пользователей, не вызывая проблем с совместимостью?

Есть проект Джона Ресига « Перенос браузера на сервер» : «среда браузера / DOM, написанная на JavaScript, работающая поверх Rhino ; способная запускать jQuery, Prototype и MochiKit (по крайней мере)».