美文网首页
输入url后浏览器相关缓存

输入url后浏览器相关缓存

作者: Allan要做活神仙 | 来源:发表于2019-04-03 09:42 被阅读0次

2019-04-03-9:24
Atwood's Law

1、地址栏网址缓存

比如:之前输入过 jianshu.com,当你输入j 的时候,浏览器地址栏会自动出现 jianshu.com

2、检查 HSTS 预加载列表(TODO:还没仔细看,不太懂,后面空了再补充)

3、DNS 缓存

域名解析最少涉及了三个地方的缓存:

浏览器的 DNS 缓存
操作系统中的 DNS 缓存
索操作系统的 hosts 文件(可手动写入的缓存)

浏览器搜索自己的 DNS 缓存(浏览器维护一张域名与 IP 地址的对应表);如果没有命中,进入下一步;
搜索操作系统中的 DNS 缓存;如果没有命中,进入下一步;
搜索操作系统的 hosts 文件( Windows 环境下,维护一张域名与 IP 地址的对应表);如果没有命中,进入下一步;

4、ARP(地址解析协议)缓存

  • ARP 是一种用以解释地址的协议,根据通信方的 IP 地址就可以反查出对应方的 MAC 地址

当地址解析协议被询问一个已知 IP 地址节点的 MAC 地址时,先在 AR 缓存中查看,若存在,就直接返回与之对应的MAC地址;若不存在,才发送 ARP 请求查询。

5、TCP 发送缓冲区 & 接收缓冲区

建立 TCP 连接这一步也涉及到缓存 —— 用来临时存放双方通信的数据,保证通信数据不会丢包。

6、HTTP 请求缓存( CDN 节点缓存、代理服务器缓存、浏览器缓存、后端动态计算结果缓存等 )

强缓存 ( Cache-Control 和 Expires )

这里基本都知道,不解释

协商缓存 ( Last-Modified 和 Etag )

如果强缓存没有命中,就会发起一个请求到服务器,看协商缓存是否命中,如果命中,请求响应返回http 304,并显示一个Not Modified字符串

协商缓存是利用【last-Modified, If-Modified-Since】和【ETag、If-None-Match】这两对Header来管理的

1、Last-Modified,If-Modified-Since

Last-Modified 表示本地文件最后修改日期,浏览器会在request header加上If-Modified-Since(上次返回的Last-Modified的值),询问服务器在该日期后资源是否有更新,有更新的话就会将新的资源发送回来

但是如果在本地打开缓存文件,就会造成 Last-Modified 被修改,所以在 HTTP / 1.1 出现了 ETag

2、ETag、If-None-Match

Etag就像一个指纹,资源变化都会导致ETag变化,跟最后修改时间没有关系,ETag可以保证每一个资源是唯一的

If-None-Match的header会将上次返回的Etag发送给服务器,询问该资源的Etag是否有更新,有变动就会发送新的资源回来

ETag的优先级比Last-Modified

具体为什么要用ETag,主要出于下面几种情况考虑:

一些文件也许会周期性的更改,但是他的内容并不改变(仅仅改变的修改时间),这个时候我们并不希望客户端认为这个文件被修改了,而重新GET;
某些文件修改非常频繁,比如在秒以下的时间内进行修改,(比方说1s内修改了N次),If-Modified-Since能检查到的粒度是s级的,这种修改无法判断(或者说UNIX记录MTIME只能精确到秒);
某些服务器不能精确的得到文件的最后修改时间。

image.png

几种状态码的区别

200:强缓Expires/Cache-Control存失效时,返回新的资源文件
200(from cache): 强缓Expires/Cache-Control两者都存在,未过期,Cache-Control优先Expires时,浏览器从本地获取资源成功
304(Not Modified ):协商缓存Last-modified/Etag没有过期时,服务端返回状态码304

相关文章

  • 输入url后浏览器相关缓存

    2019-04-03-9:24Atwood's Law 1、地址栏网址缓存 比如:之前输入过 jianshu.co...

  • 13:在地址栏里输入一个 URL,到这个页面呈现出来,中间会发生

    输入 url 后,首先需要找到这个 url 域名的服务器 ip,为了寻找这个 ip,浏览器首先会寻找缓存,查看缓存...

  • 2019-02-27

    从输入url到显示页面,都经历了什么 1、首先,在浏览器地址栏中输入url 2、浏览器先查看浏览器缓存-系统缓存-...

  • 详解重绘与回流

    从输入url到看到页面,过程? 1、输入url ( 协议、网络地址、资源路径 ) 2、查看浏览器缓存,看是否有缓存...

  • 浏览器渲染页面的过程

    1.在浏览器地址栏输入url,先解释url,检查地址是否合法2.浏览器检查浏览器缓存-系统缓存-路由器缓存,如果缓...

  • 从URL到页面展示

    浏览器与服务器的交互 在浏览器输入URL 浏览器根据URL查找对应的域名的IP地址,查找顺序浏览器缓存-本机缓存-...

  • 网页加载流程

    1.用户在浏览器输入 URL 2.浏览器尝试读取 URL 的缓存 3.无缓存则开始查 URL 域名的 ip,也就是...

  • 页面从输入url到页面显示完成的加载过程

    浏览器地址栏输入url 浏览器会先查看浏览器缓存--系统缓存--路由缓存,如有存在缓存,就直接显示。如果没有,则进...

  • 一个页面从url敲如地址到页面显示的全过程

    1、浏览器地址栏输入url 2、浏览器会先查看浏览器缓存--系统缓存--路由缓存,如有存在缓存,就直接显示。如果没...

  • HTTP概述(六)

    从输入URL到页面加载发生了什么? 1, 在浏览器中输入URL 2, 浏览器通过域名去找到对应的IP 浏览器缓存 ...

网友评论

      本文标题:输入url后浏览器相关缓存

      本文链接:https://www.haomeiwen.com/subject/pmtabqtx.html