强缓存和协商缓存

文章目录

一、强缓存

比方说 我的页面引入了个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 命令大全完整版(11)
java·linux·运维·服务器·前端·centos
小白&12318 分钟前
Linux-CentOS 7安装
linux·运维·服务器
知识分享小能手37 分钟前
Html5学习教程,从入门到精通,HTML5 简介语法知识点及案例代码(1)
开发语言·前端·javascript·学习·前端框架·html·html5
IT、木易40 分钟前
大白话React第二章深入理解阶段
前端·javascript·react.js
晚安7201 小时前
Ajax相关
前端·javascript·ajax
图书馆钉子户1 小时前
怎么使用ajax实现局部刷新
前端·ajax·okhttp
bin91531 小时前
DeepSeek 助力 Vue 开发:打造丝滑的单选按钮(Radio Button)
前端·javascript·vue.js·ecmascript·deepseek
qianmoQ1 小时前
第五章:工程化实践 - 第五节 - Tailwind CSS 常见问题解决方案
前端·css
那就可爱多一点点1 小时前
超高清大图渲染性能优化实战:从页面卡死到流畅加载
前端·javascript·性能优化
木谷羊宫切割1 小时前
玩机日记 12 群晖部署AList并配置SSL,安装opkg,使用rclone挂载到本地
服务器·网络协议·ssl