2020年Web前端性能优化需要做哪些

今天小编要跟大家分享的文章是关于2020年Web前端性能优化需要做哪些?性能优化一直以来都是前端工程领域中的一个重要部分。很多资料表明,网站应用的性能优化对于提高用户留存、转化率等都有积极影响。可以理解为,提升你的网站性能,就是提升你的业务数据(甚至是业务收入)。

性能优化广义上包含前端优化和后端优化。后端优化的关注点更多的时候是在增加资源利用率、降低资源成本以及提高稳定性上。相较于后端,前端的性能优化会更直接与用户的体验挂钩。从用户体验侧来说,前端服务

5s的加载时间优化缩减80%(1s)与后端服务50ms的响应优化缩减80%(10ms)

相比,用户的体验提升会更大。因此很多时候,与体验相关的性能的瓶颈会出现在前端。下面就来和小编一起看一看吧!

一、html文档结构标签语义化

1、首先什么是语义化呢?

语义化是指用合理HTML标记以及其特有的属性去格式化文档内容。机器在需要更少的人类干预的情况下能够研究和收集信息,让网页能够被机器理解,最终让人类受益。即用正确的标签做正确的事。

2、语义化的好处或者说存在的意义

①有利于搜索引擎抓取

②结构清晰的HTML在团队合作中的作用:代码可读、便于维护、提高开发效率、快速达成共识、利于二次开发。

③有利于盲人屏幕阅读器

二、css、js文件数量及大小

优化一般对于css、js是建议使用外联式来进行导入。我们可以对css、js做相应的规划也可以减少css、js的个数以减少http请求。同时也要注重减少重复代码,注重代码重复利用,以达到用最少的代码干最多的事。同时当项目要投入上线使用的时候,可以对css、js文件进行压缩,文件的减小可以加速文件的链接导入,以便加速网页的加载渲染。

可通过使用Webpack,gulp等工具对Js文件进行合并。

三、图片的数量和大小

多个服务器请求会对站点的性能产生显著的影响。对一张图片进行导入又是一个http请求,因此我们应该减少图片的导入数量以便减少http请求。此处,我们必须提到一个名词“css精灵spirit”。css精灵是指包含多个不同的图标、按钮或图形的单个图像。因此我们可以把多张背景图片合并为一张然后对背景图片进行相应的定位。同时使用PNG8格式的图片相对于GIF来说比较少。而对于内容图片,可以对其进行适当的压缩,可以加快文档内容加载,或者如果是需要用户下载的图片,小的图片可以加快用户下载的速度。

使用较为广泛的Web图片格式有:JPEG/JPG、PNG、WEBP、Base64、SVG。

1.JPEG/JPG

特点是有损压缩,体积小,加载快,不支持透明。

使用场景:JPG适合用于呈现热菜丰富的图片,在日常的开发中,JPG图片经常作为大的背景图、轮播图或是Banner图。比如两大电商网站对大图片的处理,就是对JPG图片应用场景的最佳写照。用JPG来呈现大图片,既可以保留图片的质量,又不会担心图片的体积,是一种比较广泛使用的方案。

缺点:在处理一些矢量图形和logo等这些线条感很强、颜色对比强烈的图片时,认为压缩就导致图片模糊非常明显。另外,JPG图像不支持透明度处理,透明图片只能用PNG来呈现了。

2.PNG-8和PNG-24

特点是无损压缩、质量高、体积大、支持透明

优点:无损压缩的高保真图片格式。8和24都是二进制数的位数,8位的PNG支持256中颜色,24位的PNG可以支持1600万种颜色。在不考虑文件大小只在乎最佳的显示效果时,推荐使用PNG-24。但是在适合使用PNG时会优先选择PNG-8

应用场景:主要用PNG来呈现小的LOGO、颜色简单对比强烈的图片或是背景。

3.SVG

特点是文本文件,体积小,不失真,兼容性好

优点:SVG是一种基于XML语法的图像格式。SVG对图像的处理不是基于像素,而是基于对图像的形状描述。

和JPG、PNG相比较,SVG文件体积更小,可压缩性更强。SVG作为矢量图最大的优点在于图片可以无限放大还不失真,一张SVG图片可以适配多种分辨率。另外SVG是文本文件,可以像写代码一样定义SVG,放在HTML中称为DOM的一部分。也可以把对图像的描述写入以.svg为后缀的文件中,在img标签中引入即可。

4.WebP

优点:WebP是一款比JPG、PNG等在压缩方面更加优越的图片格式,同时也不会影响其图片质量,使用该格式时最好将同名文件格式化,当检测浏览器不兼容时自动切换jpg格式

缺点:是一个相对较新的技术,所以对于目前市面上的浏览器能否完美的兼容,其可用和实用性就变得很现实了,再好的东西如果没有好的兼容性,也是非常难以普及和被广泛使用的

