强缓存
在资源初次加载时,给它一个过期时间,如果过了这个时间,资源就需要在请求时重新获取,如果在这个时间内,我们资源发生了变化,但是呢它还是不会更新。
那么接下来,我们就需要考虑,我们是如何给它分配(指定)过期时间的,expire、cache-control
协商缓存
-
在资源加载时,服务端给响应头添加一个 Last-Modified,下次请求时,在请求头自动添加 If-Modified-Since 携带这个参数,让服务端进行对比。这种协商其实不严谨,文件更新时间变了不一定文件内容改变
-
在资源加载时,服务端给响应头添加一个 E-tag,下次请求时携带 If-None-Match 参数,值 E-tag,在服务端进行对比,来决定内容有没有变化,有的话则需要更新,否则(返回 304 状态码)。