单页应用SEO浅谈

news/2024/5/20 21:07:10/文章来源:https://blog.csdn.net/weixin_33700350/article/details/91667000

为什么80%的码农都做不了架构师?>>>   hot3.png

单页应用SEO浅谈

前言

单页应用(Single Page Application)越来越受web开发者欢迎,单页应用的体验可以模拟原生应用,一次开发,多端兼容。单页应用并不是一个全新发明的技术,而是随着互联网的发展,满足用户体验的一种综合技术。

SEO

一直以来,搜索引擎优化(SEO)是开发者容易忽略的部分。SEO是针对搜索(Google、百度、雅虎搜索等)在技术细节上的优化,例如语义、搜索关键词与内容相关性收录量搜索排名等。SEO也是同行、市场竞争常用的的营销手段。Google、百度的搜索结果是重要的用户入口,腾讯云(www.qcloud.com)有30%左右的流量来自搜索引擎。因此SEO在品牌、营销、用户量的纬度是非常重要的基础能力。

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

单页应用的优点

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

对搜索引擎不友好

单页应用实际是把视图(View)渲染从Server交给浏览器,Server只提供JSON格式数据,视图和内容都是通过本地JavaScript来组织和渲染。而搜索搜索引擎抓取的内容,需要有完整的HTML和内容,单页应用架构的站点,并不能很好的支持搜索。

如果站点在用户体验和搜索友好权衡时,如果我们做到更好的体验,也做到友好的搜索支持,既是一箭双雕。