5.Base64

优点:减少请求,加快首屏数据显示。对于jpg格式的图片,每一个图片相当于一次http请求,图片多了的话,服务器耗性能比较严重。而将jpg转化成base64格式的图片,则极大地减少了请求数,因为Base是文本格式。

缺点:base64格式图片比原图大,占用更多存储空间,同时,浏览器不会对该资源缓存。

使用方法:background:url(data:image/png;base64,{img_data})

应用场景:一般对于小于10KB大小的图片进行base64转码。

至于动态图有GIF与APNG:后者APNG这东西是mozilla搞出来的,

它是24位的,而且也是动图,可以容纳1680万种颜色,也是为了取代GIF,但是....也就火狐支持,IE10和chrome,safari全部不行,

如果说gif图片是卡片机的话,APNG就是单反

四、有效性验证

除了根据语义加标记之外,HTML文档还需要用有效的代码来编写,如果代码是无效的,浏览器会尝试解释标记本身,有时候会产生错误的结果。更糟的是,如果发送具有正确的MIME类型的XHTML文档,理解XML的浏览器将不显示无效的页面。因为浏览器需要知道要使用什么DTD(文档类型定义)才能正确地处理页面,所以对页面进行有效性验证要求有DOCTYPE声明。

有效性验证工具径:

W3C验证器(bookmarklet),这是一小段可以存储在浏览器的书签或收藏夹中的Javascript。单击这个书签就会触发Javascript动作。

②可以访问,通过输入自己的URL来对自己的站点来进行在线验证。

③使用firefox浏览器的可以下载插件FirefoxWebDeveloperExtension

五、雅虎的Web优化最佳实践

1、内容优化

①尽量减少HTTP请求:常见方法包括合并多个CSS文件和JavaScript文件,利用CSSSprites整合图像,Image

map(图像中不同的区域设置不同的链接),内联图象(使用data:URLscheme在实际的页面嵌入图像数据)等。

②减少DNS查找,一般dns查找需要花费20-120ms,Windows的DNS缓存,可以通过ipconfig/displaydns

这个命令来查看。

③避免重定向

④使Ajax可缓存

⑤延迟加载组件:考虑哪些内容是页面呈现时所必需首先加载的、哪些内容和结构可以稍后再加载,根据这个优先级进行设定。

预加载组件:预加载是在浏览器空闲时请求将来可能会用到的页面内容(如图像、样式表和脚本)。当用户要访问下一个页面时,页面中的内容大部分已经加载到缓存中了,因此可以大大改善访问速度。

⑦减少DOM元素数量:页面中存在大量DOM元素,会导致JavaScript遍历DOM的效率变慢。

⑧根据域名划分页面内容:把页面内容划分成若干部分可以使你最大限度地实现平行下载。但要确保你使用的域名数量在2个到4个之间(否则与第2条冲突)。

⑨最小化iframe的数量:iframes

提供了一个简单的方式把一个网站的内容嵌入到另一个网站中。但其创建速度比其他包括JavaScript和CSS的DOM元素的创建慢了1-2个数量级。

避免404:HTTP请求时间消耗是很大的,因此使用HTTP请求来获得一个没有用处的响应(例如404没有找到页面)是完全没有必要的,它只会降低用户体验而不会有一点好处。

2、服务器优化

①使用内容分发网络(CDN):把你的网站内容分散到多个、处于不同地域位置的服务器上可以加快下载速度。

添加Expires或Cache-Control信息头:对于静态内容,可设置文件头过期时间Expires的值为“Never

expire(永不过期)”;对于动态内容,可使用恰当的Cache-Control文件头来帮助浏览器进行有条件的请求。

②Gzip压缩

③设置ETag:ETags(Entity

tags,实体标签)是Web服务器和浏览器用于判断浏览器缓存中的内容和服务器中的原始内容是否匹配的一种机制。

提前刷新缓冲区:当用户请求一个页面时,服务器会花费200到500毫秒用于后台组织HTML文件。在这期间,浏览器会一直空闲等待数据返回。在PHP中,可以使用flush()方法,它允许你把已经编译的好的部分HTML响应文件先发送给浏览器,这时浏览器就会可以下载文件中的内容(脚本等)而后台同⑤时处理剩余的HTML页面。

对Ajax请求使用GET方法:当使用XMLHttpRequest时,浏览器中的POST方法会首先发送文件头,然后才发送数据。因此使用GET最为恰当。

⑦避免空的图像src

3、Cookie优化

①减小cookie大小:去除不必要的coockie,并使coockie体积尽量小以减少对用户响应的影响

针对Web组件使用域名无关的Cookie:对静态组件的Cookie读取是一种浪费,使用另一个无Cookie的域名来存放静态组件是一个好方法,或者也可以在Cookie中只存放带www的域名。

4、CSS优化

①将CSS代码放在HTML页面的顶部

