强缓存和协商缓存

一、强缓存

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


相关推荐

  1. 什么是缓存协商缓存

    2024-03-20 06:08:07       57 阅读
  2. 浏览器缓存协商缓存

    2024-03-20 06:08:07       59 阅读
  3. 缓存协商缓存的区别?

    2024-03-20 06:08:07       40 阅读
  4. 前端协商缓存缓存

    2024-03-20 06:08:07       33 阅读
  5. 缓存协商缓存的区别

    2024-03-20 06:08:07       39 阅读
  6. http协商缓存缓存

    2024-03-20 06:08:07       31 阅读
  7. 什么是缓存协商缓存

    2024-03-20 06:08:07       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-20 06:08:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-20 06:08:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-20 06:08:07       82 阅读
  4. Python语言-面向对象

    2024-03-20 06:08:07       91 阅读

热门阅读

  1. C++ 类模板

    2024-03-20 06:08:07       40 阅读
  2. YOLOv8-pose自定义关键点推理封装

    2024-03-20 06:08:07       35 阅读
  3. 安卓面试题多线程41-45

    2024-03-20 06:08:07       32 阅读
  4. 【Python】复习7:面向对象编程(OOP)

    2024-03-20 06:08:07       34 阅读
  5. Qt + HTTP 线程交互类封装

    2024-03-20 06:08:07       37 阅读