0

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

然后假设,当用户(或搜索引擎机器人)通过其 url 加载页面,而不是像往常一样交付静态 javascript 文件并点击 api 时,我们希望预先计算服务器端的所有内容并交付 DOM js 状态。

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

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

4

1 回答 1

0

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

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

为了处理这个问题,我们使用 JSP 在页面中预缓存从服务器加载并发送到客户端的数据。

在前端,我们使用 Backbone,因此我们修改Backbone.sync为在页面上本地查找它正在查找的数据的副本,如果不存在,则仅通过 AJAX 调用从服务器请求它。

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

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

于 2012-07-02T18:28:02.123 回答