浏览器缓存:强缓存与协商缓存实现原理有哪些?
创始人
2025-01-10 09:05:17
0

1、强缓存:设置缓存时间的,那么在这个时间内浏览器向服务器发送请求更新数据,但是服务器会让其从缓存中获取数据。
可参考:
彻底弄懂强缓存与协商缓存 - 简书

2、协商缓存每次都会向浏览器询问,那么是怎么询问的呢?

cache-control: no-cache,每次请求都回询问服务端,那么是如何询问?

当浏览器发送的请求中包含Cache-Control: no-cache时,意味着浏览器不希望使用本地缓存的副本,而是希望向服务器询问资源是否有更新。浏览器如何询问服务器是否有更新,这是通过HTTP协议的机制来实现的。

具体来说,服务器会通过以下几种方式来告诉浏览器是否有更新:

  1. ETag/If-None-Match: 服务器为每个资源分配一个唯一的ETag标识(Entity Tag)。如果下次请求时,客户端发送的If-None-Match头部包含之前服务器分配的ETag,则表示客户端想知道服务器自上次给予的ETag之后,资源是否有更新。

  2. Last-Modified/If-Modified-Since: 服务器在响应请求时,会通过Last-Modified头部告知资源的最后修改时间。如果下次请求时,客户端发送的If-Modified-Since头部包含之前服务器告知的最后修改时间,则表示客户端想知道自此时点之后,资源是否有更新。

  3. 200 OK with content: 如果服务器判定资源有更新或者是必须重新发送的,会响应200 OK状态码和新的资源内容。

  4. 304 Not Modified: 如果服务器判定资源自客户端上一次请求以来未更改,会响应304 Not Modified状态码,表示客户端可以继续使用本地缓存的副本。

以下是一个简单的HTTP请求和响应示例,展示了使用Cache-Control: no-cache时浏览器如何询问服务器资源是否有更新:

在这个例子中,请求中包含了If-None-MatchIf-Modified-Since头部,询问服务器资源自指定时间以来是否有更新。服务器根据这些头部以及资源的当前状态,如果有更新,则响应200 OK和新的资源内容;如果没有更新,则响应304 Not Modified,表示可以继续使用客户端的缓存副本。

相关内容

热门资讯

实测分享!桃乐甘肃麻将下载辅助... 实测分享!桃乐甘肃麻将下载辅助器,飞驰娱乐科技软件,练习教程(有挂神器)该软件可以轻松地帮助玩家将桃...
我来教大家!白银胡乐亲友房,上... 我来教大家!白银胡乐亲友房,上品游戏辅助器,课程教程(有挂透明挂)1、玩家可以在上品游戏辅助器透视最...
最新研发!微信小程序蜀山四川辅... 最新研发!微信小程序蜀山四川辅助器,杭州都莱辅助,指南教程(有挂技巧)一、微信小程序蜀山四川辅助器游...
一分钟了解!潮汕雀友会辅助,创... 一分钟了解!潮汕雀友会辅助,创思维激k辅助控制器,窍门教程(有挂教学)1、下载好创思维激k辅助控制器...
玩家必看科普!麻友圈插件,微信... 玩家必看科普!麻友圈插件,微信边锋辅助,学习教程(有挂秘籍)1、很好的工具软件,可以解锁游戏的微信边...
今日科普!乐乐围棋入门辅助,途... 今日科普!乐乐围棋入门辅助,途游辅助器,法子教程(有挂方法);小薇(辅助器软件下载)致您一封信;亲爱...
玩家必备攻略!欢聚水鱼天下辅助... 玩家必备攻略!欢聚水鱼天下辅助,微友助手破解版,要领教程(发现有挂)1、欢聚水鱼天下辅助透视辅助软件...
专业讨论!白金岛跑胡子脚本,多... 专业讨论!白金岛跑胡子脚本,多乐辅助器,手册教程(有挂神器)亲,关键说明,白金岛跑胡子脚本透视脚本安...
玩家科普!皮皮辅助软件,四川家... 玩家科普!皮皮辅助软件,四川家园辅助软件,演示教程(有挂细节)所有人都在同一条线上,像星星一样排成一...
一分钟教你!随意玩脚本辅助工具... 一分钟教你!随意玩脚本辅助工具透视,川南九九辅助,步骤教程(有挂详情)1、很好的工具软件,可以解锁游...