如何在没有#的情况下制作SPA Ajax应用程序!抓取?

时间:2014-02-01 14:33:33

标签: java javascript html gwt web-crawler

如果你有一个单页面应用程序(SPA),其中包含大部分通过Ajax加载的JavaScript内容,谷歌建议guide如何使这些应用程序可以抓取。

你必须使用#!在您的页面片段中,使片段对搜索引擎可见。

www.example.com/ajax.html#!mainpage

现在,如果您使用HTML5 PushState History API,则可以将网址更改为

www.example.com/ajax.html/mainpage

此网址看起来必须比第一个更好。搜索引擎可以轻松访问该页面,因为网址中没有哈希#。问题是它仍然是一个必须解释的JavaScript页面,搜索引擎不会这样做。

  1. 搜索引擎如何访问此ajax页面?
  2. 我的服务器如何知道搜索引擎或用户浏览器是否尝试访问该网页?
  3. 我有以下想法,但不知道如何实施它或是否有任何解决方案。

    • 您可以制作搜索引擎可以访问的每个ajax页面的html快照
    • 您可以使用某种类型的ui浏览器访问浏览器,ui less浏览器解释页面然后将html内容返回给搜索引擎

1 个答案:

答案 0 :(得分:2)

我认为你的两个想法都在按计划进行。

无论哪种方式,您都需要在服务器上捕获搜索引擎“?_escaped_fragment_ =”作为“#!”的代理。为此,您可以查看this SO并查找GWT official reference

由于性能原因(无头浏览器很慢,它可能会超出javascript完成的结束),你也可以缓存生成的静态html页面(那些不依赖于你的例子中的动态参数的页面)并提供那些但是在升级代码时需要小心保持同步,以避免被视为Doorway Page