缓存不一定只存在于本地。
缓存流程:
1.判断是否有缓存?没有缓存,从服务器获取资源存入缓存
2.有缓存,是否足够新鲜?
3.新鲜:提供给客户端。不新鲜:与服务器进行再验证
4.验证通过?通过:更新已缓存文档新鲜度。没通过:从服务器获取最新资源存入缓存,提供给客户端。
image.png
文档过期:
cache-control
(http1.1):max-age和 expires
(http1.0)
-
max-age
:存的是相对时间,即时间长 -
expires
:存的是一个日期,是一个绝对日期,表示到某个时间节点
缓存文档过期不是指和服务器的文档不一致了,只是到了要和服务器再验证,缓存需要询问原始服务器文档是否发生了变化。
服务端再验证的几种方法:
条件判断再验证:if-modified-since
和if-none-match
if-modified-since
和last-modified
一起使用,表示从指定日期开始文档有更新了就重新请求。(从时间的角度看)
if-none-match
和etag
一起使用,表示如果etag
和服务端返回的不一致就重新请求(从文档更新角度看)
网友评论