单页应用SEO浅谈(转载)

news/2024/4/28 4:06:51/文章来源:https://blog.csdn.net/weixin_34406061/article/details/89213999

单页应用SEO浅谈

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

SEO

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

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

  • 单页应用的优点


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

  • 对搜索引擎不友好


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

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

  • URL中的哈希(#号)


单页应用只有一个页面,视图的变化通常是通过路由(route)来驱动,首先,我们先来谈一谈单页应用的URL中的#号,很多采用单元结构网站的URL都出现了这个符号。

"#"号在浏览器的URL中是一个锚点,在当前页改变#号的参数,页面会跳转到锚点所在的位置,通过JavaScript我们可以获取到#号后的参数:

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

改变#号后的参数,页面并不会重载,于是大多数的单页架构网站,都在URL中采用#号来作为当前视图的URL地址,例如:

example.com/#index //首页视图
example.com/#list //列表页视图
example.com/#list/1 //id为1的列表信息的视图
Backbone.js就是通过改变#号参数来组织视图,这里有一个demo可以很直观的体验URL的变化。

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

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

网站提交sitemap给Google;
Google发现URL里有#!符号,例如example.com/#!/detail/1,于是Google开始抓取example.com/?_escaped_fragment_=/detail/1;
_escaped_fragment_这个参数是Google指定的命名,如果开发者希望把网站内容提交给Google,就必须通过这个参数生成静态页面。

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

http://119.28.4.22/?escapedfr...

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

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

判断爬虫

当Google访问119.28.4.22/#!/detail/1 时,会自动转化成http://119.28.4.22/?_escaped_...,以Nginx为例:

if ($args ~ _escaped_fragment_) {rewrite ^ /api;
}
/api为后台服务的接口,已nodejs为例,代理设置如下: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即可,例如:

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

结语

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

转自:http://isux.tencent.com/seo-f...

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

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

相关文章

Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么?

首先要知道网站访问大概是什么个过程:假设你在浏览器地址栏输入这个问题的地址http://www.zhihu.com/question/22689579访问过程和下图差不多,浏览器和服务器交流,服务器和数据库交流(有时候数据库就在服务器那台机子上&#xff0…

请提示怎末实现的_网站文本复制,弹出版权提示

​标题很显然,今天给大家介绍的是:访客复制内容时弹出版权提示。介绍两种实现代码:一种较简单,效果也简单;一种稍复杂,效果也更佳。一、借助内置弹窗这种方法很简单,只需在function.php内添加如…

《Axure RP7网站和APP原型制作从入门到精通》一第1章 Axure基础交互1.1 欢迎界面...

本节书摘来自异步社区《Axure RP7网站和APP原型制作从入门到精通》一书中的第1章,第1.1节,作者 金乌,更多章节内容可以访问云栖社区“异步社区”公众号查看 第1章 Axure基础交互 Axure RP7网站和APP原型制作从入门到精通Axure RP7相较之前的版…

wordpress page显示未找到页面_WordPress 建站必装的 5 个实用插件推薦!

WordPress 是世界上最强大的建站平台之一,在全球 100 大网站中,有 14.7% 的网站是透过 WordPress 建置,而截至 2017 年的资料为止,有超过 7,500 万的网站使用 WordPress 平台建站,且相关的建站数据仍持续成长中。WordP…

layui的tab加入其他页面_在网站SEO优化为何要加入网站地图?

所谓网站的地图,就是Sitemap,能方便网站管理员通知搜索引擎在网站上进行抓取网页。搜索引擎会先爬行网站的robots文件,这个文件还包括了网站地图sitemap,那么网站地图对网站优化有什么作用,为什么要加入它呢&#xff1…

网站被挂了很多链接 源码里边看不到_跟我一起读源码 – Tablib源码阅读

我们在上一篇文章 跟我一起读源码 – 如何阅读开源代码 中详细讲解了阅读开源代码的重要性如何选取适合自己的Python开源库如何搭建自己的代码阅读环境阅读代码的方法和原则在本篇文章,就请大家跟我一起将这些方法运用起来,读完一个完整的开源项目的代码…

如何根据关键字搜索网站中的内容_外贸网站怎么做seo优化?英文网站优化

外贸网站怎么做seo优化?英文网站优化方法是什么?别人的网站在谷歌排名那么好,你的网站为何迟迟没收录,排名也没有,如何解决?下面专业从事江苏谷歌seo的互旦科技教大家如何优化外贸网站。外贸网站怎么做seo优…

网站性能优化(website performance optimization)2

我们先研究下构建渲染树前的几个步骤:也就是DOM和CSSOM,通常这些步骤的效果最差使你的网页呈现速度非常慢,我们是讨论尽可能快的将HTML流式传输给客户端,使浏览器能够开始构建DOM,还有其他注意事项吗?有一个…

如何使用Nikto漏洞扫描工具检测网站安全

本文已发表在专家专栏:[url]http://netsecurity.51cto.com/art/200712/62159.htm[/url]【51CTO.com 独家特稿】随着信息技术的发展,网络应用越来越广泛,很多企业单位都依靠网站来运营,正因为业务的不断提升和应用,致使…

www服务的配置--如何在一台服务器上发布多个网站

不同的ip地址可以发布不同的网站。相同的ip地址不同的端口也可以发布不同的网站。相同的ip地址相同的端口不同的主机头可以发布不同的网站。转载于:https://blog.51cto.com/manlicui/199305

2003网站服务器架设,2003系统IIS搭建网站绑定域名的操作办法

2003系统IIS搭建网站绑定域名的操作办法在桌面打开Internet 信息服务(IIS)管理器,我们简称IIS,右击网站-新建-网站点下一步网站创建向导这里输入一个自己名下一步网站TCP端口一般默认都是80,因为80的端口是只需要输入域名就可以打开了&#x…

发布网站配置服务器错误,WEB网站发布服务器IIS报错问题终极解决方案,查到问题点...

4本次错误webservice发布新服务器后,出现此错误。解决方法:找到dmp文件dmp文件是啥?自己百度。简单的说就是黑匣子,记录程序崩溃前的操作,那么如何找到这个黑匣子呢?1、启动 Windows Error Reporting Servi…

asp.net 报表页面模板_PPT插件,图标,图片,模板网站汇总,总归有一个适合你...

经常碰到小伙伴说,自己在制作PPT时找不到适合的素材资源,最后导致自己做出来的幻灯片丑得不能见人。好吧!今天小编就给大家安利几个非常实用的PPT素材网站,赶紧看看有没有适合你的。一、插件网站1、PA口袋动画这是一个非常强大的P…

【云计算的1024种玩法】二.轻松搭建WordPress网站应用

【云计算的1024种玩法】二.轻松搭建WordPress网站应用题一.创建安全组1.1 进入安全组页面1.2 创建安全组1.3 添加安全组规则二. 创建虚拟私有云(VPC)2.1 进入虚拟私有云页面2.2 创建虚拟私有云三.创建服务器ECS3.1 进入云服务器页面3.2 根据配置参数选择…

小型的搜索引擎设计_【开小灶】运营小白参与网站设计,相关流程amp;技术了解一下...

一个网站从设计到开发,本质上没有运营什么事。作为甲方来讲,他需要了解网站制作的要求、需求、预算、形式(样式)、是否代运营等事项,并由甲方负责前期的需求调研、原型设计、DEMO演示,直至高保真设计&#…

【Microsoft Azure 的1024种玩法】 二十一.利用Azure Blob Service 快速实现静态网站托管

【简介】 静态网站是指所有的网页都由静态内容构成,包括客户端执行的脚本(例如JavaScript)。我们可以通过Azure Blob Service 静态网站托管功能将我们的的静态网站托管到Azure Blob 容器里面,并使用Azure Blob提供的静态网站终结…

改ip地址会有什么影响_企业网站建设使用相同的IP地址对SEO优化有什么影响?...

企业网站建设过程中,如果两个或更多的网站使用相同的IP地址是否会影响SEO优化的排名?大土网络根据一些相关信息整理总结出答案:有一定的影响。那么具体有哪些影响呢,下面大土网络就来给大家讲解一下吧!一、服务器稳定大家可能会听…

黄仁勋的元宇宙梦想:虚拟世界将如同互联网站那样不断涌现

作者 | 祝涛 出品 | CSDN(ID:CSDNnews) 今年8月,英伟达在一篇博客文章中透露,在4月份的GTC主题演讲中,有一部分是由黄仁勋的虚拟数字假人出镜代替。虽然英伟达随后澄清这个数字假人只出现了14秒&#xff0…

asp.net mvc2网站部署在IIS6的方法

部署环境: Server 2003 IIS6 1.先安装好IIS6,再安装.net framework 4.0和asp.net mvc 安装包(主要是里面的一个dll,不安装也可以,只需要找到这个dll,将mvc.dll 放入网站bin目录下,这个dll文件的默认路径是C…

java实现禁用文章功能_防止网站文章被采集:禁止F12,禁止Ctrl+s,禁止ctrl+u,禁止选中文字,禁止鼠标右键...

为什么要学会网站防采集方法:通过JavaScript禁止F12,禁止Ctrls,禁止ctrlu,禁止选中文字,禁止鼠标右键等方法?作为一名网站站长,相信大家都应该听说过“文章采集”,自己原创手写的文章…