Eclipse RAP由Google抓取?

nic*_*uti 4 web-applications web-crawler eclipse-rap google-webmaster-tools google-index

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

  • RAP在内部进行AJAX调用.我可以将它们用于Google吗?如何?
  • RAP是单页,我应该如何向Google提供Sitemap(XML)?

提前致谢!

ral*_*stx 6

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

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

RWT.getBrowserHistory().createEntry( "!mystate", "Example" );
Run Code Online (Sandbox Code Playgroud)

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

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

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

针对不同"子页面"使用片段URL的RAP应用程序的示例RAP示例演示.

故事的其余部分应在Google的AJAX抓取指南中进行说明.您的ID必须以a开头,!以生成带有片段的URL #!mystate.这些网址是您应添加到网站地图的网址.要提供爬网程序,您可以实现一个servlet过滤器,该过滤器捕获对URL模式的请求?_escaped_fragment_=mystate并返回特定状态的HTML表示.