seo经典之作-2011最新搜索引擎优化实战(单页应用与传统直出页面在SEO方面有哪些不同之处?)

优采云 发布时间: 2022-01-10 08:11

  seo经典之作-2011最新搜索引擎优化实战(单页应用与传统直出页面在SEO方面有哪些不同之处?)

  前言

  单页应用程序(Single Page Application)在 web 开发者中越来越流行。单页应用体验可模拟原生应用,一次开发,多终端兼容。单页应用并不是一项新技术,而是随着互联网的发展,满足用户体验的综合性技术。

  搜索引擎优化

  搜索引擎优化 (SEO) 一直是开发人员忽视的一部分。SEO是对搜索(谷歌、百度、雅虎等)技术细节的优化,比如语义、搜索关键词和内容相关性、​​收录体积、搜索排名等。同行和市场竞争的常用营销工具。谷歌和百度的搜索结果是重要的用户入口。腾讯云约 30% 的流量来自搜索引擎。因此,SEO是品牌、营销、用户量纬度上非常重要的基础能力。

  那么单页应用和传统的直出页面在SEO方面有什么区别呢?

  单页应用程序的优势

  更好的用户体验,让用户在网页上感受natvie的速度和流畅度;经典的MVC开发模式,前后端各负其责。一套Server API,多端使用(web、手机APP等)重前端,业务逻辑全部在本地操作,数据需要通过AJAX同步提交;

  对搜索引擎不友好

  单页应用程序实际上将视图的呈现从服务器传输到浏览器。服务器只提供 JSON 格式的数据,视图和内容通过本地 JavaScript 组织和呈现。搜索引擎抓取的内容需要完整的 HTML 和内容。具有单页应用程序架构的站点不能很好地支持搜索。

  如果网站在用户体验和搜索友好性之间进行权衡,如果我们实现更好的体验和友好的搜索支持,那将是一块石头杀死两只鸟。

  URL 中的哈希(# 符号)

  单页应用程序只有一个页面,视图的变化通常由路由驱动。首先说一下单页应用的URL中的#。许多使用单元结构的 URL 网站 出现此符号。

  # 符号是浏览器 URL 中的锚点。如果改变当前页面#号的参数,页面会跳转到锚点的位置。通过JavaScript,我们可以得到#号后面的参数:

  location.hash // 获取 URL 哈希

  location.hash = "#list" //更改网址哈希

  如果更改#号后面的参数,页面将不会重新加载,所以大部分单页架构网站使用URL中的#号作为当前视图的URL地址,例如:

  /#index //主视图

  /#list //列出页面视图

  /#list/1 //查看id为1的列表信息

  Backbone.js 通过更改 # 参数来组织视图。这是一个可以直观体验URL变化的demo()。

  观看此演示,您可能会发现熟悉的符号 #!,这是 Twitter 过去在 URL 中使用的符号。此徽标由 Google 提出(AJAX Crawl:网站Webmaster and Developer Guidelines1):

  由于单页架构页面复杂,谷歌难以抓取,因此制定了一个规范给开发者:

  网站向谷歌提交站点地图;

  谷歌找到了#! URL 中的符号,例如 /#!/detail/1,因此 Google 开始抓取 /?_escaped_fragment_=/detail/1;

  参数 _escaped_fragment_ 是 Google 指定的名称。如果开发者希望将网站的内容提交给谷歌,则必须通过该参数生成静态页面。

  根据上面的demo,我简单说明一下Google要抓取的页面是什么样子的:

  这样,服务器就需要生成静态内容供谷歌抓取。

  下面将简单介绍单页架构,并在爬虫访问根目录时配置服务端路由。

  判断爬行动物

  Google访问119.28.4.22/#!/detail/1时会自动转换为,以Nginx为例:

  if ($args ~ _escaped_fragment_) {

  重写 ^ /api;

  }

  /api是后台服务的接口,以nodejs为例,代理设置如下:

  上游节点{

  服务器 127.0.0.1:3000;

  }

  位置 /api {

  proxy_set_header X-Request-URI $request_uri;

  proxy_set_header X-Real-IP $remote_addr;

  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  proxy_set_header 主机 $host;

  proxy_set_header 端口 $server_port;

  代理通行证;代理重定向关闭;

  }

  这样,我们重写了谷歌对/api接口的访问,然后在服务器的/api中处理请求,输出静态内容。

  网站地图

  Gogole的这个规范必须有sitemap支持,因为可能有单页架构的站点,索引页也是JavaScript渲染的。提交站点地图时,不要注意参数名_escaped_fragment_,只提交带有井号的URL,例如:

  #!/detail/1

  每周

  0.5

  本文到此结束,欢迎讨论。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线