预计算客户端Javascript执行

时间:2012-07-02 17:35:18

标签: javascript ajax phantomjs

假设您要构建一个功能强大的单页客户端应用程序,该应用程序侦听URL更改以便在应用程序中导航。

假设当用户(或搜索引擎机器人)通过其网址加载页面时,而不是正常地传递静态javascript文件并点击api,我们想要预先计算服务器端的所有内容并交付DOM以及js状态。

我想知道是否有现有的工具或技术可以将这种状态执行持久化到客户端。

我知道我可以像幻像JS一样执行脚本并输出DOM元素,但是事件处理程序,控制器和js内存状态将无法正确附加。我可以嗅探我们的用户代理并仅将预先计算的内容发送给僵尸程序,但我担心谷歌会因此而受到惩罚,而且我们也失去了首先发送所有预先计算好的内容的速度优势。

1 个答案:

答案 0 :(得分:0)

所以你想编译服务器端并向客户端发送在特定URL请求资源的结果?你写的后端是什么?

我们在Java中使用GAE运行API。我们的应用程序是一个单页应用程序,我们使用HTML5历史记录对象,因此我们必须对前端的实际URL进行“实际响应”。

为了解决这个问题,我们使用JSP预先缓存页面中的数据,因为它是从服务器加载并发送到客户端的。

在前端我们使用Backbone,因此我们修改了Backbone.sync以查找它在页面本地查找的数据的副本,如果它不在那里,那么只能从服务器请求它作为AJAX电话。

所以,是的,这几乎是每个网站在你拥有ajax之前所做的事情。诀窍在于编写您的应用程序,以便数据可以在页面中本地(或甚至在localStorage中),如果不仅仅是请求数据。然后确保您的页面在服务器端“构建”(因此我们实际上填充了服务器端HTML元素中的数据,因此页面不需要客户端上的JS)。

如果您去其他地方,数据是动态的,页面不会重新加载。