您当前的位置:首页 > 电脑百科 > 站长技术 > SEO

使用vue后怎么针对搜索引擎做SEO优化?

时间:2019-08-08 09:18:20  来源:  作者:

使用vue后怎么针对搜索引擎做SEO优化?

 

什么是seo

搜索引擎优化(Search engine optimization,简称SEO),指为了提升网页在搜索引擎自然搜索结果中(非商业性推广结果)的收录数量以及排序位置而做的优化行为,是为了从搜索引擎中获得更多的免费流量,以及更好的展现形象。

SEM(Search engine marketing,搜索引擎营销),则既包括了SEO,也包括了付费的商业推广优化。

本文主要介绍的是前端如何在代码上做SEO以及单页项目如何实现SEO。

搜索引擎工作原理

要了解SEO,首先得了解搜索引擎的工作原理,其原理是比较复杂,流程简化如下:

爬虫抓取网页内容

一般爬虫抓取页面内容是先从一个页面出发,从中提取出其他页面的链接,然后当作下一个请求的对象,一直重复这个过程。所以要有良好的SEO,需要你在各大网站上拥有外链,这样会提高你的网站被搜索引擎爬虫的几率。

分析网页内容

爬虫拿到html之后,就会对其内容进行分析。一般需要进行去杂、分词、简历索引数据库。什么是索引数据库呢?简单地说就是记录一个词在哪些文档中出现、出现次数、出现的位置等等。为什么要简历索引数据库呢?是为了快速查找。

搜索和排序

搜索会根据你输入的关键词,分别查询其对应的索引数据库,并对结果进行处理和排序。

前端编码的SEO

网站结构

网站结构要清晰。一般网站的结构是树形的,一般分为三个层次:首页 → 频道页(列表页) → 文章页(详情页)。

网站的结构要扁平。结构层数越少越好,一般不要超过三层,搜索引擎一般到了第三层就不想继续深入地爬取了。多数的网站,例如掘金、雪球等,他们的网站结构是两层,他们的首页和频道页是同一个页面。

导航

页面应该要有简明的导航。导航可以让搜索引擎知道网站的结构,也可以让搜索引擎知道当前页面在网站结构所在的层次。 建议:

  • 每一个页面都包含导航。
  • 对于内容较多的网站可以采用面包屑导航。
  • 链接使用文字链接,如果是图片,则通过alt属性告知搜索引擎链接的指向。

规范的URL

规范、简单、易理解的URL能让搜索引擎更好地抓取内容。建议:

  • 同一个页面,只对应一个url 。多个url可以采用301进行重定向。
  • url可以反应网页内容以及网站结构信息。例如www.a.com/blog、www.a.com/blog/123、www.a.com/article。
  • url尽量简短。
  • 尽量减少动态url中包含的变量参数。

提交Sitemap

Sitemap 可通知搜索引擎他们网站上有哪些可供抓取的网页,以便搜索引擎可以更加智能地抓取网站。

robot.txt

搜索引擎爬行网站第一个访问的文件就是robots.txt。在这个文件中声明该网站中不想被蜘蛛访问的部分,这样,该网站的部分或全部内容就可以不被搜索引擎访问和收录了,或者可以通过robots.txt指定使搜索引擎只收录指定的内容。

合理的HTTP返回码

不同的返回码,搜索引擎的处理逻辑是不一样的。

  • 如果站点临时关闭,当网页不能打开时,建议使用503状态。503可以告知百度spider该页面临时不可访问,请过段时间再重试。
  • 如果百度spider对您的站点抓取压力过大,请尽量不要使用404,同样建议返回503。这样百度spider会过段时间再来尝试抓取这个链接,如果那个时间站点空闲,那它就会被成功抓取了。
  • 有一些网站希望百度只收录部分内容,例如审核后的内容,累积一段时间的新用户页等等。在这种情况,建议新发内容暂时返回403,等审核或做好处理之后,再返回正常状态的返回码。
  • 站点迁移,或域名更换时,请使用301返回。

合适的title

title是告诉搜索引擎网页的主要内容。

  • 每个网页应该有一个独一无二的标题,切忌所有的页面都使用默认标题
  • 标题要主题明确和精练,包含这个网页中最重要的内容,且不罗列与网页内容不相关的信息
  • 用户浏览通常是从左到右的,重要的内容应该放到title的靠前的位置

