无需后端控制即可抓取AJAX应用程序

时间:2013-08-09 20:45:58

标签: javascript ajax github ember.js seo

我已经构建了一个tool,利用EmberJS和GitHub Pages创建一个在浏览器中呈现的博客应用程序。它使用JavaScript来获取Markdown文件并将它们呈现到应用程序的主体中。由于所有内容都是通过AJAX请求获取的,因此我不确定是否可以通过Google等方式对内容进行抓取。

read many articles建议使用PhantomJS处理_escaped_fragment_请求,但由于内容托管在GitHub上,因此无法运行任何内容服务器端。

是否有可能解决此问题(例如在将内容推送到GitHub之前提前呈现某些内容)或者我是否只是遇到了JavaScript应用程序的缺点?

5 个答案:

答案 0 :(得分:2)

问题是,Can googlebot do basic javascript?

如果没有,那么,不。在我读到你的时候,你的应用程序需要JS支持才能呈现任何页面。这使您无需使用机器人友好的访问方法。

如果是,那么,是的:

由于JavaScript可以通过location.search访问网址参数,因此您可以为Google创建合理的网址,以获取由您的JS应用解释的href属性,并覆盖{{1}中的用户} attributes。

onclick

这将与您应用的onload中的代码配对以寻找<a href="/?a=My-Blog-Post" onclick="someFunc(this.href);return false;"> 并获取.md可能出现在指定的url参数中(在您解析查询字符串之后),希望Google运行所说的onload以获取指定的内容。这是许多网站location.search样式路径的变体。两者都是完全客户端,但查询字符串变体将指示googlebot该页面值得作为不同的URL获取。

您可以使用http://google.com/webmasters对其进行测试,{{3}}具有“获取googlebot”功能。

答案 1 :(得分:1)

我创建了一个帮助它的小模块。看看http://alexferreira.github.io/seojs/

答案 2 :(得分:1)

如果没有后端服务器做某些逻辑,那就会让它变得有点棘手......

但也许,受到http://meta.discourse.org/t/seo-compared-to-other-well-known-tools/3914http://eviltrout.com/2013/06/19/adding-support-for-search-engines-to-your-javascript-applications.html

所讨论内容的启发

您可以使用构建脚本在路径定义post/:post_slug之后的树中生成索引文件的副本,例如/post/slug/index.html。每个页面都有一个<noscript>标记,其中包含非常基本的内容和当前帖子的链接。您甚至可以在页面中预先加载CurrentPost JSON哈希来保存一些XHR。

这意味着使用不是非常友好的历史API,但可能不是一个大问题。

答案 3 :(得分:0)

你走近吃晚餐吃沙漠,然后盯着你的蔬菜。

您真正想做的是首先在没有AJAX的情况下提供页面。在无需JavaScript的情况下正确加载页面后,只需添加?ajax=1所有请求即可。如果isset($_GET['ajax'])那么您可以避免加载页眉,页脚,侧边栏等。然后只需使用匿名window.onclick并从那里插入。

不使用任何第三方软件(包括框架)的Web 3.0技术示例视频全部使用您尝试创建的最严格的代码构建...

http://www.youtube.com/watch?v=hZw8t-GVCB4

随意查看我网站上的JavaScript。我很乐意在这个周末帮助你。

答案 4 :(得分:-2)

你有一个构建脚本,为什么不在那里使用PhantomJs来生成静态网页?

U可以正常提供静态页面,如果启用了JS,则重定向到AJAX页面。

唯一的一点是,Ember-router-hyperlink对于搜索引擎机器人来说是不可用的。但我认为,如果没有服务器代码,绝对没有办法解决这个问题!