没有合适的资源?快使用搜索试试~ 我知道了~
WebKit和Chromium源码及原理剖析.pdf
需积分: 5 0 下载量 49 浏览量
2024-04-16
10:04:27
上传
评论
收藏 6.7MB PDF 举报
温馨提示
试读
196页
WebKit和Chromium源码及原理剖析
资源推荐
资源详情
资源评论
WebKit和Chromium源码及原理剖析
目录
WebKit和Chromium源码及原理剖析 1
第1篇 Web开发须知的浏览器内幕 缓存与存储篇(2) 2
第2篇 WebCore::Widget浅探 6
第3篇 识别浏览器的JavaScript引擎的方法 12
第4篇 Chromium项目文化 13
第5篇 iOS Safari/WebKit对DeviceOrientationEvent的实现 16
第6篇 使用支持SPDY协议的Wireshark截包(含spdyshark插件) 24
第7篇 Linux Mint + Apache2.2搭建SSL/HTTPS/SPDY服务器 28
第8篇 网页在Safari快速滚动和回弹的原理: -webkit-overflow-scrolling : touch;的实现 31
第9篇 iOS Safari/WebKit对DeviceMotionEvent的实现 38
第10篇 Chromium的智能指针/引用计数/Callback/Bind 41
第11篇 Chromium的沙盒Sandbox 46
第12篇 Web开发须知的浏览器内幕 缓存与存储篇(1) 47
第13篇 网页浏览器发展方向总结 51
第14篇 利用javascript和canvas获取UIWebView网页里的图片(不用再下载) 54
第15篇 Mac OS X编译最新webkit(2013-03-15) 57
第16篇 SPDY、HTTP/2、QUIC协议 59
第17篇 Chromium项目文化(续) 72
第18篇 Android4.4系统浏览器Chromium实现的加载模块与流程 75
第19篇 Linux Mint 15下编译Chromium for Android 95
第20篇 iOS Safari和UIWebView对orientationchange事件的实现 98
第21篇 iOS调用WebView私有API的方法 103
第22篇 iOS WebCore的WebEvent和EventHandler 104
第23篇 iOS的QuickTime Plugin 109
第24篇 利用IDA和LLDB探索WebCore的C++类的继承关系 111
第25篇 UIWebView体系结构(三)UIWebDocumentView和WebView 114
第26篇 UIWebView体系结构(五)_UIWebViewScrollView和UIWebScrollView 142
第27篇 xcode使用lldb的python脚本查看WebKit的WTF::String和Vector等基础类 146
第28篇 UIWebView体系结构(四)UIWebBrowserView 149
第29篇 UIWebView结构体系(二)UIWebTiledView和WAKWindow 153
第30篇 Mac Safari VS Mobile Safari开启的宏 157
第31篇 iOS的WebThread 162
第32篇 谈谈iOS的Safari和UIWebView 165
第33篇 Mac10.9和iOS7新公开的框架JavaScriptCore.framework 169
第34篇 查找MobileSafari WebKit revision number的方法 172
第35篇 UIWebView体系结构(一)概貌 177
第36篇 UIWebView体系结构(六)UIWebView 179
第37篇 iOS WebCore的wak目录 185
第38篇 UIWebView体系结构(八)各个Client综述 187
第39篇 cloc统计WebKit的代码量 189
第1篇 Web开发须知的浏览器内幕 缓存与存储篇
(2)
3. HTTP Cache
综述
HTTP Cache是完全按照IETF规范实现的,最新的RFC规范地址是
。它的作用就是保存可缓存的响应以备重新使用,在下次https://tools.ietf.org/html/rfc7234
请求时可减少响应时间和网络带宽。只有GET和HEAD method会缓存。
浏览器的优化
浏览器是过滤了部分没有意义进行缓存的响应头才保存到磁盘,例如Connection(keep-
alive)、www-authenticate等。这能减少耗时较多的磁盘IO时间。另外Cookie也不会保存在
HTTP Cache,而是存到专门的Cookie Storage。
新的规范允许先使用后验证(stale-while-revalidate)https://tools.ietf.org/html/rfc5861
在隐身模式下,不存在磁盘读写的HTTP Cache。
。 http://www.chromium.org/user-experience/incognito
但是某些浏览器厂商可能做优化,在临时文件夹中读写,退出或重启即删。
容量
容量是以整体计算的,不区分Domain。
Android WebView是20MB。iOS WebView也可能是20MB(根据https://github.com/gnustep/base
,不确定GNUstep是否也是Apple的源码)。/blob/master/Source/NSURLCache.m
PC上的Chromium是以80MB为基准结合磁盘可用空间来考虑的,最大是320MB。算法是:
// js
( < MB)if 100
= % 80
// < 80MB
( < MB)else if 800
= MB80
( < MB) else if 2000
// 2GB
= % 10
// < 200MB
( < MB) else if 20000
// 20GB
= MB200
else
// >= 20000MB
= .min( %, MB) Math 1 320
// 200MB <= <= 320MB
其它基于Chromium开发的浏览器可能会修改这个算法,特别是移动浏览器会扩大那个常量值,以
更高容量来提高资源复用数(嗯,不是复用率)。
淘汰
淘汰算法是一般是LRU,但在一些场景会结合文件大小、时间因素等做进一步优化。Cache的管理
模块会记录总的缓存大小,每次创建新的缓存时会判断是否缓存是否超出容量限制,满了就会按
LRU淘汰一定比例的缓存。
第1篇 Web开发须知的浏览器内幕 缓存与存储篇(2)
第 1 页 /共
193 页
浏览器需要对缓存的文件进行索引,如果这个索引损坏,浏览器会删除所有的缓存。用户也可以
通过设置界面来删除。此外,第三方程序也会做清理。
Revalidation
用户点击刷新按钮,会强制走revalidate流程,其它的情况都按照规范来执行。
RFC规范不只是为服务器和浏览器设计的,还考虑了网络中的各种节点,比如代理服务器、CDN服
务器、智能路由等。
Chromium肯定是严格遵守RFC规范的,但第三方浏览器通常会破坏这些规范来获得一定的性能提
升。比如更宽松的缓存条件。
Chromium代码参考:http_response_headers.cc : RequiresValidation
后端优化
后端需要在响应中添加Cache-Control来利用浏览器缓存。
Expires不要超过一年。
稳定的文件应该加上max-age。max-age不要大于2^31,以免大于int32而变成负数。
Some HTTP/1.0 caches might not implement Cache-Control.对HTTP 1.0可以使用Pragma
没有任何与过期相关的指令的话,是由client端决定是否缓存的。Chromium有缓存,但再次请求
的时候并不会走Revalidate流程,还是会得到200 OK。
因为HTTP Cache以URL为key,所以不想用以前的缓存,则可以更换URL,例如加不同的query、改
文件名(如加上MD5或版本号)等。URL是忽略锚点的。
要做性能优化的同学,可以在协议文档里淘金。鉴于网上也有不少文章,这里不做整理了。
4. Cookie Storage
综述
因为Cookie是在多个请求头中复用数据的,所以需要从响应头中抽取出来另外保存。而且Cookie
有自己的生命周期管理语法,就有独立的模块来管理。Cookie数据同时保存在内存和磁盘。
容量
容量是规范里就有建议最小值的。最新规范是 ,它引用两个比较旧的规范 和RFC6265 RFC2965
。RFC2109
其中最老的规范RFC2109的6.3.1节中就有说明:
hostCookie
Denial Service Attacksof
User agents may choose an upper bound cookiesto set on the number of
be stored a host domain size to from given or name or on the of the
cookie information. Otherwise a malicious server could attempt to
flood a user agent many cookies, large cookies, successivewith or on
第1篇 Web开发须知的浏览器内幕 缓存与存储篇(2)
第 2 页 /共
193 页
剩余195页未读,继续阅读
资源评论
北极象
- 粉丝: 1w+
- 资源: 345
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功