百度建议描述:

  • 首页:网站名称 或者 网站名称_服务介绍/产品介绍
  • 频道页:频道名称_网站名称
  • 文章页:文章标题_频道名称_网站名称

合适的description

description是对网页内容的精练概括。这个标签存在与否不影响网页权值,只会用做搜索结果摘要的一个选择目标。 百度推荐做法:

  • 为每个网页创建不同的description,避免所有网页都使用同样的描述
  • 网站首页、频道页、产品参数页等没有摘要的网页最适合使用description
  • 准确的描述网页,不要堆砌关键词,长度合理

HTML语义化

HTML语义化是用标签和属性来描述内容。所以HTML语义化是SEO的基石。一般建议:

  • HTML结构要清晰和简洁
  • 跳转使用<a>标签,不要使用js跳转
  • 图片加alt说明
  • 文章用<article>标签承载
  • ...

Vue单页项目的SEO

目前,对于SEO支持比较好的项目方案是采用服务端渲染。所以如果项目有SEO需求,那么比较好的方案是服务端渲染。

如果你已经采用了前后分离的单页项目,而你的网站内容不需要AJAX去获取内容和展示内容,那么可以试试 prerender-spa-plugin 这个插件,这个插件是一个webpack插件,可以帮助你在打包过程中通过无头浏览器去渲染你的页面,并生成对应的HTML。当然这个方案适合你的路由是静态的,并且路由数量非海量。

如果你的内容是AJAX动态获取的,那么vue单页项目可以试试 prerender ,这个是一个预渲染服务,可以帮你通过无头浏览器渲染页面,并返回HTML。这个方案和prerender-spa-plugin很相似,都是通过无头浏览器去渲染页面,不同的是渲染的时机,prerender-spa-plugin是在打包过程中渲染,注定了其只能渲染静态路由,而prerender 是在请求时渲染,所以可以渲染动态的路由。下面我重点介绍一下prerender方案。

prerender 的使用

1、安装

$ npm install prerender
复制代码

2、启动服务 server.js

const prerender = require('prerender');
const server = prerender();
server.start();
复制代码

3、测试

http://localhost:3000/render?url=https://www.example.com/
复制代码

经过上面三个步骤,你就已经启动一个预渲染服务,并且会返回"www.example.com/"的内容,整个过程还是比较简单的。其github官网上面还介绍了它的许多中间件(Middleware),例如prerender-node (Express)、Nginx.conf等,那么这个和 prerender 是什么关系呢?是否直接使用中间件就可以呢?下面介绍prerender是如何工作的吧。

prerender方案的原理

首先服务端接收到一个页面的请求,然后判断这个请求是否来自搜索引擎的爬虫,如果不是,则直接返回单页项目的HTML,按照普通单页项目的工作模式(客户端渲染),如果是,则把请求转发给prerender服务,prerender服务会通过无头浏览器进行预渲染,渲染完成把内容返回,这样爬虫就可以拿到有内容的HTML了。prerender中间件就是用来判断请求是否来自搜索引擎爬虫和转发请求的。

值得注意的是,prerender服务是不包含无头浏览器的,所以需要自行安装chrome浏览器。因此,整个方案运行需要三部分:

  • chrome浏览器
  • prerender服务
  • prerender中间件

那么prerender服务是怎么知道页面渲染已经完成的呢? Prerender服务通过计算未完成的请求数量,来确定页面何时完成加载。一旦未完成的请求数达到零,服务会等待一段时间(默认500ms),然后保存HTML。

prerender的最佳实践

经过实践,请求一个经过prerender渲染的页面是时间,快的时候约2s,慢的时候会长达8s。一般来说,请求时间在3s以内是最好的。所以我从以下几个方面入手,探索prerender的优化方法。

减少资源请求的时间

影响prerender渲染时间的资源主要有js请求资源和api请求资源,api请求时间一般由后端决定,所以我考虑的是如何减少js资源请求时间。一般prerender服务渲染的资源请求地址是由页面请求URL决定的,所以一般是线上的地址,如果我们把prerender服务部署在网站的服务器上,让prerender服务请求资源走本地,那么就可以缩短资源的请求时间了。

