• 浏览器第一次向服务器发请求获取资源,服务器响应报文,状态码为200,响应头会带上Cache-Control、Etag字段,响应体是原始资源。浏览器收到响应后把资源缓存在本地。
• 当浏览器再次发送请求获取该资源时,浏览器会根据之前响应报文的Cache-Control:max-age过期时间来检查本地资源是否已过期。如果未过期,则直接使用本地资源;如果已经过期了,则发请求询问该资源是否依旧可用,请求包含头字段if-None-Match,是之前响应报文里的Etag
• 服务器收到请求后通过if-None-Match里的Etag和新计算的Etag做对比,如果匹配,则直接返回一个状态码为304,不包含响应体的报文,告诉浏览器该资源依旧可用。如果不匹配,则返回一个状态码为200带Cache-Control、Etag和原始资源的新报文。
• 如果不存在Etag,则用Last-Modified和if-Modified-Since做类似的判断
浏览器的缓存机制
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...