目录
9、服务器检查是我们请求头是否携带了Etag、Last-Modified,然后进行校验,是否命中协商缓存
10、处理程序读取完整请求并准备HTTP响应,可能需要查询数据库等操作
11、浏览器接收HTTP响应,然后根据情况选择关闭TCP连接或者保留重⽤,关闭TCP连接
输入url到页面展示经历了什么?
1、在浏览器地址栏输⼊URL
2、浏览器查看缓存,是否有缓存?
强缓存
强缓存可以通过设置两种 HTTP Header
实现:Expires
和 Cache-Control
。
Expires: Wed, 22 Oct 2018 08:41:00 GMT
Expires
:是 HTTP/1
的产物,表示资源会在 Wed, 22 Oct 2018 08:41:00 GMT
后过期,需要再次请求,并且 Expires
受限于本地时间,如果修改了本地时间,可能会造成缓存失效
Cache-control: max-age=30
Cache-Control:
出现于 HTTP/1.1
,优先级高于 Expires
。该属性值表示资源会在 30
秒后过期,需要再次请求。
如果cache-control和expires都过期,则继续发送请求,直接去从缓存位置中获取数据
缓存位置
主要分为一下四种
- Service Worker
- Memory Cache
- Disk Cache
- Push Cache
memory cache
Memory Cache 也就是内存中的缓存
优点:
读取速度快
缺点:
一旦我们关闭 Tab 页面,内存中的缓存也就被释放了。
如何触发:
当我们访问过页面以后,再次刷新页面,可以发现很多数据都来自于内存缓存
disk cache
Disk Cache 也就是存储在硬盘中的缓存
优点:
缓存再硬盘中,容量大
缺点:
读取速度满
如何触发:
根据浏览器请求头
浏览器会把哪些文件丢进内存中?哪些丢进硬盘中?
关于这点,网上说法不一,不过以下观点比较靠得住:
对于大文件来说,大概率是不存储在内存中的,反之优先
当前系统内存使用率高的话,文件优先存储进硬盘
Service Worker
Service Worker 是运行在浏览器背后的独立线程,一般可以用来实现缓存功能。
传输协议必须为 HTTPS
Service Worker 的缓存与浏览器其他内建的缓存机制不同,它可以让我们自由控制缓存哪些文件、如何匹配缓存、如何读取缓存,并且缓存是持续性的。
这个我们不常用
Push Cache
Push Cache(推送缓存)是 HTTP/2 中的内容,当以上三种缓存都没有命中时,它才会被使用。
它只在会话(Session)中存在,一旦会话结束就被释放,并且缓存时间也很短暂
这个我们不常用
3、浏览器解析URL获取协议,主机,端⼝,path
4、浏览器组装⼀个HTTP(GET)请求报文
我们从浏览器中输入的请求,都是Get请求,所以就去封装成一个get请求!
5、浏览器获取主机 ip 地址,(DNS解析)
1、浏览器缓存
2、查看本机Host文件
hosts文件是一个用于储存计算机网络中各节点信息的计算机文件。这个文件负责将主机域名映射到相应的IP地址。hosts文件通常用于补充或取代网络中DNS的功能。和DNS不同的是,计算机的用户可以直接对hosts文件进行控制。hosts文件的作用非常大,可以自由解析域名。
3、DNS缓存
4、DNS递归查询