浏览器在向服务器进发送一个请求的时候,浏览器会首先进行缓存过期判断,其通过设置的缓存过期时间来判断文件是否过期
一共分为以下几种情况:
1.未过期。这种情况下不向服务器发送请求,直接进入缓存读取。此时服务器会返回一个200OK from Cache。这种情况下浏览器和服务器之间不存在交互。
2.过期的情况。这种情况下浏览器会向服务器发送请求,并带上1中设置的文件修改时间和Etag。然后进行资源更新判断。服务器根据浏览器传过来的文件修改时间来判断自上一次请求过后文件有没有被修改。根据Etag,判断文件内容自上一次请求后,文件内容有没有发生变化。
此时又分为两种情况:
- 两种判断的结论都是文件没有被修改过,服务器会向浏览器返回304,此时浏览器会从缓存中读取文件的内容。这种情况叫做协议缓存,浏览器和服务器之间有一次请求交互
- 若修改时间和文件内容判断有一个没有通过,则服务器会接收此次请求。
应该注意get请求会被缓存,post请求不会被缓存。