webkit 子资源加载流程

        一个网页由主文档和子资源组成。主文档描述网页的框架,布局。子资源是组成网页的子元素,包括图片、CSSJS等。为了显示网页,先要把资源加载到内存。加载就是指把需要的资源加载到内存这一过程。Webkit用到很多缓存机制,加载可能是从网络加载,也可能是从本地缓存加载。Webkit的加载分为两条线,一条是主文档的加载,一条是子资源的加载。

首先需要解析主文档才知道用到哪些子资源。但并不一定要等到解析完主文档才加载子资源,也可能是边解析边加载子资源,即受到部分主文档就开始解析,解析到某个子资源就开始加载。


下面以加载一个图片资源的过程为例说明子资源的加载过程。

 


        解析主文档时发现需要一个Image资源,然后通知ImageLoader加载Image资源。ImageLoader通知CachedResourceLoader发送加载请求。Loader首先查询MemoryCache是否有该资源,没有则创建一个CachedImage代表该资源。接着通过ResourceLoaderScheduler调度加载请求。ResourceLoaderScheduler创建一个SubresourceLoader实例来完成加载请求(create->init->sendRequest)。ResourceHandle负责与平台相关的接口进行交互,发送请求和平台相关层,从平台相关层取回数据。在Android平台上,加载请求通过ResourceHandle传递到Webkit,在Webkit层又涉及到很多类。首先查询http 缓存是否有该资源,没有则发送网络请求。数据回来后,通过各种回调传递到Webcore中。

        完成一个资源的加载,涉及到数十个类。可谓相当复杂。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值