Eclipse RAP由Google抓取?

时间:2012-06-21 12:37:29

标签: web-applications web-crawler google-webmaster-tools eclipse-rap google-index

我正在开发一个RAP网站,并希望像谷歌这样的机器人可以访问它(我在这里只指谷歌;但我认为其他搜索引擎的工作方式类似)。 Webapp包含我从数据库加载的动态内容,具体取决于用户搜索的内容。如何为Google提供此内容? 我已经阅读了Google的ajax抓取指南,但不知道如何将它应用于RAP:

  • RAP在内部进行AJAX调用。我可以将它们用于Google吗?怎么样?
  • RAP是单页,我应该如何向Google提供站点地图(XML)?

提前致谢!

1 个答案:

答案 0 :(得分:6)

Ajax的想法是应用程序不会一直加载新页面,而是在后台使用Ajax请求加载新内容。无论如何,要在您的应用程序中提供“深层链接”,您需要包含片段部分的URL,例如example.com/myapp#mystate。使用此技巧是因为当只有URL的片段部分发生更改时,浏览器不会重新加载页面。

这与RAP没什么不同。为了处理这种URL,RWT提供了浏览器历史API。当您的申请状态发生变化时,例如当用户选择某种标签或触发搜索时,您可以在浏览器历史记录中添加新条目,从而有效地更改浏览器中URL的片段:

RWT.getBrowserHistory().createEntry( "!mystate", "Example" );

这会将URL更改为example.com/app/entrypoint#!mystate(此状态的“深层链接”)并在浏览器历史记录中添加名为“Example”的条目,因此您可以使用浏览器的后退按钮返回到此状态以后说。

为了能够对URL的更改做出反应,您必须向浏览器历史记录添加一个侦听器。每次片段部分更改时都会通知此侦听器。当应用程序以片段启动时(有人跟随深层链接)也是如此。然后,您的应用程序负责重新安装此片段所代表的状态。

RWT.getBrowserHistory().addBrowserHistoryListener( new BrowserHistoryListener() {
  public void navigated( BrowserHistoryEvent event ) {
    // show state represented by event.entryId
  }
} );

对不同“子页面”使用片段URL的RAP应用程序的示例是RAP examples demo

故事的其余部分应在Google's AJAX crawling guide中解释。您的ID必须以!开头,以生成包含#!mystate这样的片段的网址。这些网址是您应添加到网站地图的网址。要提供爬网程序,您可以实现一个servlet过滤器,用于捕获对URL模式?_escaped_fragment_=mystate的请求,并返回特定状态的HTML表示。