浏览器资源加载过程以及优化

这里写图片描述

当收到一个资源请求的时候将根据URL创建一个对应于要获得资源的加载器,然后开始对缓存资源进行响应。

如果客户端对cached进行了禁用的话,那么将先清空这个资源在缓存中对应的数据,然后进行资源请求(resourceRequest),否则的话就要去缓存池中查找是否存在这个资源。

这个缓存池实际是一个html页面,可以在地址栏中输入chrome://view-http-cache/就能得到,从这个页面中可以看出每一个资源都是通过一个唯一的URL进行标识的,所以如果两个资源URL不同即使内容相同,那么这两个也不是同一个资源。再者,资源缓存池的空间是有限的,一般通过最近最少使用算法进行对资源的删除,这也就是在缓存中资源的声明周期。

浏览器会将URL和这里的资源标识进行一一的比对,如果存在资源的话,浏览器会默默的记下来“奥 ,在缓存中存在这个资源哎”,以便于在以后http请求中加入相应的头部信息通知服务器,如果检查不存在的话啥也不做。注意无论是存在还是不存在都会到resourceRequest,那问题来了价差缓存中存不存在有什么用能?其实一个很大的作用就是防止在缓存中的文件由于时间太久容易过期,但是服务器还不知道,所以即便是检测到在缓存中存在这个资源也不会立即使用的,而是通过网络资源这种方式发送http请求同时服务器,由服务器判断是否更新。如果服务器得到http请求之后查看下http中信息发现不需要更新,那么服务器就会给客户端发送304状态吗,那么客户端就会很放心的从缓存中取出数据来使用了。从这里会发现,浏览器提供缓存的目的不是减少http请求的次数,而是减少http中携带的数据,从而减少网络负载。所以说即使存在缓存中也要交给resourceRequest。

当通过上述的三种方式到达resourceRequest之后,会通知resourceloader,这个资源加载器的作用仅仅是从网络或者磁盘缓存中提取数据,对于具体的网络请求则交给下面的各个模块,这些模块中产生http请求,对http头部的信息进行表述,建立连接,接受ACK等。

在资源加载中优化的方式有这么几种:
(1)DNS预取
当用户增在浏览网页的时候,浏览器会提取网页中的超链接,并且将域名提取出来,利用较少的网络资源对这些域名进行解析,一般会单独创建一个线程,这样不会阻塞页面的渲染进度。同时开发人员也可以明确的声明浏览器要预解析的域名,如下:

可以通过chrome://dns/ 查询本地有哪些网页在预取那些地址。

(2)较少http请求次数

当一些资源很小的时候,比如小的css和js可以嵌套在html文件中,对这些资源进行合并,从而减少http请求的次数。

(3)较少http携带数据的大小(较少网络负载)
利用浏览器提供的缓存机制减少请求的数据量,也可以通过对一些图片进行压缩进行减少。

(5)减少重定向的次数
重定向不仅增加了http请求的次数,还摒弃了DNS预期带来的好处。
(6)避免错误或不存在的的连接请求,因为他会长时间占用网络资源。

具体详细的网络内容请参考《http权威指南》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值