②避免使用CSS表达式:CSS表达式在执行时候的运算量非常大,会对页面性能产生大的影响

③使用来代替@import

④避免使用Filters:IE独有属性AlphaImageLoader用于修正IE

7以下版本中PNG图片的半透明效果,但它的问题在于浏览器加载图片时它会终止内容的呈现并且冻结浏览器。

5、JavaScript优化

①将JavaScript脚本放在页面的底部

将JavaScript和CSS作为外部文件来引用:在实际应用中使用外部文件可以提高页面速度,因为JavaScript和CSS文件都能在浏览器中产生缓存。

③缩小JavaScript和CSS

④删除重复的脚本

⑤最小化DOM的访问:使用JavaScript访问DOM元素比较慢

⑥开发智能的事件处理程序

6、图像优化

①优化图片大小

②通过CSSSprites优化图片

③不要在HTML中使用缩放图片

④favicon.ico要小而且可缓存

7、针对移动优化

①保持组件大小在25KB以下:主要是因为iPhone不能缓存大于25K的文件(注意这里指的是解压缩后的大小)。

②将组件打包成为一个复合文档:把页面内容打包成复合文本就如同带有多附件的Email,它能够使你在一个HTTP请求中获取多个组件。

以上就是小编今天为大家分享的关于2020年Web前端性能优化需要做哪些的文章,希望本篇文章能够对正在从事Web前端工作的小伙伴们有所帮助,想要了解更多Web前端知识记得关注北大青鸟Web培训官网。最后祝愿小伙伴们工作顺利,成为一名优秀的Web前端工程师。

网站优化有什么好办法?

在网络时代,网站已经成为企业对外宣传的重要平台,在展示企业形象和产品信息方面发挥了良好的作用。网站优化已经成为企业提高网站搜索引擎排名的重要手段。如何优化网站也是企业面临的难题。

企业如何优化网站?AI江湖科技SEO认为,企业在网站优化过程中需要注意这些细节。

1.企业网站优化应指定服务组

对于网站优化,公司应首先明确您的目标服务群体,即您的客户范围,然后在用户分析和了解用户需求后,合理设置网站关键词。具体的客户分析内容包括用户年龄和用户习惯。用户偏好等,在了解这些用户的基本信息后,企业可以结合自身的产品特点为用户提供必要的内容。用户可以通过关键字检索找到企业网站,并对企业产品感兴趣

2.比较和分析你和同行在网站优化方面的差异

对于同一关键字的设置,同行业的一些网站可能会领先于企业自己的网站。此时,企业可以分析和比较其网站优化方法及其差异。通过分析他们的网站优化方法,他们可以学到一些更好的技能来弥补他们的不足。但同时也要注意不要让自己的网站与自己同质化,让用户感受到不同的差异。因此,在网站优化方面,企业可以借鉴同行业网站优化的内容和体验优势,使自己的网站更加完善,让用户体验更好,排名更高。

3.对网站进行营销策划

网站优化不仅要求企业建立自己的网站,还需要通过各种渠道推广网站,建立丰富的外联机制。因此,在网站内容方面,企业必须对网站用户进行详细的规划和分析,从用户进入网站内容的那一刻起,到最终购买Ai江湖科技SEO服务,为用户带来更好的体验。在完成客户转化的同时,企业还需要结合各种推广渠道,在各种平台上建立企业网站的外部链接

4.根据网站定位制定网站优化计划

网站优化永远不可能在一两天内完成。这需要企业有一个相对较长的实施过程,所以制定一个中长期的网站优化计划是非常必要的。在规划过程中。企业可以具体制定每个阶段的网站优化目标,根据实施结果与目标进行差异比较,分析原因,并根据结果制定下一阶段的详细计划,从而提高网站优化的效果。

总之,网站优化是企业网络推广中更为重要的内容,在网站推广中起着更为积极的作用。然而,要做好网站优化,企业不仅需要长期坚持,还需要从网站内容建设到网站推广的各个环节。

Web服务器性能和站点访问性能该如何优化

今天小编要跟大家分享的文章是关于Web服务器性能和站点访问性能该如何优化?正在从web前端工作的小伙伴们来和小编一起看一看吧!

一、优化思路浅析

要优化Web服务器的性能,我们先来看看Web服务器在web页面处理上的步骤:

1、Web浏览器向一个特定的服务器发出Web页面请求;

2、Web服务器接收到web页面请求后,寻找所请求的web页面,并将所请求的Web页面传送给Web浏览器;

3、Web浏览器接收到所请求的web页面内容,并将它显示出来。

上面三个步骤都关系Web服务器,但实际Web服务器性能相关最大的是在第2步,这里Web服务器需要寻找来自浏览器所请求的Web

页面内容。

我们知道,Web页面内容有静态的,也有动态的,静态的内容,web

