强缓存和协商缓存

文章目录

一、强缓存

比方说 我的页面引入了个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和最新的资源文件给浏览器使用。


相关推荐
齐齐大魔王5 小时前
linux-僵死进程处理
linux·运维·服务器
云水一下7 小时前
从零开始!VMware安装Fedora Workstation 44桌面系统完整教程
前端
小码哥_常8 小时前
安卓黑科技:实现多平台商品详情页一键跳转APP
前端
killerbasd8 小时前
还是迷茫 5.3
前端·react.js·前端框架
网络工程小王8 小时前
【LangChain 大模型6大调用指南】调用大模型篇
linux·运维·服务器·人工智能·学习
wangbing11258 小时前
各linux版本的包管理命令
linux·运维·服务器
不会敲代码19 小时前
TCP/IP 与前端性能:从数据包到首次渲染的底层逻辑
前端·tcp/ip
kyriewen9 小时前
奥特曼借GPT-5.5干杯,而你的Copilot正按Token收钱
前端·github·openai
AC赳赳老秦9 小时前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw
kyriewen9 小时前
代码写成一锅粥?3个设计模式让你的项目“起死回生”
前端·javascript·设计模式