URL中的哈希(#号)

单页应用只有一个页面,视图的变化通常是通过路由(route)来驱动,首先,我们先来谈一谈单页应用的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就是通过改变#号参数来组织视图,这里有一个demo可以很直观的体验URL的变化。

看过这个demo,你或许会发现很熟悉的符号#!,Twitter曾在URL使用这个标识。这个标识是Google提出(AJAX 抓取:网站站长和开发人员指南1):

因为复杂的单页架构页面,对Google来说抓取比较困难,于是给开发者制定一个规范:

  1. 网站提交sitemap给Google;
  2. Google发现URL里有#!符号,例如example.com/#!/detail/1,于是Google开始抓取example.com/?_escaped_fragment_=/detail/1;

_escaped_fragment_这个参数是Google指定的命名,如果开发者希望把网站内容提交给Google,就必须通过这个参数生成静态页面。

根据上面的demo,我简单示例一下Google要抓取的页面的样子:

http://119.28.4.22/?escapedfragment_=/detail/1

如此以来,就需要Server通过生成静态的内容以便Google抓取。

以下将简单介绍,单页架构,爬虫访问根目录时如果配置Server端的路由。

判断爬虫

当Google访问119.28.4.22/#!/detail/1 时,会自动转化成http://119.28.4.22/?_escaped_fragment_=/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; }

如此,我们便将Google的访问重写到/api这个接口,然后在Server的/api处理请求把静态内容输出即可。

sitemap

Gogole的这个规范,必须有sitemap支持,因为有可能单页架构的站点,索引页面也是JavaScript渲染的。提交sitemap时,不用关注_escaped_fragment_这个参数名,只提交带哈希符号的URL即可,例如:

1
2
3
4
<loc>http://119.28.4.22/#!/detail/1</loc> <changefreq>weekly</changefreq> <priority>0.5</priority> </url>

结语

技术潮流的步伐很快,单页应用,URL哈希处理也没渲染的方式实际上已经流行了很久,在国外很多用户数据较好的情况下,开发者会选择HTML5 History API的pushstate特性开发,在URL中抛弃#!。但是IE6、7等低端浏览器用户情况较多的网站,#能够很好的兼容。关于采用HTML5 History API来架构单页应用的方案,也欢迎讨论。


参考1: https://support.google.com/webmasters/answer/174992?hl=zh-Hans

出处:腾讯ISUX (http://isux.tencent.com/seo-for-single-page-applications.html)

转载于:https://my.oschina.net/gsbhz/blog/342495

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_726358.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站开发和企业级开发有什么区别?

2019独角兽企业重金招聘Python工程师标准>>> 经常看到Web开发、网站开发、企业级开发&#xff0c;以前很难分清楚它们之前有什么不同&#xff1f;以前也有个说法&#xff1a;Java比较适合企业级开发。 现在经验增加了一点&#xff0c;谈谈我的一点看法。 Web开发&am…

git的使用笔记-转自廖前辈的网站

2019独角兽企业重金招聘Python工程师标准>>> ------- GIT安装 ------- 1.linux安装git sudo apt-get install git 老一点&#xff1a; sudo apt-get install git-core 2.maxOS安装git brew install git 3.windows安装git msysgit是Windows版的Git&#xff0c;从ht…

Vue 实现 Hover 功能( mouseover 与 mouseenter 的区别)

一、mouseover 和 mouseenter 的区别 mouseover&#xff1a;当鼠标移入元素或其子元素都会触发事件&#xff0c;所以有一个重复触发&#xff0c;冒泡过程。对应的移除事件是 mouseout mouseenter:当鼠标移入元素本身&#xff08;不包含元素的子元素&#xff09;会触发事件&…

家乡介绍网站模板html_网站被挂黑链怎么办

我们都知道做SEO优化经常会碰到网站被挂黑链问题&#xff0c;遇到这种问题我们不用担心&#xff0c;下面由水滋源郑州网站优化公司介绍几种轻松解决网站被挂黑链问题。 黑链手法&#xff1a;一般的黑链在网站的首页是不能看出来的&#xff0c;他们采取了很隐秘的手法&#xff0…

python爬取网页信息的相关库_Python基于requests库爬取网站信息

requests库是一个简介且简单的处理HTTP请求的第三方库 get()是获取网页最常用的方式&#xff0c;其基本使用方式如下 使用requests库获取HTML页面并将其转换成字符串后&#xff0c;需要进一步解析HTML页面格式&#xff0c;这里我们常用的就是beautifulsoup4库&#xff0c;用于解…

使用代理请求其他网站图片时,报403错误

需求&#xff1a;通过请求代理网址&#xff0c;获取数据&#xff0c;渲染页面&#xff1b; 问题&#xff1a;请求不到图片&#xff0c;报403错误。 解决办法&#xff1a;在 head 标签中添加一个下面的标签 <meta name"referrer" content"no-referrer"&…

邮箱@topgrid.cn是什么网站_出海企业建立的新网站如何快速增加权重?

2019年1月21日更新&#xff1a;这种方法在2018年下半年已经被Google惩罚了&#xff0c;大家慎用&#xff01;现如今把产品或服务卖给外国人&#xff0c;无论是B2B还是B2C&#xff0c;依托平台&#xff08;亚马逊&#xff0c;阿里巴巴等&#xff09;都难免受平台的制约。尤其是亚…

linux下Apache软件搭建网站

前面我讲解了Web服务器的分类与架构演变&#xff0c;从单台机到多台机的架构&#xff0c;这是我们学习Linux网站服务的核心知识&#xff0c;后面我以这个架构为中心&#xff0c;展开讲解&#xff0c;在插入相应的别的内容。毕竟我们的工作是以网站为主。说道这里我想说下Linux运…

真人秀制作网站_设计干货:9个网站,带你领略设计师的开挂日常

之前微博上有一个很火的话题叫#美术生开挂日常#&#xff0c;不知道大家看完后是否有被美术生们精湛的绘画技巧所折服。其实不仅仅是美术生&#xff0c;产品设计师们的日常更是无数的惊叹于大写的佩服。小麸今天就来和大家深入了解一下&#xff1a;产品设计师的开挂日常~01 产品…

网站该如何存储用户的密码

2019独角兽企业重金招聘Python工程师标准>>> 对那些有用户系统的网站来说&#xff0c;如果存储用户的密码是个问题。 大家都知道不能明文存储&#xff0c;这样一旦被脱了裤子&#xff0c;后果很严重&#xff0c; 简单的md5 sha加密也不可取...... 通常在做网站的时候…

电脑上调试手机网站的几种方法

手机网站开发&#xff0c;最让人头疼的是网站的兼容问题&#xff0c;不同的手机可能会出现一些莫名的问题。手机网站常见问题及解决方案&#xff0c;我会在后面的文章陆续发表&#xff0c;大家可以看一下。 本文主要讲解电脑上如何调试手机网站&#xff1a; 一、安卓手机的调试…

推荐一个免费MP4转GIF的好用的在线编辑网站

地址如下&#xff1a; 原来那个网页版视频转换付费了&#xff0c;现在推荐使用“格式工厂” http://www.pcfreetime.com/formatfactory/CN/download.html

实用工具分享:一个比ps简单的免费简单易上手的良心在线海报设计网站,关键还没水印

1.说明: 工作中我相信或多或少都存在制作海报的需求,或者制作一个精美的软件安装说明等等(向下图一样),而我们大都不是专业平面设计师,花费时间折腾ps很明显得不偿失,并且ps的操作并不那么友好,那有没有简单几步就能制作出能看、好看、有创意的海报呢?答案是有的!!…

收藏一点有意思的网站

为什么80%的码农都做不了架构师&#xff1f;>>> http://shedingkong.lofter.com/?page2&t1465821964867 设定控 转载于:https://my.oschina.net/cpWeb/blog/792911

个人主页网页设计_优秀设计师都会逛的6大网站,你知道吗?

设计师最难熬的时间莫过于灵感的枯竭&#xff0c;所以平日里除了多搜集一些优秀的设计作品外&#xff0c;常备一些好用的设计网站真的很有必要&#xff0c;它的存在可以为我们缩短思考的时间&#xff0c;完善自己的思路&#xff0c;汲取别人优秀的创意点。now&#xff01;小编为…

iis 站点内存高_Java处理高并发、高负载类网站的优化方法

一.-网站关注点之数据库-首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用&#xff0c;数据库的响应是首先要解决的。一般来说MySQL是最常用的&#xff0c;可能最初是一个MySQL主机&#xff0c;当数据增加到100万以上&#xff0c;那么&#xff0c;MySQL的效能…

php收费视频网站实现,超好影视网站PHP源码,一键采集视频资源,对接第三方免签码支付,能设置每个视频能否收费...

搭建环境&#xff1a;PHPapachermysql搭建环境&#xff1a;PHPapachermysql搭建环境&#xff1a;PHPapachermysql源码详情该源码是一套影视网站PHP完整源码&#xff0c;支持会员系统&#xff0c;支持后端一件采集视频资源&#xff0c;对接第三方免签支付【码支付】&#xff0c;…

《网站建设与网页设计从入门到精通Dreamweaver+Flash+Photoshop+HTML+CSS+JavaScript》——3.5 设置头信息...

本节书摘来自异步社区《D网站建设与网页设计从入门到精通DreamweaverFlashPhotoshop&#xff0b;HTMLCSSJavaScript》一书中的第3章&#xff0c;第3.5节&#xff0c;作者&#xff1a;何新起 更多章节内容可以访问云栖社区“异步社区”公众号查看。 3.5 设置头信息 文件头标签也…

什么是网站维护,做好网站维护需要具备哪些知识

网站维护对于相当一部分中小企业老板而言就是&#xff0c;找个网管来每天发发文章&#xff0c;保证网站正常运营&#xff0c;即可。其实真正的网站维护远远不止这些工作。 网站维护&#xff0c;一个好的网站需要定期或不定期地更新内容&#xff0c;才能不断地吸引更多的浏览者&…

【无删减】Python老司机收藏夹的17个国外免费学习网站

用Python编写代码一点都不难&#xff0c;事实上它一直被赞誉为最容易学的编程语言。如果你准备学习web开发&#xff0c; Python是一个不错的开始&#xff0c;甚至想做游戏的话&#xff0c;用Python来开发游戏的资源也有很多。这是快速学习这门语言的途径之一。许多程序员都把Py…