服务器可以直接将结果发回给浏览器,对于动态内容,则通常需要交给应用服务器先处理,由应用服务器返回结果。

当然,也有Web服务器本身可以处理动态内容的,例如IIS就可以自已解释处理ASP,ASP.NET这两种微软的动态网页脚本语言。

从上面简要的分析里,我们大致可以得到这样的结论,影响Web页面访问的影响因素会有这几个:

1、Web服务器从磁盘中读取静态页面内容的速度,也即时间;

2、Web服务器判定请求内容是静态还是动态内容的时间;

3、Web服务器转发请求给应用服务器的时间;

4、应用服务器处理(解释)动态内容所需的时间;

5、Web服务器返回Web内容给浏览器的响应时间;

6、Web服务器接收来自浏览器请求的处理性能;

7、Web访问请求数据在网络上传输的时间:包括从浏览器到服务器,和从服务器到浏览器两部分;

8、浏览器本地计算和渲染Web内容的时间,即接收内容后展现内容的时间。

上面8项很容易理解,也很直接,其实还有以下几项也是关乎Web

页面访问速度体验的因素,你可以思考下是否如此?或者说是否会影响到页面访问性能。

§Web服务器执行安全策略检查的时间,或者说性能;

§Web服务器读取日志文件、写日志内容、关闭对日志文件访问的时间,先读后写再关闭,这三步中的读与写又涉及到磁盘访问性能因素;

§同时与Web服务器连接会话的客户端数量大小,即并发访问量多大。

我们可以将上面的影响因素抽像出来,那么就是:

1、Web服务器磁盘性能;

2、Web服务器与应用服务器交互的性能;

3、应用服务器处理动态内容的性能,或者说动态内容应用处理性能;

4、客户端与Web服务器的连接速度,即网络传输性能;

5、Web浏览器解释和渲染Web内容的性能;

6、Web访问并发性能。

反映到我们进行性能优化,可以入手的角度就有:

1、增加带宽,包括服务器和客户端两边的Internet连接带宽;

2、加快动态内容的处理性能;

3、尽可能多地使用静态内容,这样Web服务器就可以无需请求应用服务器,直接将Web内容发给浏览器端,这里可以入手的方案又有:

动态内容缓存

动态内容静态化

多台服务器负载均衡同时处理大量的并发访问;

提升服务器磁盘访问性能,也即通常所说的I/O性能;

减少网页中的HTTP请求数;

更换更好性能的Web服务器;

合理部署服务器,在离客户端更近的地方部署服务器,已经证明可以明显地提升访问性能。

二、性能优化实践

经过前面小节的简要分析,相信你对优化Web服务器有一定的思路了,你可以从硬件层面、软件层面、Web代码三个层面去优化。

下面我们结合一个具体的实例来实践一回,本文所举例是一个小型的Web

站点,部分数据系假设,如有类同,纯属巧合,仅起抛砖引玉之用。在实际工作中,如果碰到大站点,你可以参考此处的分析,修改优化方案。

1.站点简介

一个社区论坛站点,采用Discuz!论坛程序构建,该程序采用主流的PHP+MySQL组成。

网站目前有近5万注册用户,绝大多数是国内的用户,活跃用户数在一半左右,每天平均PV在15~20万,独立访问IP数在8000

左右。

2.Web服务器性能优化需求

网站现部署在国外的服务器,租用虚拟主机来运营,因为访问量比较大,所以经常会收到虚拟主机服务商的流量很大的通知,要求控制下访问量。

另外,虚拟主机的服务器在美国,没有在国内租用虚拟主机的原因是国内网站在备案方面非常繁琐,在网站一开始运营时数据量和访问量都比较小,所以对性能要求不高,数据量小,所以服务器在查询处理数据时速度比较快,也让人感觉访问速度不慢,现在随着数据量和访问量的不断上升,访问速度已明显下降,到了需要改善访问性能的时候了。

基于目前该社区网站的情况,提出的优化需求是,国内访问速度需要提升一倍,目前首页加载时间需要40秒左右,希望优化后能在20

秒以内将首页加载完成。

另外提出网站数据能够每天自动备份一次,备份数据保留一个月的,以便随时恢复。

上述两点需求,其中第一条才是性能优化需求,第二条是额外的需求了。

3.性能优化方案

根据其网站的现状和优化需求,结合自己的经验,加上谷歌的搜索,同时与网站主不断确认沟通,最终得到以下性能优化方案:

由虚拟主机部署改为独立服务器部署

虚拟主机受限比较多,无法自己自定义配置Web服务器,无法配置PHP

动态缓存,而且独立服务器可以独享内存、处理器资源,不再受虚拟主机商对每个虚拟主机用户的内存和处理器资源占用限制。处理器资源和内存资源,对接受更多并发访问有直接性能提升效果。

独立服务器,我们选用Linode2048型号,2G内存,4核处理器(Linode所有VPS都是四核处理器),80G硬盘空间,800G