如果你的线上服务是开启了CDN的话,那么资源走本地还有一个好处,就是可以节省CDN流量。

优化prerender选项

prerender提供了一些自定义的选项

pageDoneCheckInterval:这个参数是prerender检查页面请求是否完成的定时器时间,默认是500ms,即每500ms检查未完成的请求数量是否为零,我将其修改为100ms,提高其检查的频率。

waitAfterLastRequest:这个参数是最后一个请求完成之后等待的时间,默认是500ms,主要是请求完成之后,页面更新渲染需要时间,立即返回的话,可能请求的数据来不及渲染,我将时间修改为200ms。

prerender插件

httpHeaders —— 返回合理的HTTP状态码

添加httpHeaders这个插件,可以更改返回的HTML的HTTP状态码,添加方式如下

var prerender = require('prerender');
var server = prerender()
server.use(prerender.httpHeaders());
server.start();
复制代码

prerender通过识别在<head>中的<meta>标签来设置页面返回的HTTP状态码。

<meta name="prerender-status-code" content="404">
复制代码

如果你需要设置301重定向,可以这样做

<meta name="prerender-status-code" content="301">
<meta name="prerender-header" content="Location: http://www.xxx.com">
复制代码

blockResources —— 无需等待图片资源

prerender是根据未完成的请求数来判断是否渲染结束的。但是我们给搜索引擎返回的HTML只需要渲染通过js动态增加的DOM,其实不需要渲染css或者渲染接口返回的图片的,我们来看下prerender在渲染中是否会请求这些资源。 prerender可以开启是否打印请求,开启方式如下:

var server = prerender({
 logRequests: true
});
复制代码

开启之后就可以在控制台看到请求了,请求里面是包含css和图片资源的。

2019-07-17T04:34:03.180Z - 47 http://xxx.com/css/chunk-f4a02584.da8dca38.css
2019-07-17T04:34:03.180Z {
 source: 'network',
 level: 'error',
 text: 'Failed to load resource: net::ERR_INVALID_ARGUMENT',
 timestamp: 1563338043130.37,
 url: 'http://xxx.com/wefid/css/chunk-f4a02584.da8dca38.css',
 networkRequestId: '1000039068.65' 
}
2019-07-17T04:34:03.924Z + 3 http://xxx.com/img/erweima_wx.a84d82ef.jpg
2019-07-17T04:34:03.924Z + 4 http://xxx.com/img/erweima_wb.06971584.png
复制代码

为什么prerender要等待这些资源呢?因为prerender服务还有一个强大的功能,那就是Prerender.com,其可以通过一个接口给你返回如下的东西:

  • 网页的HTML文件
  • 网页的屏幕截图(视口或全屏)
  • 网页的PDF文件
  • 网页的HAR文件
  • 执行您自己的JAVAscript并返回json和HTML

很明显,这些功能是需要加载你所需的CSS或图片资源的,不然网页显示有问题。这个时候,如果你只需要满足SEO需求而不需要Prerender.com的功能的话,那么blockResources插件就可以派上用场了。插件添加方式如下:

var prerender = require('prerender');
var server = prerender()
server.use(prerender.blockResources());
server.start();
复制代码

使用blockResources插件之后,图片资源和字体资源会被abort(舍弃)。

自定义渲染结束时间

如果你想更细粒化地控制prerender的返回时机,提前结束或者延后结束,那么可以使用这个标志window.prerenderReady。

首先需要设置window.prerenderReady为false,prerender在检测到window.prerenderReady为false之后,会等待你设置为true再返回结果。

<script> window.prerenderReady = false; </script>
复制代码

当你渲染完成之后,一般在接口请求完成并渲染完成之后

window.prerenderReady = true;
复制代码

这样你就可以更加自由地控制渲染结束的时机。

开启缓存

缓存这里有两个方面,一方面是HTTP缓存(浏览器缓存),另一方面是渲染结果缓存。

首先HTTP缓存可以让prerender服务不用频繁地发起资源请求,节省传输时间。这个我就不展开将,我想讲的是渲染结果缓存。prerender中间件提供了两种缓存方式, redis 或者 memcached ,以redis为例:

