相关疑难解决方法(0)

使AJAX应用程序可抓取?如何在Google App Engine上构建简单的Web服务来生成HTML快照?

现实问题:

我的应用程序托管在Heroku上,据我所知,他无法提供运行无头(无GUI)浏览器的解决方案 - 例如HTMLUnit - 用于为Googlebot 生成HTML快照以索引我的AJAX内容.

我建议的解决方案:

如果您还没有,我建议您阅读Google的"使AJAX应用程序可抓取完整规范".

想象一下,我有:

  • 在域上的Heroku上托管的Sinatra应用程序http://example.com
  • 该应用程序在页面顶部TabA,TabB和TabC上有选项卡
  • 每个选项卡下都有SubTab1,SubTab2,SubTab3
  • onload如果url是http://example.com#!tab=TabA&subtab=SubTab3客户端Javascript location.hash通过AJAX 获取并加载TabA,SubTab3内容.

注意:Hash Bang(#!)是google规范的一部分.

我想在Google App Engine(GAE)上托管一个简单的"网络服务" :

  1. 接受URL参数,例如http://htmlsnapshot.appspot.com?url=http://example.com#!tab=TabA&subtab=SubTab3(url param应为URLEncoded)
  2. 运行HTMLUnit以http://example.com#!tab=TabA&subtab=SubTab3在服务器上打开并运行客户端javascript.
  3. 一旦一切都完成(或者已经过了45秒),HTMLUnit就会返回DOM.
  4. 返回的内容可以通过JSON/JSONP被送回,或者一个URL是回归生成并存储在谷歌应用程序引擎服务器上的文件(基于文件"缓存"结果)......开到这里建议.如果返回了文件的URL,则可以使用CURL获取源代码(也称为HTML快照).

我的http://example.com应用程序需要管理http://htmlsnapshot.appspot.com...基本上:

  1. 抓住Googlebots调用http://example.com/?_escaped_fragment_=tab=TabA%26subtab=SubTab3(googlebot抓取工具逃脱某些字符,例如%26 =&).
  2. 从后端发送请求http://htmlsnapshot.appspot.com?url=http://example.com#!tab=TabA&subtab=SubTab3(url param应为URLEncoded)
  3. 将返回的HTML快照渲染到前端.
  4. 谷歌索引内容,我们欢欣鼓舞!

我没有使用Google App Engine或Java或HTMLUnit的任何经验.

我或许可以弄明白......如果我这样做,我会发布我的结果.

否则,我觉得这是一个很好的机会,有人写了一个踢屁股的博客文章,概述了一个新手一步一步的指导,以建立这样的网络服务.

这将为更优秀(和免费!)的Google …

java ajax seo google-app-engine htmlunit

14
推荐指数
1
解决办法
3272
查看次数

标签 统计

ajax ×1

google-app-engine ×1

htmlunit ×1

java ×1

seo ×1