网络流量。

由Windows操作系统改为Linux操作系统

网站使用的是PHP+MySQL程序,PHP在Windows下的性能,受限于IIS需要通过ISAPI形式调用PHP,所以性能不如

Linux下Apache直接通过PHP模块解释PHP,更不如Nginx与PHP-FPM

的性能,既然使用了独立服务器,操作系统也可以自己确定,Linux系统我们选用了熟悉的UbuntuLinuxServer10.04(一年前还没有

12.04),^-^。

Web服务器采用Nginx,而不使用Apache

选用Nginx而不用Apache的原因非常直接和干脆,因为站点里有很多静态的附件文件,在处理静态内容上,Nginx性能是Apache

的差不多10倍。

在PHP解释和伪静态规则方面,Apache要比Nginx强,但这不影响我们放弃它,为缓解这一点,我们在后面对PHP

进行了动态缓存。

对PHP查询进行动态缓存,使用eAccelerator这个加速器

PHP加速器是一个为了提高PHP执行效率,从而缓存起PHP的操作码,这样PHP后面执行就不用解析转换了,可以直接调用PHP

操作码,这样速度上就提高了不少。

eAccelerator是一个开源PHP加速器,优化和动态内容缓存,提高了PHP脚本的缓存性能,使得PHP

脚本在编译的状态下,对服务器的开销几乎完全消除。它还有对脚本起优化作用,以加快其执行效率。使得的PHP程序代码执效率能提高1-10

倍,这个加速还是非常明显的。

具体地,我们计划对eAccelerator进行以下设置优化:

§缓存使用物理内存来进行,不使用磁盘来缓存。我们知道内存的读写性能是硬盘的N倍,所以在内存资源可以安排情况下,强烈建议使用内存来保存

eAccelerator的缓存内容。

§缓存大小设置为32MB,这个值是操作系统默认支持最大的缓存容量。虽然可以通过修改配置文件来加大这个值,但我们觉得没有必要,所以就放弃了。

Nginx性能优化

选用了Nginx,虽然它的性能很好,但我们仍然需要对它进行性能优化,在这个案例中,我们做了以下优化:

§使用8个进程,每个进程大约需要20M内存消耗,这里一共使用了150M左右的内存。

§充分使用主服务器的CPU内核:四核,使用CPU粘性配置选项(worker_cpu_affinity),每核处理器分配两个进程。

§开启gzip压缩功能:gzip压缩对JS,CSS,XML压缩效果非常好,能压缩一半,即减少一倍的传输时间;对图片文件,JPG

已经压缩过的,它的压缩性能要少一些。

§图片本地缓存1天:网站上的图片很多,通常一张图片上传后,不会频繁的修改,只会频繁的访问,所以将图片放在Nginx

缓存里,可以减少服务器访问加载次数,提升访问速度。

§JS、CSS文件本地缓存7

天:这两种网页文件,平时都不会去修改它,将它缓存起来,可以减少加载次数,提升访问速度。为什么这两种文件不和图片一起设置缓存有效期,是考虑了不同文件的修改频率不一样。

§Nginx日志每天切割一次:这个优化项能大大减小Nginx日志文件的大小,经过一周的查看,每天的日志文件是50M

左右,如果不是每天切割,用月切割,那一个月的日志文件就是几个G,要Web

服务器在内存里加载这么大的文件,系统本身内存不够用,就自然会用到磁盘来缓存,这就影响性能。每天50M左右,在内存上完全可以顺利加载,这样Nginx

在处理访问时,可以快速的保存访问日志。

经过上述几个优化项目,Nginx这边一共需要占用200M左右内存资源。

对PHPCGI进程性能进行优化

Nginx没有PHP模块,所以它对PHP的支持是通过PHP-FPM来实现的,PHP-FPM

是跑进程来处理并发请求,在这个案例中,我们配置了20个进程,每个进程差不多占用20M左右内存资源,一共是400M左右。

同时,PHP-FPM与Nginx交互机制,选用LinuxSocket模式而不是TCP协议端口,Socks是系统级处理模式,socks

也就是一个文件连接,而TCP协议端口,需要经过网络协议处理,性能不如前者,所以我们选择了前者。

MySQL数据库性能优化

因为网站主程序是选用他人开发的开源程序,所以对数据库查询的程序优化我们无法处理,只能从MySQL本身寻找突破口。

我们可以想像一下,对于论坛网站,通常看贴、查贴的访问量要远大于创建贴子、回复贴子的访问量,体现在MySQL

数据库上,就是读表与查询表数据的连接处理更多。

因此我们要选择对读表、查询性能更好的存储引擎,结合以前了解的知识,MySQL缺省的MyISAM

引擎就是被设计为适合处理读频率远大于写频率的环境,查询效率相当可观,而且内存占用很少,这也与我们租用低内存配置的VPS相符。

