首页 > Web开发 > 详细

[WebKit]WebCore之页面加载的设计与实现(三)

时间:2014-02-07 11:02:49      阅读:399      评论:0      收藏:0      [点我收藏+]

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

bubuko.com,布布扣


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


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


1.错误控制

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

bubuko.com,布布扣


2.跳转

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

bubuko.com,布布扣


3. Subframe

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

bubuko.com,布布扣


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


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

本系列上一篇:

   [WebKit]WebCore之页面加载的设计与实现(二)


[WebKit]WebCore之页面加载的设计与实现(三)

原文:http://blog.csdn.net/horkychen/article/details/18955041

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!