强缓存和协商缓存

文章目录

一、强缓存

比方说 我的页面引入了个css文件 每次请求都要重新找服务器拿数据 浪费资源 所以我们要把数据存起来 直接使用 我们可以用强缓存

服务器可以通过在响应头里设置Cache-Control: max-age=31536000,max-age代表缓存时间,单位为秒,这里的数据换算过来就是一年,意味着在一年内浏览器不会再向服务器发送请求 直接读取存起来的数据

过期后就是不带括号重新获取服务器资源

还有 Expires 、Expires 是一个缓存指令,用于指定资源的过期时间。服务器端在响应头中设置 Expires,来指示客户端缓存数据的有效期。客户端在缓存失效之前,会使用缓存数据。如果服务器端的缓存有效期为永久(Expires 为 0 或负数,或者Cache-Control 值为 max-age=0 或 must-revalidate),或者服务器在响应头中没有设置这些值,则客户端不能缓存数据。

例如:

复制代码
HTTP/1.1 200 OK
Content-Type: text/html
Cache-Control: public
Expires: Wed, 20 Sep 2022 10:00:00 GMT

<html>
  ...
</html>

在这个例子中,服务器端设置 Expires 为 2022-09-20 10:00:00,客户端会在这个时间之前使用缓存数据。

Cache-control的优先级要高于Expires,如果两者同时设置,会优先使用Cache-control而忽略掉Expires

二、协商缓存

浏览器初次请求资源,服务器返回资源,同时生成一个Etag值携带在响应头里返回给浏览器,当浏览器再次请求资源时会在请求头里携带If-None-Match,值是之前服务器返回的Etag的值,服务器收到之后拿该值与资源文件最新的Etag值做对比。

如果没有变化则返回304,告诉浏览器继续使用缓存(不返回资源文件)。

如果发生变化,则返回200和最新的资源文件给浏览器使用。


相关推荐
NiKo_W31 分钟前
Linux 初识
linux·运维·服务器
FrozenLove_G2 小时前
服务器内存和普通计算机内存在技术方面有什么区别?
服务器·常识
牧羊狼的狼4 小时前
React 中的 HOC 和 Hooks
前端·javascript·react.js·hooks·高阶组件·hoc
江团1io04 小时前
深入解析TCP核心机制:连接管理、流量与拥塞控制
服务器·网络·tcp/ip
知白守黑2675 小时前
Ansible角色
运维·服务器·ansible
知识分享小能手5 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
魔云连洲5 小时前
深入解析:Vue与React的异步批处理更新机制
前端·vue.js·react.js
mCell6 小时前
JavaScript 的多线程能力:Worker
前端·javascript·浏览器
超级无敌攻城狮7 小时前
3 分钟学会!波浪文字动画超详细教程,从 0 到 1 实现「思考中 / 加载中」高级效果
前端
excel8 小时前
用 TensorFlow.js Node 实现猫图像识别(教学版逐步分解)
前端