具体到MySQL配置参数的优化上,受限于服务器上内存资源本身有限,就直接采用缺省的中型环境配置文件。

内容分发网络应用

站点每天十多万的访问,上万独立IP

访问,查看先前的访问统计,访问来自国内各个地区,使用多种网络连接访问进来,为保证来自各网络的用户访问速度,同时也减少对网站服务器的请求,我们采用了CDN

来分发静态内容,这样各地的用户可以就近访问到已缓存在CDN上的文件,CDN

服务商会在静态内容第一次访问时缓存到他们全国各地的服务器上,当第二次访问时,用户实际是没有连接到网站服务器上获取文件的,而是直接从CDN

服务器上获取,可以明显的提升网站性能。

以上就是小编今天为大家分享的关于Web服务器性能和站点访问性能该如何优化的文章,希望本篇文章能够对正在从事web前端工作的小伙伴们有所帮助。想要了解更多web前端相关知识记得关注北大青鸟web培训官网。最后祝愿小伙伴们工作顺利!

网站优化有哪三种方式?

① 代码优化:尽量缩减代码,对CSS 和 JS文件采用调用方式,尽量避免使用TABLE;

② 图片优化:对图片ALT属性添加说明,说明中包含关键词;

③ 内文优化:文章标题包含关键词,文中自然的出现关键词,结尾处出现关键词;

④ 链接优化:合理利用内链接,争取和排名好的相关网站进行友情链接;

⑤ 导航优化:清晰的导航让搜索引擎认识网站结构,从而收录更多的页面。

⑥ 空间优化:选择性能稳定且未被搜索引擎惩罚的网站空间;

⑦ 域名优化:选择与网站内容或关键词相关性较高的域名;

⑧ 静态优化:使用重要的网站转为静态页面,因为搜索引擎更容易收录静态页面;

⑨ 标准优化:代码符合W3C标准,在IE、360、firefox等主流的浏览器显示时不变形、不出现乱码;

⑩ 其他优化:包括网站title优化、关键词优化、URL优化、keywords优化、description优化等等。

网站优化与SEO的本质区别

SEO指的是搜索引擎优化,因此SEO是依附于搜索引擎的出现,是搜索引擎营销的产物;而网站优化则是对网站本身进行的完善,改良。网站优化最初以客户满意度,即现在的客户体验(UE)为目标的。

没有搜索引擎,就没有SEO;而如果没有搜索引擎,网站优化也却依然存在,但当搜索引擎成为人们搜索网络信息的重要工具时,网站优化才渐渐成为网站推广乃至网络营销的基础,并直接对SEO负责。

因此,与其说SEO是伴随搜索引擎而出现的技术,不如说SEO是由网站优化衍生出来的一门新技术。因此,SEO不是网站优化,网站优化更不是SEO!

Web前端工程师要掌握的Web前端性能优化方法

今天小编要跟大家分享的文章是关于Web前端工程师要掌握的Web前端性能优化方法。正在从事Web前端工作的小伙伴们来和小编一起看一看吧,希望本篇文章能够对正在从事Web前端工作的小伙伴们有所帮助。

Web前端需要性能优化么?

性能优化一直以来都是前端工程领域中的一个重要部分。很多资料表明,网站应用的性能优化对于提高用户留存、转化率等都有积极影响。可以理解为,提升你的网站性能,就是提升你的业务数据(甚至是业务收入)。

性能优化广义上包含前端优化和后端优化。后端优化的关注点更多的时候是在增加资源利用率、降低资源成本以及提高稳定性上。相较于后端,前端的性能优化会更直接与用户的体验挂钩。从用户体验侧来说,前端服务

5s的加载时间优化缩减80%(1s)与后端服务50ms的响应优化缩减80%(10ms)

相比,用户的体验提升会更大。因此很多时候,与体验相关的性能的瓶颈会出现在前端。

我和一些同学接触的过程中,发现作为前端工程师,大家其实都具备一定的性能优化意识,同时也有自己的优化“武器库”,例如懒加载、资源合并、避免reflow

等等。虽然大家对性能优化都有自己的思路,不过大多是分散在某几个点,较难形成一个完整的体系。

一、html文档结构标签语义化

1、首先什么是语义化呢?

语义化是指用合理HTML标记以及其特有的属性去格式化文档内容。机器在需要更少的人类干预的情况下能够研究和收集信息,让网页能够被机器理解,最终让人类受益。即用正确的标签做正确的事。

2、语义化的好处或者说存在的意义

①有利于搜索引擎抓取

②结构清晰的HTML在团队合作中的作用:代码可读、便于维护、提高开发效率、快速达成共识、利于二次开发。

③有利于盲人屏幕阅读器

二、css、js文件数量及大小

