博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端性能优化总结
阅读量:5366 次
发布时间:2019-06-15

本文共 2311 字,大约阅读时间需要 7 分钟。

前端性能优化:健康的优化应该是根据页面的加载过程,全面的优化过程

从输入URL到页面加载完成的整个过程:从浏览器地址栏的请求链接开始,浏览器通过DNS解析查到域名映射的IP地址,成功之后浏览器端向此IP地址取得连接,成功连接之后,浏览器端将请 求头信息 通过HTTP协议向此IP地址所在服务器发起请求,服务器接受到请求之后等待处理,最后向浏览器端发回响应,此时在HTTP协议下,浏览器从服务器接收到 text/html类型的代码,浏览器开始显示此html,并获取其中内嵌资源地址,然后浏览器再发起请求来获取这些资源,并在浏览器的html中显示。

1. 输入地址,浏览器查找域名对应的 IP 地址,这一步包括DNS具体的查找过程,包括:浏览器缓存->系统缓存->路由器缓存...

优化原则: 减少DNS查找次数 

1)缓存DNS查找记录;2)减少主机名的数量(2-4个主机)。把页面中的内容分割成至少两部分但不超过四部分。可以在减少DNS查找次数和保持较高程度并行下载两者之间权衡。

2. 浏览器根据 IP 地址与服务器建立 socket 连接,通信连接的建立需要三次握手

优化原则1:使用内容分发网络(CDN)

其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘"(边缘服务器),使用户可以就近取得所需的内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题。

优化原则2:用域名划分页面内容

按页面内容划分域名,在合适的资源服务器上存放文件,可以最大限度地实现并行下载。由于DNS查找带来的影响你首先要确保你使用的域名数量在2个到4个之间。例如,你可以把用到的HTML内容和动态内容放在上,而把页面各种组件(图片、脚本、CSS)分别存放在statics1.example.org和statics.example.org上。

3. 浏览器向web服务器发送HTTP请求

终端用户响应的时间中,有80%用于下载各项内容。这部分时间包括下载页面中的图像、样式表、脚本、Flash等。

优化原则1:尽量减少HTTP请求次数

1)合并文件,尽可能的将外部的脚本、样式进行合并,多个合为一个

2)CSS Sprites是减少图像请求的有效方法

3)使用内联图象,内联图像是使用data:URL scheme的方法把图像数据加载页面中,优点:1、减少http请求次数;2、做为背景平铺类的图片使用内联图片的话,减少http请求次数,并且不会影响加载速;缺点:1、浏览器不会缓存内联图片资源;2、兼容性较差,只支持ie8以上浏览器;3、超过1000kb的图片,base64编码会使图片大小增大,导致网页整体下载速度减慢。

4)使用Lazy Load Images,

这条策略实际上并不一定能减少 HTTP请求数,但是却能在某些条件下或者页面刚加载时减少 HTTP请求数。对于图片而言,在页面刚加载的时候可以只加载第一屏,当用户继续往后滚屏的时候才加载后续的图片。这样一来,假如用户只对第一屏的内容感兴趣时,那剩余的图片请求就都节省了。
 
 
优化原则2:合理的利用缓存

1)添加Expires或Cache-Control信息头

2)配置ETag 实体标签

优化原则3:使iframe的数量最小。 

优化原则4:不要出现404错误。

4. 等待响应

优化原则1:避免重定向

跳转会降低用户体验。在用户和HTML文档中间增加一个跳转,会拖延页面中所有元素的显示,因为在HTML文件被加载前任何文件(图像、Flash等)都不会被下载。有一种经常被网页开发者忽略却往往十分浪费响应时间的跳转现象。这种现象发生在当URL本该有斜杠(/)却被忽略掉时。在Apache服务器中可以使用Alias 或者 mod_rewrite或者the DirectorySlash来避免。连接新网站和旧网站是跳转功能经常被用到的另一种情况。这种方法对于开发者来说可以降低复杂程度,但是它同样降低用户体验。一个可替代方法就是如果两者在同一台服务器上时使用Alias和mod_rewrite和实现。如果是因为域名的不同而采用跳转,那么可以通过使用Alias或者mod_rewirte建立CNAME(保存一个域名和另外一个域名之间关系的DNS记录)来替代。

优化原则2:服务器端开启Gzip压缩

通过减小HTTP响应的大小可以节省HTTP响应时间。Gzip压缩所有可能的文件类型,图像和PDF文件除外。

优化原则3:减小Cookie体积

HTTP coockie可以用于权限验证和个性化身份等多种用途。coockie内的有关信息是通过HTTP文件头来在web服务器和浏览器之间进行交流的。因此保持coockie尽可能的小以减少用户的响应时间十分重要。

优化原则4:对于页面内容使用无coockie域名 

5. 服务器传输处理好的html文本内容到浏览器,浏览器解析html,并加载css,js,图片等内容

优化原则1:使用外部JavaScript和CSS ;削减JavaScript和CSS;把样式表置于顶部 ,把脚本置于页面底部 ;剔除重复脚本 

优化原则2:避免使用CSS表达式;用<link>代替@import ;避免使用滤镜 ;

优化原则3:favicon.ico要小而且可缓存 ;不要在HTML中缩放图像 ;

 

转载于:https://www.cnblogs.com/sunny_z/p/6821237.html

你可能感兴趣的文章
将html代码中的大写标签转换成小写标签
查看>>
jmeter多线程组间的参数传递
查看>>
零散笔记
查看>>
信息浏览器从Android的浏览器中传递cookie数据到App中信息浏览器
查看>>
hash储存机制
查看>>
HI3531uboot开机画面 分类: arm-linux-Ubunt...
查看>>
OpenLayers绘制图形
查看>>
tp5集合h5 wap和公众号支付
查看>>
Flutter学习笔记(一)
查看>>
iOS10 国行iPhone联网权限问题处理
查看>>
洛谷 P1991 无线通讯网
查看>>
mysql asyn 示例
查看>>
数据库第1,2,3范式学习
查看>>
《Linux内核设计与实现》第四章学习笔记
查看>>
Docker 安装MySQL5.7(三)
查看>>
CSS: caption-side 属性
查看>>
CSS3中box-sizing的理解
查看>>
Web.Config文件配置之配置Session变量的生命周期
查看>>
mysql导入source注意点
查看>>
linux下编译安装nginx
查看>>