1 网络资源
资源加载器
网页加载中需要获取的资源文件很多,有HTML,JavaScript,CSS,图片,SVG,CSS Shader,视频音频字幕,字体文件,XSL样式表等。不同资源有不同的加载器,主要分为三类:
- 特定资源加载器:处理特定资源请求,如ImageLoader FontLoader
- 缓存资源加载器:从内存中获取资源,CachedResourceLoader
- 通用资源加载器:从网络或硬盘中获取资源,ResourceLoader
同步与异步
HTML解析时,可能会碰到很多资源需要加载。这个时候,CSS和PNG等资源会开启异步线程去加载,不会打断HTML解析。而JS文件则会阻塞HTML解析,因为JS可能会改变DOM结构。虽然WebKit使用了预取技术来优化这个问题,但还是建议将js文件放在HTML的末尾。
缓存机制
Webkit使用了一个资源缓存池来缓存资源。以URL为key,就算资源内容完全相同,URL不同也会认为是两个不同的资源。每次资源请求时,先在缓存池中寻找资源,未命中才发起http等请求。这里也会遇到大多数缓存策略碰到的问题&