浏览器缓存-强缓存与协商缓存

就浏览器而言,缓存分为4类:memory cache,http cache,service worker cache,push cache.

http cache 是我们开发中接触最多的缓存,他包括强缓存与协商缓存。

强缓存主要包括 expires 与 cache-control

1,expires 是http1.0 中定义的缓存字段。当我们请求一个资源,服务器返回时,可以在response headers 中 增加一个expires 字段表示资源的过期时间。

它是一个时间戳(准确点说是格林尼治时间),当客户端再次请求该资源的时候,会把客户端时间与该时间戳做对比,如果大于该时间戳则已过期,否则直接使用该缓存资源。

expires: Thu, 03 Jan 2019 11:43:04 GMT

但是又个大问题,发送请求时是使用的客户端时间去对比。一是客户端时间与服务端时间可能快慢不一致,另一方面是客户端时间是可以修改的(比如浏览器时间是跟随系统时间,修改系统时间会影响到),所以不一定满足预期。

2,cache-control

正是上面说的可能存在的问题,http1.1 新增了cache-control字段来解决该问题,所以当cache-control 与 expires 都存在时,cache-control的优先级更高。该字段是一个时间长度,单位为秒,表示该资源过了多少秒后失效。当客户端请求资源的时候,发现该资源还在有效期时间内,则使用该缓存,它不依赖客户端时间。

posted @ 2024-01-11 13:38  徐学进  阅读(15)  评论(0编辑  收藏  举报