随笔 - 6  文章 - 0  trackbacks - 0
<2016年3月>
282912345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

关于页面加载,RFC2616(HTTP 1.1)做了很多的定义,WebKit的流程也是遵循这些定义的实现。这部分的实现主要放在之前提出的WebCore Loaders和HTTP Stack中。



比如Chrome Net Stack(里面包含了HTTP Stack的实现)中实现了HTTP Cache, 而Android浏览器则是在HTTP Client中实现了HTTP Cache。 关于缓存,会专门在新篇中学习一下。另外在加载中的策略控制已经在第一篇中提到了,其它的还有错误处理、跳转等。


下面补充几个场景下的流程。没有做进一步的总结,只是简单将流程列出来。


1.错误控制

错误由HTTP Stack中抛出来,依次调用到CachedResource::error进行处理。这里要说明的是WebCoreResourceHandleAsDelegate本身只对应到ResourceHandle的,在错误处理调用则使用m_handle->client()的形式访问到了ResourceLoader。



2.跳转

关于跳转,实际完全在HTTP Stack中完成的,只是会在跳转前通过willSendRequest的方式通知到DocumentLoader。



3. Subframe

关于iframe,或是plugin之类的sub frame, 在加载时也是走DocumentLoader::startLoadingMainResource()的流程,不同的是它的发起者是SubframeLoader。它并不是继承自CachedResourceClient, 而是封装了一些上层的加载逻辑。



后续会根据HTTP 1.1协议中关于页面加载的定义展开一些WebKit的实现,特别是缓存的处理。


转载请注明出处: http://blog.csdn.net/horkychen

@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
posted on 2016-03-03 21:41 月下孤影 阅读(158) 评论(0)  编辑 收藏 引用 所属分类: webkit相关学习