优化一般对于css、js是建议使用外联式来进行导入。我们可以对css、js做相应的规划也可以减少css、js的个数以减少http请求。同时也要注重减少重复代码,注重代码重复利用,以达到用最少的代码干最多的事。同时当项目要投入上线使用的时候,可以对css、js文件进行压缩,文件的减小可以加速文件的链接导入,以便加速网页的加载渲染。

可通过使用Webpack,gulp等工具对Js文件进行合并。

三、图片的数量和大小

多个服务器请求会对站点的性能产生显著的影响。对一张图片进行导入又是一个http请求,因此我们应该减少图片的导入数量以便减少http请求。此处,我们必须提到一个名词“css精灵spirit”。css精灵是指包含多个不同的图标、按钮或图形的单个图像。因此我们可以把多张背景图片合并为一张然后对背景图片进行相应的定位。同时使用PNG8格式的图片相对于GIF来说比较少。而对于内容图片,可以对其进行适当的压缩,可以加快文档内容加载,或者如果是需要用户下载的图片,小的图片可以加快用户下载的速度。

使用较为广泛的Web图片格式有:JPEG/JPG、PNG、WEBP、Base64、SVG。

1.JPEG/JPG

特点是有损压缩,体积小,加载快,不支持透明。

使用场景:JPG适合用于呈现热菜丰富的图片,在日常的开发中,JPG图片经常作为大的背景图、轮播图或是Banner图。比如两大电商网站对大图片的处理,就是对JPG图片应用场景的最佳写照。用JPG来呈现大图片,既可以保留图片的质量,又不会担心图片的体积,是一种比较广泛使用的方案。

缺点:在处理一些矢量图形和logo等这些线条感很强、颜色对比强烈的图片时,认为压缩就导致图片模糊非常明显。另外,JPG图像不支持透明度处理,透明图片只能用PNG来呈现了。

2.PNG-8和PNG-24

特点是无损压缩、质量高、体积大、支持透明

优点:无损压缩的高保真图片格式。8和24都是二进制数的位数,8位的PNG支持256中颜色,24位的PNG可以支持1600万种颜色。在不考虑文件大小只在乎最佳的显示效果时,推荐使用PNG-24。但是在适合使用PNG时会优先选择PNG-8

应用场景:主要用PNG来呈现小的LOGO、颜色简单对比强烈的图片或是背景。

3.SVG

特点是文本文件,体积小,不失真,兼容性好

优点:SVG是一种基于XML语法的图像格式。SVG对图像的处理不是基于像素,而是基于对图像的形状描述。

和JPG、PNG相比较,SVG文件体积更小,可压缩性更强。SVG作为矢量图最大的优点在于图片可以无限放大还不失真,一张SVG图片可以适配多种分辨率。另外SVG是文本文件,可以像写代码一样定义SVG,放在HTML中称为DOM的一部分。也可以把对图像的描述写入以.svg为后缀的文件中,在img标签中引入即可。

4.WebP

优点:WebP是一款比JPG、PNG等在压缩方面更加优越的图片格式,同时也不会影响其图片质量,使用该格式时最好将同名文件格式化,当检测浏览器不兼容时自动切换jpg格式

缺点:是一个相对较新的技术,所以对于目前市面上的浏览器能否完美的兼容,其可用和实用性就变得很现实了,再好的东西如果没有好的兼容性,也是非常难以普及和被广泛使用的

5.Base64

优点:减少请求,加快首屏数据显示。对于jpg格式的图片,每一个图片相当于一次http请求,图片多了的话,服务器耗性能比较严重。而将jpg转化成base64格式的图片,则极大地减少了请求数,因为Base是文本格式。

缺点:base64格式图片比原图大,占用更多存储空间,同时,浏览器不会对该资源缓存。

使用方法:background:url(data:image/png;base64,{img_data})

应用场景:一般对于小于10KB大小的图片进行base64转码。

至于动态图有GIF与APNG:后者APNG这东西是mozilla搞出来的,

它是24位的,而且也是动图,可以容纳1680万种颜色,也是为了取代GIF,但是....也就火狐支持,IE10和chrome,safari全部不行,

如果说gif图片是卡片机的话,APNG就是单反

四、有效性验证

除了根据语义加标记之外,HTML文档还需要用有效的代码来编写,如果代码是无效的,浏览器会尝试解释标记本身,有时候会产生错误的结果。更糟的是,如果发送具有正确的MIME类型的XHTML文档,理解XML的浏览器将不显示无效的页面。因为浏览器需要知道要使用什么DTD(文档类型定义)才能正确地处理页面,所以对页面进行有效性验证要求有DOCTYPE声明。

有效性验证工具径:

W3C验证器(bookmarklet),这是一小段可以存储在浏览器的书签或收藏夹中的Javascript。单击这个书签就会触发Javascript动作。

②可以访问,通过输入自己的URL来对自己的站点来进行在线验证。

③使用firefox浏览器的可以下载插件FirefoxWebDeveloperExtension

