搜索引擎优化有什么用( 单页应用与传统直出页面在SEO方面有哪些不同之处?)

优采云 发布时间: 2022-03-07 12:07

  搜索引擎优化有什么用(

单页应用与传统直出页面在SEO方面有哪些不同之处?)

  

  前言

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

  搜索引擎优化

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

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

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

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

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

  URL 中的哈希(# 符号)

  单页应用只有一页,视图的变化通常由路由驱动。首先说一下单页应用的URL中的##。很多使用单元结构王浩赞的网址都出现了这个。象征。

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

  1

2

  location.hash // 获取URL hash

location.hash = "#list" //改变URL hash

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

  1

2

3

  example.com/#index //首页视图

example.com/#list //列表页视图

example.com/#list/1 //id为1的列表信息的视图

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

  观看此演示后,您会发现 Twitter 过去在 URL 中使用的熟悉符号 #!。这个标志是由谷歌提出的。(AJAX 抓取:网站网站管理员和开发者指南 1:

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

  网站将站点地图提交给谷歌;谷歌发现有一个#! URL中的符号,比如/#!/detail/1,所以谷歌开始抓取/?_escaped_fragment_=/detail/1;

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

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

  转义片段_=/detail/1

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

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

  判断爬行动物

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

  1

2

3

  if ($args ~ _escaped_fragment_) {

rewrite ^ /api;

}

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

  1

2

3

4

5

6

7

8

9

10

11

12

13

  upstream nodejs {

server 127.0.0.1:3000;

}

 

location /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 $host;

proxy_set_header Port $server_port;

proxy_pass http://nodejs;

proxy_redirect off;

}

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

  网站地图

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

  1

2

3

  http://119.28.4.22/#!/detail/1

weekly

0.5

  结语

  技术趋势的步伐非常快,单页应用的方式,不渲染的 URL 哈希其实已经流行了很长时间。在国外用户多且数据良好的情况下,开发者会选择 HTML5 History API 的 pushstate 特性进行开发。放弃#!在网址中。但是IE6、7等低端浏览器用户较多网站,#可以很好的兼容。也欢迎讨论使用 HTML5 History API 构建单页应用程序的方案。

  参考1:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线