$ npm install redis
复制代码
var redis = require("redis"),
client = redis.createClient();

prerender.set('beforeRender', function(req, done) {
	client.get(req.url, done);
}).set('afterRender', function(err, req, prerender_res) {
	client.set(req.url, prerender_res.body)
});
复制代码

你可以通过 beforeRender 和 afterRender 这两个钩子进行细粒化地控制,对于内容变化频繁的不缓存或缓存时间短,对于内容变化不频繁的设置长时间缓存。开启缓存不仅可以加速返回时间,还可以减轻服务器的压力。

统计和监控

统计和监控可以放在中间件的 afterRender 中进行。

prerender.set('afterRender', function(err, req, prerender_res) {
 if(err){
 // 这里是错误监控代码
 // ...
 // return
 }
 let {headers: req_headers, originalUrl} = req
 let {headers: res_headers, body} = prerender_res
 // 这里是统计代码,可以保存请求和返回的相关信息
})
复制代码

小结

通过以上的优化方法(除了自定义渲染结束时间和开启缓存),我已经将HTML的请求时间稳定在2.5s左右。

总结

以上就是我想讲的关于前端编码SEO的全部内容,总而言之,就是

  • 合适的HTML标签和属性
  • 合理的HTTP状态码
  • Sitemap & robot.txt
  • 合适的渲染方案

参考文章:

https://juejin.im/post/5d2d64f36fb9a07eba2c6f65



