本节书摘来自异步社区《Web性能实践日志》一书中的第1章,第1.3节,作者【加拿大】Stoyan Stefanov,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.3 决定浏览器架构
现在我们可以拦截任意函数调用了,它变成了一个可以识别指定函数的功能,最好是所有浏览器共用一份代码,这样就可以尽可能多地重用代码了。在WebPageTest中,如果想要拦截所有Winsock调用,我们需要解析主机名,连接套接字以及读写数据(见图1-2)。
这赋予了我们访问所有浏览器网络通信的权限,意味着我们完全可以监测浏览器在做什么。除了必须解码原始字节流以外,其他实现都很简单,它还提供了一个跨浏览器的统一度量方式。SSL添加了一点混淆,所以我们也需要拦截浏览器使用各种SSL库的调用,以便我们可以看到未加密的数据。Chrome的操作可能有点小麻烦,因为对应的库被编译到Chrome的代码里面了。但是很幸运,它们在每一次构建的时候都打上了调试标示符号,所以我们还是可以在内存中找到代码。
同样的方法用于拦截浏览器的绘制调用,就可以得知浏览器是何时把内容绘制到屏幕的(用于开始渲染测量)。