五、雅虎的Web优化最佳实践

1、内容优化

①尽量减少HTTP请求:常见方法包括合并多个CSS文件和JavaScript文件,利用CSSSprites整合图像,Image

map(图像中不同的区域设置不同的链接),内联图象(使用data:URLscheme在实际的页面嵌入图像数据)等。

②减少DNS查找,一般dns查找需要花费20-120ms,Windows的DNS缓存,可以通过ipconfig/displaydns

这个命令来查看。

③避免重定向

④使Ajax可缓存

⑤延迟加载组件:考虑哪些内容是页面呈现时所必需首先加载的、哪些内容和结构可以稍后再加载,根据这个优先级进行设定。

预加载组件:预加载是在浏览器空闲时请求将来可能会用到的页面内容(如图像、样式表和脚本)。当用户要访问下一个页面时,页面中的内容大部分已经加载到缓存中了,因此可以大大改善访问速度。

⑦减少DOM元素数量:页面中存在大量DOM元素,会导致JavaScript遍历DOM的效率变慢。

⑧根据域名划分页面内容:把页面内容划分成若干部分可以使你最大限度地实现平行下载。但要确保你使用的域名数量在2个到4个之间(否则与第2条冲突)。

⑨最小化iframe的数量:iframes

提供了一个简单的方式把一个网站的内容嵌入到另一个网站中。但其创建速度比其他包括JavaScript和CSS的DOM元素的创建慢了1-2个数量级。

避免404:HTTP请求时间消耗是很大的,因此使用HTTP请求来获得一个没有用处的响应(例如404没有找到页面)是完全没有必要的,它只会降低用户体验而不会有一点好处。

2、服务器优化

①使用内容分发网络(CDN):把你的网站内容分散到多个、处于不同地域位置的服务器上可以加快下载速度。

添加Expires或Cache-Control信息头:对于静态内容,可设置文件头过期时间Expires的值为“Never

expire(永不过期)”;对于动态内容,可使用恰当的Cache-Control文件头来帮助浏览器进行有条件的请求。

②Gzip压缩

③设置ETag:ETags(Entity

tags,实体标签)是Web服务器和浏览器用于判断浏览器缓存中的内容和服务器中的原始内容是否匹配的一种机制。

提前刷新缓冲区:当用户请求一个页面时,服务器会花费200到500毫秒用于后台组织HTML文件。在这期间,浏览器会一直空闲等待数据返回。在PHP中,可以使用flush()方法,它允许你把已经编译的好的部分HTML响应文件先发送给浏览器,这时浏览器就会可以下载文件中的内容(脚本等)而后台同⑤时处理剩余的HTML页面。

对Ajax请求使用GET方法:当使用XMLHttpRequest时,浏览器中的POST方法会首先发送文件头,然后才发送数据。因此使用GET最为恰当。

⑦避免空的图像src

3、Cookie优化

①减小cookie大小:去除不必要的coockie,并使coockie体积尽量小以减少对用户响应的影响

针对Web组件使用域名无关的Cookie:对静态组件的Cookie读取是一种浪费,使用另一个无Cookie的域名来存放静态组件是一个好方法,或者也可以在Cookie中只存放带www的域名。

4、CSS优化

①将CSS代码放在HTML页面的顶部

②避免使用CSS表达式:CSS表达式在执行时候的运算量非常大,会对页面性能产生大的影响

③使用来代替@import

④避免使用Filters:IE独有属性AlphaImageLoader用于修正IE

7以下版本中PNG图片的半透明效果,但它的问题在于浏览器加载图片时它会终止内容的呈现并且冻结浏览器。

5、JavaScript优化

①将JavaScript脚本放在页面的底部

将JavaScript和CSS作为外部文件来引用:在实际应用中使用外部文件可以提高页面速度,因为JavaScript和CSS文件都能在浏览器中产生缓存。

③缩小JavaScript和CSS

④删除重复的脚本

⑤最小化DOM的访问:使用JavaScript访问DOM元素比较慢

⑥开发智能的事件处理程序

6、图像优化

①优化图片大小

②通过CSSSprites优化图片

③不要在HTML中使用缩放图片

④favicon.ico要小而且可缓存

7、针对移动优化

①保持组件大小在25KB以下:主要是因为iPhone不能缓存大于25K的文件(注意这里指的是解压缩后的大小)。

②将组件打包成为一个复合文档:把页面内容打包成复合文本就如同带有多附件的Email,它能够使你在一个HTTP请求中获取多个组件。

以上就是小编今天为大家分享的关于Web前端工程师要掌握的Web前端性能优化方法的文章,希望本篇文章能够对正在从事Web前端工作的小伙伴们有所帮,想要了解更多Web前端工作的小伙伴们记得关注北大青鸟Web培训官网最后祝愿小伙伴们工作顺利!