2-16 浏览器缓存机制(1)对于开发很重要,强缓存的内容能了解多少呢?


缓存是一种非常重要的技术,可以想象下一个网站每次都要请求非常多的资源,如果每次刷新都需要,重新向服务器请求一遍数据,这样服务器的压力就非常大,而且这种反复的请求是无意义的

强制缓存的特点是可以直接读取缓存,不需要访问服务器,从而减少http请求,其中又分为俩种类型,一种是内存缓存,一种磁盘缓存

强缓存是利用 http 请求头中的 Expires 和 Cache-Control 两个字段来控制,用来表示资源的缓存时间

1、Expires 是 http1.0 的规范,它的值是一个绝对时间的 GMT 格式的时间字符串。这个时间表示资源的失效时间,只要发送请求在 expires 时间之前,那么本地缓存始终有效,则在缓存中读取数据。所以这种方式有个明显的缺点,由于失效的时间是一个绝对时间,所以当服务区和客户端时间偏差较大时,就会导致缓存混乱。

2、Cache-Control 是 http1.1 的规范,一般利用该字段 max-age 来判断,这个值是一个相对时间,比如:Cache-Control:max-age=3600 // 代表着资源的有效期是 3600 秒
除了该字段还有其他的几个常用的值。

no-cache:不使用本地缓存

no-store: 直接禁止游览器缓存数据

public:可以被所有的用户缓存,包括终端用户和 CDN 等中间代理服务器。

private:只能被终端用户的浏览器缓存,不允许 CDN 等中继缓存服务器对其缓存。

Cache-Control 与 Expires 的优先级

Cache-Control 与 Expires 可以在服务端配置同时启用,同时启用的时候 Cache-Control 优先级高。

实现:通过服务端设置响应头字段来控制

相关