Tags:SEO优化   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
摘要:如今越来越多的企业都在做网站优化,来增加品牌曝光率,从而获得客户实现销售。所以现在很多商家都会利用SEO优化做相应的营销和推广,从而引起更多的关注网站。企业做网站优...【详细内容】
2021-11-03  Tags: SEO优化  点击:(27)  评论:(0)  加入收藏
如果你是一个企业主,你有建立企业官方网站的经历,在2-3年的运营过程中,我相信你至少做过一次网站改版,甚至是SEO策略的大调整。理由非常简单:当我们刚开始建立公司的时候,很多时间...【详细内容】
2021-10-22  Tags: SEO优化  点击:(38)  评论:(0)  加入收藏
SEO优化就是让网站排名靠前,这不是事实。SEO的真正目的不在这里,而是用户体验。如果我们做SEO只是为了好的排名,而忽视用户体验,那么这是不可取的,流量是SEO的核心。1、SEO的核心...【详细内容】
2021-08-20  Tags: SEO优化  点击:(62)  评论:(0)  加入收藏
很多人对于SEO优化没有一个概念,特别是在网站开发的过程中,负责任的开发商会开发代码的时候布置好SEO优化所需的结构,这样就方便运营人员后期的优化。但是有很多开发商可能会...【详细内容】
2021-04-15  Tags: SEO优化  点击:(155)  评论:(0)  加入收藏
一直以来,当我们讨论SEO的成功时,我们经常把搜索引擎排名作为一个重要的衡量标准。但有时,我们会坐下来静静地思考SEO排名的价值吗?我们的客户真的关心你的排名吗?那么,排名是衡量...【详细内容】
2021-04-07  Tags: SEO优化  点击:(207)  评论:(0)  加入收藏
随着移动互联网的快速发展,用户从PC端向移动端迁移的大趋势更加明显,但这也使得移动手机网站的seo优化工作还处于探索阶段,很多SEO和站长也都有了一些疑问,手机SEO优化流量大吗?...【详细内容】
2021-01-22  Tags: SEO优化  点击:(165)  评论:(0)  加入收藏
移动互联网的推出,各位站长也纷纷的挤入了移动化网站,移动网站可以说是一个比一个做的漂亮,那么既然做了移动化的网站,那少不了的自然是SEO优化,在PC端上你的网站可能在某个词上...【详细内容】
2020-10-14  Tags: SEO优化  点击:(89)  评论:(0)  加入收藏
评判一个网站的质量如何,不是仅仅只看网站的某几个方面,更重要的是对网站整体的一个客观而全面的评估评价,包括内容、框架、设计、速度、创新等等。而在网站这个整体中,网站的首...【详细内容】
2020-08-07  Tags: SEO优化  点击:(72)  评论:(0)  加入收藏
这个我今早上逛坛子发现的一个有意思的网站,所以我特意看了一下。先来看看网站数据。内容聚合=用户需求满足百度排名这是进三个网站排名情况,可以看出六月中旬排名慢慢起来。...【详细内容】
2020-08-03  Tags: SEO优化  点击:(76)  评论:(0)  加入收藏
超级排名系统小编这里给大家列举了一些SEO人员日常使用频率较高的一些搜索指令,这些指令对普通用户来讲,毫无用处,但是对于专业人士老说,会让你精确查询到你需要的信息。SEO常用...【详细内容】
2020-04-19  Tags: SEO优化  点击:(80)  评论:(0)  加入收藏
▌简易百科推荐
在SEO优化中,最重要的评估之一就是确定网站上存在哪些HTTP状态代码。这些代码可能会变得很复杂,成为一个难题,必须先解决这些难题,然后才能完成其他任务。例如,如果你放置的页面...【详细内容】
2021-12-24  MFSHOP跨境资讯    Tags:HTTP状态代码   点击:(5)  评论:(0)  加入收藏
「内事不决问百度,外事不决问谷歌」这个简单的口号,让不少网民从此记住了百度。在国内互联网生态中,百度的搜索引擎占据了超过80%的市场份额,特别是当谷歌退出中国市场后,它显然...【详细内容】
2021-12-24  千捷科技    Tags:SEO   点击:(6)  评论:(0)  加入收藏
对于一些文章页面来说,想要得到提升页面进行整体质量度,除了优化研究文章主体主要内容之外,调用相关分析文章也是企业优化的重点。那么我们具体怎么调用相关文章呢,星宇SEO今天...【详细内容】
2021-12-22  SEO星宇干货分享    Tags:优化   点击:(6)  评论:(0)  加入收藏
最近发现B2B的海外推广貌似是一个挺大的缺口,很多厂长或老板不了解独立站的流量构成和玩法,无论是自然流量还是付费流量。也衍生了很多培训(咦,这是不是我副业的好机会?)所以这次...【详细内容】
2021-11-11  图帕先生    Tags:谷歌SEO   点击:(32)  评论:(0)  加入收藏
摘要:如今越来越多的企业都在做网站优化,来增加品牌曝光率,从而获得客户实现销售。所以现在很多商家都会利用SEO优化做相应的营销和推广,从而引起更多的关注网站。企业做网站优...【详细内容】
2021-11-03  参满楼海参88    Tags:SEO   点击:(27)  评论:(0)  加入收藏
做SEO优化总是会遇到的问题:每天都在做优化,网站每天在发文章,外链也发了很多,为什么关键词排名还是上不去呢?下文整理了一些优化中容易被忽略的细节来和大家分享。1、外部链接...【详细内容】
2021-10-28  E获客   企鹅号  Tags:网站优化   点击:(41)  评论:(0)  加入收藏
很多新手站长容易出现网站标题修改后,百度快照迟迟不见更新,这种情况应该如何操作?对于不同的网站,搜索引擎的反应速度不太一样,很多网站在修改标题或者内容标题后,收录显示于本身...【详细内容】
2021-10-27  她乎    Tags:快照   点击:(31)  评论:(0)  加入收藏
在移动互联网营销的网站,都需要做到站外+站内的相互协调,两者缺一不可。然而,网站外链大家都知道它是维系网站与外界的链接,能够增加网站的流量及权重等,却不知道网站内链也有着...【详细内容】
2021-10-22  诠网科技    Tags:内链   点击:(54)  评论:(0)  加入收藏
在SEO优化的职业里,运用搜索引擎对网页内容的检索原理,对网站内部外部资源进行优化整合,然后到达抱负的作用,便利客户快速找到想要的信息。在分类上也可分白帽SEO和黑帽SEO。一...【详细内容】
2021-10-22  诠网科技  搜狐号  Tags:百度SEO   点击:(36)  评论:(0)  加入收藏
如果你是一个企业主,你有建立企业官方网站的经历,在2-3年的运营过程中,我相信你至少做过一次网站改版,甚至是SEO策略的大调整。理由非常简单:当我们刚开始建立公司的时候,很多时间...【详细内容】
2021-10-22  小彭知识站    Tags:SEO   点击:(38)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条