【问题标题】:How to make a AJAX website crawlable?如何使 AJAX 网站可抓取?
【发布时间】:2016-03-13 17:22:12
【问题描述】:

以下网站是使用 history.pushState() 的可抓取 AJAX 网站(HTML5 + CSS3 + AJAX)的一个很好的例子:

http://html5.gingerhost.com/

(背景见https://moz.com/blog/create-crawlable-link-friendly-ajax-websites-using-pushstate

但是,本网站假定动态内容可以在页面加载时呈现在服务器端。比如直接登陆http://html5.gingerhost.com/seattle,西雅图相关的内容不是通过AJAX加载的,而是已经在页面中了。

假设内容只能通过 AJAX 调用加载。我怎样才能使这样的网站可抓取?

我的具体目标是让这个网站可以抓取: http://code-exercises.com/programming/

目前,所有的编程练习都是通过 AJAX 加载的。我想要编程/简单/练习一号。

我的网站由 NGINX 实例提供服务,该实例提供静态内容并将所有 AJAX 请求转发到 Tomcat 实例。

【问题讨论】:

  • "我们假设内容只能通过 AJAX 调用加载。我怎样才能让这样的网站可抓取?" - 不良。这是一个错误的假设,通常归结为不想付出努力。
  • “我会考虑渲染内容的解决方案……服务器端。”矛盾“让我们假设内容只能通过 AJAX 调用加载。”
  • @Quentin 目前我的内容只能通过 RESTful 调用获得,我会考虑呈现此内容服务器端的解决方案,但我不知道该怎么做。我会考虑在服务器端和客户端呈现内容的解决方案。
  • 选择一种服务器端编程语言。复制客户端代码的工作。
  • @Quentin 我明白你的意思,但出于性能原因我仍然想使用 AJAX,类似于在 html5.gingerhost.com 上所做的事情

标签: javascript jquery ajax html


【解决方案1】:

选项 1:简单的方法,使用 prerender.io

选项 2:在您的应用构建过程中包含 Phantom.js 以制作页面的静态版本

选项3:如果你使用Angular,你可以迁移到angular2,或者其他有服务端渲染的框架

【讨论】:

    【解决方案2】:

    看看如何让 Angular 应用程序可抓取。

    基本上,您必须拥有页面的缓存版本,其中加载了将提供给网络爬虫的数据。

    https://prerender.io/这是一个例子。

    【讨论】:

      猜你喜欢
      • 2014-05-18
      • 2016-04-18
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      相关资源
      最近更新 更多