一,概述
浏览器的缓存是指在访问网络的时候,将一些数据文档等缓存到本地磁盘,等浏览器再次访问相同的页面时,不再请求服务器,直接从缓存中返回。按类型分为强缓存和协商缓存两种。
二,强缓存
概念:
强缓存是指访问网站时,如果之前访问过且使用了强缓存,如果在缓存过期时间之内,则不向服务器发送请求,直接从缓存中获取资源(即使资源没有更新);如果缓存过期了,则从服务器请求。
使用方式:
主要利用http头的Expires和Cache-Control两个字段来控制。
Expires - 过期时间
Cache-Control - 缓存的设置
private(默认值):仅浏览器可以缓存
public:浏览器和代理服务器都可以缓存
no-cache:不进行强缓存
no-store:不强缓存,也不协商缓存
max-age=xx:过期时间(单位秒)
三,协商缓存
概念:
协商缓存,又称弱缓存,指访问网站时,如果之前访问过且使用了协商缓存,则发送一次请求到服务器,服务器判断资源最近没有被修改且返回304,则本次请求资源从缓存中获取;如果服务器判断资源最近有被修改过,则浏览器重新请求服务器获取资源。
判断资源是否修改的方式:
- 判断最后修改时间是否发生变化(可能会出现修改了时间,但是内容没改)
- 判断资源内容是否有修改
使用方式:
(1)header的E-tag和If-None-Match
E-tag是保证每个资源是唯一的,资源发生变化,E-tag也跟着变化;
if-None-Match是服务器根据浏览器上次发送的该值来判断是否命中缓存。
(2)header的Last-Modify和if-modified-since
浏览器第一次访问资源时,服务器会在响应hedaer加上last-modify,标记最后一次的修改时间;浏览器再次访问资源时,会在请求header中添加if-modified-since,该值存储为上一次缓存返回的last-modify时间。服务器接收到if-modified-since参数后,会根据该值判断是否命中缓存。如果命中缓存,服务器则返回304,且不返回资源内容和last-modify字段。