浏览器缓存分为强缓存和协商缓存,当客户端请求某个资源时,获取缓存的流程如下:
首先浏览器主进程接管,开了一个下载线程。
然后进行 HTTP 请求(DNS 查询、IP 寻址等等),中间会有三次握手,等待响应,开始下载响应报文。
将下载完的内容转交给 Renderer 进程管理。
Renderer 进程开始解析 CSS rule tree 和 DOM tree,这两个过程是并行的。
解析绘制过程中,当浏览器遇到 link 标签或者 script、img 等标签,浏览器会去下载这些内容,遇到缓存的使用缓存,不适用缓存的重新下载资源。
CSS rule tree 和 DOM tree生成完了之后,开始合成 render tree,这个时候浏览器会进行 layout,开始计算每一个节点的位置,然后进行绘制。
绘制结束后,关闭 TCP 连接,过程有四次挥手。
href和src都是用来引用外部资源的属性。例如:网址、图片、视频、css文件、js文件等。
href(Hypertext Reference)超文本引用,用来建立当前元素和文档之间的连接。常用有link、a标签等。当它引用资源时,浏览器会将其识别为CSS文档,并行下载资源并且不会停止对当前文档的处理。
src(Source)会将指向的资源下载并引用到当前的文档中,常用标签有script、img、ifram等。它会替换掉当前的元素。当浏览器解析src时,会暂停其他资源的下载和处理,直接将该资源下载、编译、执行完毕。
href会建立一个关联指向资源,而src则是将资源嵌入当前文档中