互联网信息爆发式增长,如何有效的获取并利用这些信息是搜索引擎工作中的首要环节。数据抓取系统作为整个搜索系统中的上游,主要负责互联网信息的搜集、保存、更新环节,它像蜘蛛一样在网络间爬来爬去,因此通常会被叫做“spider”。例如我们常用的几家通用搜索引擎蜘蛛被称为:Baiduspdier、googlebot、SogouWebSpider等。
Spider抓取系统是搜索引擎数据来源的重要保证,如果把web理解为一个有向图,那么spider的工作过程可以认为是对这个有向图的遍历。从一些重要的种子URL开始,通过页面上的超链接关系,不断的发现新URL并抓取,尽最大可能抓取到更多的有价值网页。对于类似百度这样的大型spider系统,因为每时每刻都存在网页被修改、删除或出现新的超链接的可能,因此,还要对spider过去抓取过的页面保持更新,维护一个URL库和页面库。
下图为spider抓取系统的基本框架图,其中包括链接存储系统、链接选取系统、DNS解析服务系统、抓取调度系统、网页分析系统、链接提取系统、链接分析系统、网页存储系统。Baiduspider即是通过这种系统的通力合作完成对互联网页面的抓取工作。
Baiduspider主要抓取策略类型
上图看似简单,但其实Baiduspider在抓取过程中面对的是一个超级复杂的网络环境,为了使系统可以抓取到尽可能多的有价值资源并保持系统及实际环境中页面的一致性同时不给网站体验造成压力,会设计多种复杂的抓取策略。以下做简单介绍:
1、抓取友好性
互联网资源庞大的数量级,这就要求抓取系统尽可能的高效利用带宽,在有限的硬件和带宽资源下尽可能多的抓取到有价值资源。这就造成了另一个问题,耗费被抓网站的带宽造成访问压力,如果程度过大将直接影响被抓网站的正常用户访问行为。因此,在抓取过程中就要进行一定的抓取压力控制,达到既不影响网站的正常用户访问又能尽量多的抓取到有价值资源的目的。
通常情况下,最基本的是基于ip的压力控制。这是因为如果基于域名,可能存在一个域名对多个ip(很多大网站)或多个域名对应同一个ip(小网站共享ip)的问题。实际中,往往根据ip及域名的多种条件进行压力调配控制。同时,站长平台也推出了压力反馈工具,站长可以人工调配对自己网站的抓取压力,这时百度spider将优先按照站长的要求进行抓取压力控制。
对同一个站点的抓取速度控制一般分为两类:其一,一段时间内的抓取频率;其二,一段时间内的抓取流量。同一站点不同的时间抓取速度也会不同,例如夜深人静月黑风高时候抓取的可能就会快一些,也视具体站点类型而定,主要思想是错开正常用户访问高峰,不断的调整。对于不同站点,也需要不同的抓取速度。
2、常用抓取返回码示意
简单介绍几种百度支持的返回码:
1)最常见的404代表“NOTFOUND”,认为网页已经失效,通常将在库中删除,同时短期内如果spider再次发现这条url也不会抓取;
2)503代表“ServiceUnavailable”,认为网页临时不可访问,通常网站临时关闭,带宽有限等会产生这种情况。对于网页返回503状态码,百度spider不会把这条url直接删除,同时短期内将会反复访问几次,如果网页已恢复,则正常抓取;如果继续返回503,那么这条url仍会被认为是失效链接,从库中删除。
3)403代表“Forbidden”,认为网页目前禁止访问。如果是新url,spider暂时不抓取,短期内同样会反复访问几次;如果是已收录url,不会直接删除,短期内同样反复访问几次。如果网页正常访问,则正常抓取;如果仍然禁止访问,那么这条url也会被认为是失效链接,从库中删除。
4)301代表是“MovedPermanently”,认为网页重定向至新url。当遇到站点迁移、域名更换、站点改版的情况时,我们推荐使用301返回码,同时使用站长平台网站改版工具,以减少改版对网站流量造成的损失。
3、多种url重定向的识别
互联网中一部分网页因为各种各样的原因存在url重定向状态,为了对这部分资源正常抓取,就要求spider对url重定向进行识别判断,同时防止作弊行为。重定向可分为三类:http30x重定向、metarefresh重定向和js重定向。另外,百度也支持Canonical标签,在效果上可以认为也是一种间接的重定向。
4、抓取优先级调配
由于互联网资源规模的巨大以及迅速的变化,对于搜索引擎来说全部抓取到并合理的更新保持一致性几乎是不可能的事情,因此这就要求抓取系统设计一套合理的抓取优先级调配策略。主要包括:深度优先遍历策略、宽度优先遍历策略、pr优先策略、反链策略、社会化分享指导策略等等。每个策略各有优劣,在实际情况中往往是多种策略结合使用以达到最优的抓取效果。
5、重复url的过滤
spider在抓取过程中需要判断一个页面是否已经抓取过了,如果还没有抓取再进行抓取网页的行为并放在已抓取网址集合中。判断是否已经抓取其中涉及到最核心的是快速查找并对比,同时涉及到url归一化识别,例如一个url中包含大量无效参数而实际是同一个页面,这将视为同一个url来对待。
6、暗网数据的获取
互联网中存在着大量的搜索引擎暂时无法抓取到的数据,被称为暗网数据。一方面,很多网站的大量数据是存在于网络数据库中,spider难以采用抓取网页的方式获得完整内容;另一方面,由于网络环境、网站本身不符合规范、孤岛等等问题,也会造成搜索引擎无法抓取。目前来说,对于暗网数据的获取主要思路仍然是通过开放平台采用数据提交的方式来解决,例如“百度站长平台”“百度开放平台”等等。
7、抓取反作弊
spider在抓取过程中往往会遇到所谓抓取黑洞或者面临大量低质量页面的困扰,这就要求抓取系统中同样需要设计一套完善的抓取反作弊系统。例如分析url特征、分析页面大小及内容、分析站点规模对应抓取规模等等。
Baiduspider抓取过程中涉及的网络协议
刚才提到百度搜索引擎会设计复杂的抓取策略,其实搜索引擎与资源提供者之间存在相互依赖的关系,其中搜索引擎需要站长为其提供资源,否则搜索引擎就无法满足用户检索需求;而站长需要通过搜索引擎将自己的内容推广出去获取更多的受众。spider抓取系统直接涉及互联网资源提供者的利益,为了使搜素引擎与站长能够达到双赢,在抓取过程中双方必须遵守一定的规范,以便于双方的数据处理及对接。这种过程中遵守的规范也就是日常中我们所说的一些网络协议。
以下简单列举:
http协议:超文本传输协议,是互联网上应用最为广泛的一种网络协议,客户端和服务器端请求和应答的标准。客户端一般情况是指终端用户,服务器端即指网站。终端用户通过浏览器、蜘蛛等向服务器指定端口发送http请求。发送http请求会返回对应的httpheader信息,可以看到包括是否成功、服务器类型、网页最近更新时间等内容。
https协议:实际是加密版http,一种更加安全的数据传输协议。
UA属性:UA即user-agent,是http协议中的一个属性,代表了终端的身份,向服务器端表明我是谁来干嘛,进而服务器端可以根据不同的身份来做出不同的反馈结果。
robots协议:robots.txt是搜索引擎访问一个网站时要访问的第一个文件,用以来确定哪些是被允许抓取的哪些是被禁止抓取的。robots.txt必须放在网站根目录下,且文件名要小写。详细的robots.txt写法可参考http://www.robotstxt.org。百度严格按照robots协议执行,另外,同样支持网页内容中添加的名为robots的meta标签,index、follow、nofollow等指令。
Baiduspider抓取频次原则及调整方法
Baiduspider根据上述网站设置的协议对站点页面进行抓取,但是不可能做到对所有站点一视同仁,会综合考虑站点实际情况确定一个抓取配额,每天定量抓取站点内容,即我们常说的抓取频次。那么百度搜索引擎是根据什么指标来确定对一个网站的抓取频次的呢,主要指标有四个:
1,网站更新频率:更新快多来,更新慢少来,直接影响Baiduspider的来访频率
2,网站更新质量:更新频率提高了,仅仅是吸引了Baiduspier的注意,Baiduspider对质量是有严格要求的,如果网站每天更新出的大量内容都被Baiduspider判定为低质页面,依然没有意义。
3,连通度:网站应该安全稳定、对Baiduspider保持畅通,经常给Baiduspider吃闭门羹可不是好事情
4,站点评价:百度搜索引擎对每个站点都会有一个评价,且这个评价会根据站点情况不断变化,是百度搜索引擎对站点的一个基础打分(绝非外界所说的百度权重),是百度内部一个非常机密的数据。站点评级从不独立使用,会配合其它因子和阈值一起共同影响对网站的抓取和排序。
抓取频次间接决定着网站有多少页面有可能被建库收录,如此重要的数值如果不符合站长预期该如何调整呢?百度站长平台提供了抓取频次工具,并已完成多次升级。该工具除了提供抓取统计数据外,还提供“频次调整”功能,站长根据实际情况向百度站长平台提出希望Baiduspider增加来访或减少来访的请求,工具会根据站长的意愿和实际情况进行调整。
造成Baiduspider抓取异常的原因
有一些网页,内容优质,用户也可以正常访问,但是Baiduspider却无法正常访问并抓取,造成搜索结果覆盖率缺失,对百度搜索引擎对站点都是一种损失,百度把这种情况叫“抓取异常”。对于大量内容无法正常抓取的网站,百度搜索引擎会认为网站存在用户体验上的缺陷,并降低对网站的评价,在抓取、索引、排序上都会受到一定程度的负面影响,最终影响到网站从百度获取的流量。
下面向站长介绍一些常见的抓取异常原因:
1,服务器连接异常
服务器连接异常会有两种情况:一种是站点不稳定,Baiduspider尝试连接您网站的服务器时出现暂时无法连接的情况;一种是Baiduspider一直无法连接上您网站的服务器。
造成服务器连接异常的原因通常是您的网站服务器过大,超负荷运转。也有可能是您的网站运行不正常,请检查网站的web服务器(如Apache、iis)是否安装且正常运行,并使用浏览器检查主要页面能否正常访问。您的网站和主机还可能阻止了Baiduspider的访问,您需要检查网站和主机的防火墙。
2,网络运营商异常:网络运营商分电信和联通两种,Baiduspider通过电信或网通无法访问您的网站。如果出现这种情况,您需要与网络服务运营商进行联系,或者购买拥有双线服务的空间或者购买cdn服务。
3,DNS异常:当Baiduspider无法解析您网站的IP时,会出现DNS异常。可能是您的网站IP地址错误,或者域名服务商把Baiduspider封禁。请使用WHOIS或者host查询自己网站IP地址是否正确且可解析,如果不正确或无法解析,请与域名注册商联系,更新您的IP地址。
4,IP封禁:IP封禁为:限制网络的出口IP地址,禁止该IP段的使用者进行内容访问,在这里特指封禁了BaiduspiderIP。当您的网站不希望Baiduspider访问时,才需要该设置,如果您希望Baiduspider访问您的网站,请检查相关设置中是否误添加了BaiduspiderIP。也有可能是您网站所在的空间服务商把百度IP进行了封禁,这时您需要联系服务商更改设置。
5,UA封禁:UA即为用户代理(User-Agent),服务器通过UA识别访问者的身份。当网站针对指定UA的访问,返回异常页面(如403,500)或跳转到其他页面的情况,即为UA封禁。当您的网站不希望Baiduspider访问时,才需要该设置,如果您希望Baiduspider访问您的网站,useragent相关的设置中是否有BaiduspiderUA,并及时修改。
6,死链:页面已经无效,无法对用户提供任何有价值信息的页面就是死链接,包括协议死链和内容死链两种形式:
协议死链:页面的TCP协议状态/HTTP协议状态明确表示的死链,常见的如404、403、503状态等。
内容死链:服务器返回状态是正常的,但内容已经变更为不存在、已删除或需要权限等与原内容无关的信息页面。
对于死链,我们建议站点使用协议死链,并通过百度站长平台--死链工具向百度提交,以便百度更快地发现死链,减少死链对用户以及搜索引擎造成的负面影响。
7,异常跳转:将网络请求重新指向其他位置即为跳转。异常跳转指的是以下几种情况:
1)当前该页面为无效页面(内容已删除、死链等),直接跳转到前一目录或者首页,百度建议站长将该无效页面的入口超链接删除掉
2)跳转到出错或者无效页面
注意:对于长时间跳转到其他域名的情况,如网站更换域名,百度建议使用301跳转协议进行设置。
8,其他异常:
1)针对百度refer的异常:网页针对来自百度的refer返回不同于正常内容的行为。
2)针对百度ua的异常:网页对百度UA返回不同于页面原内容的行为。
3)JS跳转异常:网页加载了百度无法识别的JS跳转代码,使得用户通过搜索结果进入页面后发生了跳转的情况。
4)压力过大引起的偶然封禁:百度会根据站点的规模、访问量等信息,自动设定一个合理的抓取压力。但是在异常情况下,如压力控制失常时,服务器会根据自身负荷进行保护性的偶然封禁。这种情况下,请在返回码中返回503(其含义是“ServiceUnavailable”),这样Baiduspider会过段时间再来尝试抓取这个链接,如果网站已空闲,则会被成功抓取。
新链接重要程度判断
好啦,上面我们说了影响Baiduspider正常抓取的原因,下面就要说说Baiduspider的一些判断原则了。在建库环节前,Baiduspide会对页面进行初步内容分析和链接分析,通过内容分析决定该网页是否需要建索引库,通过链接分析发现更多网页,再对更多网页进行抓取——分析——是否建库&发现新链接的流程。理论上,Baiduspider会将新页面上所有能“看到”的链接都抓取回来,那么面对众多新链接,Baiduspider根据什么判断哪个更重要呢?两方面:
第一,对用户的价值:
1,内容独特,百度搜索引擎喜欢unique的内容
2,主体突出,切不要出现网页主体内容不突出而被搜索引擎误判为空短页面不抓取
3,内容丰富
4,广告适当
第二,链接重要程度:
1,目录层级——浅层优先
2,链接在站内的受欢迎程度
百度优先建重要库的原则
Baiduspider抓了多少页面并不是最重要的,重要的是有多少页面被建索引库,即我们常说的“建库”。众所周知,搜索引擎的索引库是分层级的,优质的网页会被分配到重要索引库,普通网页会待在普通库,再差一些的网页会被分配到低级库去当补充材料。目前60%的检索需求只调用重要索引库即可满足,这也就解释了为什么有些网站的收录量超高流量却一直不理想。
那么,哪些网页可以进入优质索引库呢。其实总的原则就是一个:对用户的价值。包括却不仅于:
1,有时效性且有价值的页面:在这里,时效性和价值是并列关系,缺一不可。有些站点为了产生时效性内容页面做了大量采集工作,产生了一堆无价值面页,也是百度不愿看到的.
2,内容优质的专题页面:专题页面的内容不一定完全是原创的,即可以很好地把各方内容整合在一起,或者增加一些新鲜的内容,比如观点和评论,给用户更丰富全面的内容。
3,高价值原创内容页面:百度把原创定义为花费一定成本、大量经验积累提取后形成的文章。千万不要再问我们伪原创是不是原创。
4,重要个人页面:这里仅举一个例子,科比在新浪微博开户了,需要他不经常更新,但对于百度来说,它仍然是一个极重要的页面。
哪些网页无法建入索引库
上述优质网页进了索引库,那其实互联网上大部分网站根本没有被百度收录。并非是百度没有发现他们,而是在建库前的筛选环节被过滤掉了。那怎样的网页在最初环节就被过滤掉了呢:
1,重复内容的网页:互联网上已有的内容,百度必然没有必要再收录。
2,主体内容空短的网页
1)有些内容使用了百度spider无法解析的技术,如JS、AJAX等,虽然用户访问能看到丰富的内容,依然会被搜索引擎抛弃
2)加载速度过慢的网页,也有可能被当作空短页面处理,注意广告加载时间算在网页整体加载时间内。
3)很多主体不突出的网页即使被抓取回来也会在这个环节被抛弃。
使用vue后怎么针对搜索引擎做SEO优化?
什么是seo
搜索引擎优化(Searchengineoptimization,简称SEO),指为了提升网页在搜索引擎自然搜索结果中(非商业性推广结果)的收录数量以及排序位置而做的优化行为,是为了从搜索引擎中获得更多的免费流量,以及更好的展现形象。
SEM(Searchenginemarketing,搜索引擎营销),则既包括了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结构要清晰和简洁跳转使用标签,不要使用js跳转图片加alt说明文章用标签承载...Vue单页项目的SEO目前,对于SEO支持比较好的项目方案是采用服务端渲染。所以如果项目有SEO需求,那么比较好的方案是服务端渲染。
如果你已经采用了前后分离的单页项目,而你的网站内容不需要AJAX去获取内容和展示内容,那么可以试试prerender-spa-plugin这个插件,这个插件是一个webpack插件,可以帮助你在打包过程中通过无头浏览器去渲染你的页面,并生成对应的HTML。当然这个方案适合你的路由是静态的,并且路由数量非海量。
如果你的内容是AJAX动态获取的,那么vue单页项目可以试试prerender,这个是一个预渲染服务,可以帮你通过无头浏览器渲染页面,并返回HTML。这个方案和prerender-spa-plugin很相似,都是通过无头浏览器去渲染页面,不同的是渲染的时机,prerender-spa-plugin是在打包过程中渲染,注定了其只能渲染静态路由,而prerender是在请求时渲染,所以可以渲染动态的路由。下面我重点介绍一下prerender方案。
prerender的使用
1、安装
$npminstallprerender复制代码
2、启动服务server.js
constprerender=require('prerender');constserver=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状态码,添加方式如下
varprerender=require('prerender');varserver=prerender()server.use(prerender.httpHeaders());server.start();复制代码
prerender通过识别在
中的标签来设置页面返回的HTTP状态码。如果你需要设置301重定向,可以这样做 blockResources——无需等待图片资源 prerender是根据未完成的请求数来判断是否渲染结束的。但是我们给搜索引擎返回的HTML只需要渲染通过js动态增加的DOM,其实不需要渲染css或者渲染接口返回的图片的,我们来看下prerender在渲染中是否会请求这些资源。prerender可以开启是否打印请求,开启方式如下: varserver=prerender({logRequests:true});复制代码 开启之后就可以在控制台看到请求了,请求里面是包含css和图片资源的。 2019-07-17T04:34:03.180Z-47http://xxx.com/css/chunk-f4a02584.da8dca38.css2019-07-17T04:34:03.180Z{source:'network',level:'error',text:'Failedtoloadresource: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+3http://xxx.com/img/erweima_wx.a84d82ef.jpg2019-07-17T04:34:03.924Z+4http://xxx.com/img/erweima_wb.06971584.png复制代码 为什么prerender要等待这些资源呢?因为prerender服务还有一个强大的功能,那就是Prerender.com,其可以通过一个接口给你返回如下的东西: 很明显,这些功能是需要加载你所需的CSS或图片资源的,不然网页显示有问题。这个时候,如果你只需要满足SEO需求而不需要Prerender.com的功能的话,那么blockResources插件就可以派上用场了。插件添加方式如下: varprerender=require('prerender');varserver=prerender()server.use(prerender.blockResources());server.start();复制代码 使用blockResources插件之后,图片资源和字体资源会被abort(舍弃)。 自定义渲染结束时间 如果你想更细粒化地控制prerender的返回时机,提前结束或者延后结束,那么可以使用这个标志window.prerenderReady。 首先需要设置window.prerenderReady为false,prerender在检测到window.prerenderReady为false之后,会等待你设置为true再返回结果。 window.prerenderReady=false;复制代码 当你渲染完成之后,一般在接口请求完成并渲染完成之后 window.prerenderReady=true;复制代码 这样你就可以更加自由地控制渲染结束的时机。 开启缓存 缓存这里有两个方面,一方面是HTTP缓存(浏览器缓存),另一方面是渲染结果缓存。 首先HTTP缓存可以让prerender服务不用频繁地发起资源请求,节省传输时间。这个我就不展开将,我想讲的是渲染结果缓存。prerender中间件提供了两种缓存方式,redis或者memcached,以redis为例: $npminstallredis复制代码varredis=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}=reqlet{headers:res_headers,body}=prerender_res//这里是统计代码,可以保存请求和返回的相关信息})复制代码 小结 通过以上的优化方法(除了自定义渲染结束时间和开启缓存),我已经将HTML的请求时间稳定在2.5s左右。 以上就是我想讲的关于前端编码SEO的全部内容,总而言之,就是 参考文章: https://juejin.im/post/5d2d64f36fb9a07eba2c6f65 信息转载自网络,更多相关信息请点击:搜索营销大全http:///wlyx/ssyx/
相关文章
-
拼多多怎么代销,怎么找代销的商家啊(拼多多如何代卖商家产品)
而且做代销投资少,成本低,不需要有囤货,只需要开一个拼多多店铺就可以开始营业了,并且做起来后,每天只需花一两个小时用上货,有订单了就可以去商家处下单,发货就行了。,3、把阿里的链接复制到平台上,会出现拼多多登录面。,其实做代销相对来说要容易些,而且拼多多上的监管没有淘宝那么严格,所以上货也非常的方面,投入的成本也很低,赚钱相对来说要简单些,但是简单不意味着就不付出努力,想要赚钱肯定是要投入心血的。
2024-03-18 10:28 -
拼多多怎么快速上产品?如何操作?
在拼多多上开店经常需要上架一些新的产品,这样才能保证店铺的产品数量越来越多,很多人上架产品没有技巧,所以上货速度很慢,其实如果你知道了上货的技巧就可以快速上产品了,下面教大家这些技巧。,而怎么快速使用甩手拼多多上货助理来抓取商品上传呢?商家先下载甩手拼多多上货助理,点击需要抓取的电商平台。,有时候店铺如果有大量的上货需求,而你不知道这些上货技巧的话,那么就会手忙脚乱的,如果你有这些技巧,那么上货就
2024-03-13 16:58 -
抖店怎么抓取不了商品了?商品抓取助手有哪些?
抖店是一款热门的电商平台,让用户可以方便地在抖音上购买各种商品。,然而,有时候用户可能会遇到抓取不了商品的问题,这让人困惑不已。,多种设置选项:抖店商品抓取助手具备灵活的设置选项,可以根据用户需求自定义抓取范围、筛选条件等,帮助用户更精准地获取所需商品。
2024-03-22 16:09 -
拼多多代销怎么样?可以做吗?
所以肯定是可以做的,而且做代销投资少,成本低,不需要有囤货,只需要开一个拼多多店铺就可以开始营业了,并且做起来后,每天只需花一两个小时用上货,有订单了就可以去商家处下单,发货就行了。,3、把阿里的链接复制到平台上,会出现拼多多登录面。,其实做代销相对来说要容易些,而且拼多多上的监管没有淘宝那么严格,所以上货也非常的方面,投入的成本也很低,赚钱相对来说要简单些,但是简单不意味着就不付出努力,想要赚钱
2024-03-22 15:38 -
1688怎么把图片传到拼多多?拼多多如何上货?
我们知道,也有很多人都会在1688上拿货,因为这上边的货便宜质量又不错,最近有小伙伴想知道1688怎么把图片传到拼多多?那么接下来,我们就来给大家讲解一下这方面的内容。,下载拼多多上货助理软件,注册登录。,2、把阿里宝贝的链接复制到平台上,点确定,会出现拼多多登录面。
2024-03-22 15:03 -
拼多多如何做人群标签?怎么定位人群标签?
买家标是根据自身的属性及记录进行整合并打上标签,年龄阶段、搜索浏览收藏购买等。,以脑白金举例就是中老年人,这样打造出来的标就会鲜明。,b同学也是体育爱好者,喜欢买球衣、球鞋、护膝等。
2024-03-22 14:30 -
拼多多怎么代销?如何操作?
而且做代销投资少,成本低,不需要有囤货,只需要开一个拼多多店铺就可以开始营业了,并且做起来后,每天只需花一两个小时用上货,有订单了就可以去商家处下单,发货就行了。,3、把阿里的链接复制到平台上,会出现拼多多登录面。,其实做代销相对来说要容易些,而且拼多多上的监管没有淘宝那么严格,所以上货也非常的方面,投入的成本也很低,赚钱相对来说要简单些,但是简单不意味着就不付出努力,想要赚钱肯定是要投入心血的。
2024-03-22 13:59 -
【小细节成就大收获】搜索排名最基础,却被遗忘的角落
如果你们认为商品被隐性降权了,排名下滑很厉害,或者说对突然之间的排名波动没办法理解,可以看看这个帖子。,很多朋友以为综合搜索,是以7天增长,店铺权重,上下架时间来计算排名的,这个没有错,而且很对,但是这些还不够,或者说比较的条件还少了一个,是什么呢?,大家都知道,淘宝搜索时,天猫有三个豆腐块,那么豆腐块的商品是怎么抓取的呢?
2024-03-22 10:38 -
淘宝流量怎么提上到万?实操教程
流量可以说是决定店铺生死的一个重要指标,很多卖家朋友都在说自己不管多么努力,但是店铺流量就是上不去,那么到底该怎么做才可以让流量快速提升上万呢?小编这里有一些经验,跟大家一起分享一下!LL 只要宝贝可以被搜索系统抓取,那么就可以轻松提高店铺的流量,比如说一家中小型店铺,按照一般一天流量一万来算,那么抓取之后就可以变成一天五万,至少翻了4倍,并且它不同于搜索,需要持续,长时间的提升,才能到一个
2024-03-22 09:44 -
怎么篮架站点才华算不上对蜘蛛亲切呢?
关于这个问题咱们来剖析一下:一:是否存在抓取毛病假如发现文章不被搜索引擎录入了,第一点就应该看的是:网站方面是否存在抓取毛病了。,要是你的首页文章后面带了时间的话,快照日期就会根据这个显示。,这几个办法并不是每一个阶段效果都十分明显,一般在前期用外链引蜘蛛办法,中期靠网站带动器来让蜘蛛来爬,当到中后期时分内链的作用就出来,一般3-5个月后这三个办法都用的不错的状况,网站内页录入率达到80%-90%
2024-03-22 09:24
热门标签
-
常用搜索引擎/网址导航/网站目录网站收录提交入口收藏 百度搜索飓风3.0后的变化
2024-03-21 18:08
-
2020年搜索优化方向 2019年中国搜索引擎市场份额排行榜
2024-03-21 18:08
-
百度搜索引擎核心专利 拼多多搜索排名底层逻辑算法
2024-03-21 18:08
-
头条搜索投放方法论 企业如何解决搜索引擎中出现的负面信息?
2024-03-21 18:08
-
57个用于搜索引擎优化的小技巧 流量生态矩阵:搜索引擎的流量突围之战
2024-03-21 18:08
-
搜索引擎技术之倒排索引原理详解,及案例分析 Google SEO 系列 - 搜索引擎原理
2024-03-21 18:08
-
头条搜索之站长平台索引量介绍,与2个常见问题 用Python和OpenCV构建属于自己的图像搜索引擎
2024-03-21 18:08
-
如何成为百度搜索的精选摘要? 关注搜索算法 外链的重要性不再
2024-03-21 18:08
-
世界那么大,何必用百度?搜索引擎汇总,总有一款适合你 SEO优化师,不会告诉你的谷歌搜索引擎规则
2024-03-21 18:08
-
搜索引擎各大站长平台汇总 搜索引擎讨厌的网站
2024-03-21 18:08
-
SEO优化中品牌词负面信息压制方法 什么是搜索引擎本地算法,它对SEO有那些影响?
2024-03-21 18:08
-
Tag标签使用在seo优化中的作用 优化SEO博客帖子的6种方法
2024-03-21 18:08
-
什么是SEO地域性排名 SEO算法演变与破解
2024-03-21 18:08
-
2019年SEO内部链接终极指南 优质锚文本链接对网站SEO还有这些好处
2024-03-21 18:08
-
国外google seo大牛分析了100万个搜索结果得出的影响排名的因素 SEO和SEM有什么区别?
2024-03-21 18:08
-
谷歌SEO中的常见术语词汇解释 从搜索引擎遇到的挑战来学习SEO
2024-03-21 18:08
-
SEO:浅析网站内容最佳更新频率 【Google优化】SEO优化稳定关键词网站排名
2024-03-21 18:08
-
seoer如何创建和管理高质量关键词词库? 不会站群SEO?看看他是怎么做的!
2024-03-21 18:08
-
哪种类型页面的SEO排名在整个网站最好? 技术手段优化seo注意细节
2024-03-21 18:08
-
带你迅速了解SEO优化知识,新手入门必读 百度SEO:为什么要关注“网站抓取频率”?
2024-03-21 18:08