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

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

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


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


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


1.错误控制

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

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


2.跳转

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

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


3. Subframe

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

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


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


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

本系列上一篇:

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


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

上一篇:css样式表中四种属性选择器


下一篇:nobelking 3 js 数字和数字相加 字符串连接 数字和字符串连接1