http缓存

十、HTTP 缓存——Nginx HTTP 缓存 时间为 2024年8月16日 11:00:00,Nginx 将返回 304 状态码,因为资源的最后修改时间早于客户端的请求时间。:对于不常变化的异步数据(如商品详情页的评论),可以考虑设置较长时间的缓存(如 1 个月)。:对于静态资源(如 JS、CSS、图片),可以设置较长时间的缓存(如 1 个月或 1 年),通过版本号控制缓存过期。:对于不需要强一致性的页面(如商品详情页的库存信息),可以设置较短的缓存时间。通过这种配置,你可以灵活地管理 Nginx 的缓存内容,确保缓存的有效性和更新的及时性。 阅读详情
  • 为什么要使用 HTTP 缓存?
  • 缓存的内容又是什么?
  • HTTP 缓存头部字段

    Cache-Control - 请求/响应头,缓存控制字段:
    no-store - 所有内容都不缓存
    no-cache - 缓存,但是浏览器使用缓存前,都会请求服务器判断缓存资源是否是最新的
    max-age = x(单位秒) - 请求缓存后的 x 秒不再发起请求
    s-maxage= x (单位秒) - 代理服务器请求源站缓存后的 x 秒不再发起请求,只对 CDN 缓存有效
    public - 客户端和代理服务器(CND)都可缓存
    private 只有客户端可以缓存

    Expires - 响应头,代表资源过期时间,由服务器返回提供,是 HTTP1.0 的属性,在与 max-age 共存的情况下,优先级要低。

    Last-Modified - 响应头,资源最新修改时间,由服务器告诉浏览器

    if-Modified_Since - 请求头,资源最新修改时间,由浏览器告诉服务器,和 Last-Modified 是一对,他俩会进行对比

    Etag - 响应头,资源标识,由服务器告诉浏览器

    if-None-Match - 请求头,缓存资源标识,由浏览器告诉服务器(其实就是上次服务器给的 Etag),和 Etag 是一对,他俩会进行对比

  • HTTP 缓存的工作方式

场景一:让服务器与浏览器约定一个文件过期事件 —— Expires
在这里插入图片描述

场景二:让服务器与浏览器在约定文件过期时间的基础上,再加一个文件最新时间的对比 —— Last-Modified 与 Modified-Since

场景一 + 场景二 : 客户端第一次向服务端发送请求,服务端返回响应请求以及过期时间 Expires + Last-Modified 给客户端,在过期时间内直接使用缓存,如果超过过期时间,则对比 if-Modified-Since 与 Last-Modified 如果两个值相等服务器返回 304 继续使用本地缓存,不相等则服务器查找资源并重新返回 Expires + Last-Modified + 对应资源

场景三:让服务器与浏览器在 Expires + Last-Modified 的基础上,增加一个文件内容唯一对比标记 Etag 与 if-None-Match。 Expires 不稳定,再加一个 max-age 来加以代替。max-age 要比 Expires 的优先级高就可以不再使用 Expires。然后浏览器再次发送请求,如果在 max-age 时间内就使用本地缓存,超过这个事件对比 if-None-Match 与 Etag 这两个值比 if-Modified-Since 与 Last-Modified 的优先级高,就不对比 if-Modified-Since 与 Last-Modified 的值了,所以当 if-None-Match 与 Etag 如果两个值相等服务器返回 304 继续使用本地缓存,不相等则服务器查找资源并重新返回 Expires + Last-Modified + 对应资源

以上三个场景的缺陷在于,如果 Expires 或者 max-age 没有过期则浏览器无法主动感知文件的变化

改进方案:
md5/hash 缓存 [可以借助 webpack 实现]:
通过不缓存 HTML ,为静态文件添加 MD5 或者 hash 标识,解决浏览器无法跳过缓存过期时间主动感知文件变化问题。
CDN 缓存:
CDN 是构建在网络智商的内容分发网络,依靠不糊在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
CDN 的工作方式:
第一次请求

CDN第一次请求

后续缓存
CDN后续请求

  • 浏览器操作对缓存的影响
    浏览器操作对缓存的影响

前端缓存策略

有哪些缓存策略
按用户请求顺序:用户请求 → HTTP 缓存 → CDN 缓存 → 代理服务器缓存 → 进程内缓存 → 分布式缓存 → 数据库
  • HTTP 缓存

    • 主要缓存静态数据
    • 包括强制缓存和对比缓存
  • CDN 缓存

    • 主要缓存静态数据
    • 可以结合HTTP缓存使用
  • 负载均衡缓存

    • 缓存相对稳定资源,需要服务协助工作
  • 进程内缓存

    • 效率高,但容量有限制,有两个方案可以应对缓存同步的问题
  • 分布式缓存

    • 缓存容量大,能力强
    • 注重缓存算法和注意缓存风险

缓存策略详解

HTTP 缓存
CDN 缓存
负载均衡缓存
进程内缓存
分布式缓存

缓存

常见到web缓存:

  • 数据库缓存
  • 服务器(代理)缓存
  • DNS缓存
  • 浏览器缓存

浏览器(http)缓存

HTTP 缓存(或 Web 缓存)是用于临时存储(缓存)Web文档(如 HTML 页面和图像),以减少服务器延迟的一种信息技术。HTTP 缓存系统会保存下通过这套系统的文档的副本;如果满足某些条件,则可以由缓存满足后续请求。HTTP 缓存系统既可以指设备,也可以指计算机程序。

http缓存分类:

    1. 按存储位置分类
    • disk cache
    • memory cache
    • service worker
    1. 按缓存失效到策略分类:
    • 强缓存, 控制字段包括: Cache-Control, Expires
    • 协商缓存, 控制协商缓存的字段包括: Last-Modified / If-Modified-Since 和 Etag / If-None-Match
十、HTTP 缓存——HTTP 缓存与HttpClient客户端缓存 在日常开发中,浏览器缓存是一个非常常见但又容易被忽视的优化手段。许多开发者在面对浏览器缓存相关问题时可能会感到困惑,因此本章内容专门用来解答这些常见问题,并帮助你更好地理解如何在 Java 应用中控制浏览器缓存。浏览器缓存是指在用户使用浏览器访问网站页面或 HTTP 服务时,根据服务器端返回的缓存控制响应头,将响应内容缓存到本地浏览器。这样,下次访问相同资源时,浏览器可以直接使用缓存内容,或者仅与服务器验证内容是否过期,从而减少网络传输的数据量,提升网站性能。public。 阅读详情

相关推荐

HTTP 缓存

1.需要服务端参与判断是否继续使用缓存,当客户端第一次请求数据时,服务端会将缓存标识(Last-Modified/If-Modified-Since 与ETag/If-None-Match)与数据一起返回给客户端,客户端将两者都备份到缓存中 ,再次请求数据时,客户端将上次备份的缓存标识发送给服务端,服务端根据缓存标识进行判断,如果返回HTTP状态码 304(Not Modified ,请求的资源自上次请求以来没有被修改),则表示客户端可以继续使用缓存。若资源已修改,则返回200状态码和新的资源内容。

编程语言开发、框架原理、编程思想、最佳实践技巧经验分享。致力于各种编程技术的技巧经验干货分享,讲解开发避坑技巧,追踪开发前沿技术,实战展开解决难题。 程序员小迷助您在编程路上越走越好! 1233

HTTP缓存介绍及在spring boot中设置HTTP缓存

介绍 在工作之余阅读缓存相关的书籍时,看到了http缓存相关的知识,HTTP 缓存机制是一个 web 性能优化的重要手段,无论是做前端还是做web后台,都可能会用得到它,应该是知识体系库中的一个基础环节,以前这一块学的不是很扎实,现在巩固巩固。 HTTP缓存可以说是浏览器缓存的其中一种,浏览器缓存也包含很多内容: HTTP 缓存、indexDB、cookie、localstorage 等等。这里我...

Hello World ^—^ 1万+

ESP32-S3驱动PCA9685模块:I2C扩展16路舵机控制实战指南

本文提供了ESP32-S3通过I2C总线驱动PCA9685模块扩展16路PWM输出的完整实战指南。详细解析了PCA9685模块原理、硬件连接、I2C地址配置,并给出了核心驱动代码与角度控制函数,帮助开发者解决微控制器PWM引脚不足的问题,轻松实现多路舵机控制。

weixin_32005771的博客 514

HTTP系列之HTTP缓存 —— 强缓存和协商缓存

如果没有命中强缓存,浏览器会发送请求到服务器,该请求会携带第一次请求返回的有关缓存的header字段信息(Last-Modified / IF-Modified-Since、Etag / IF-None-Match),由服务器根据请求中的相关header信息来对比结果是否命中协商缓存,若命中,则服务器返回新的响应header信息更新缓存中的对应header信息,但是并不返回资源内容,它会告知浏览器可以直接从缓存获取;否则返回最新的资源内容。这个时间代表着这个资源的失效时间,在此时间之前,即命中缓存。

cherry__yu的博客 2601

脑机接口(BCI)从原理到开发实战 10|脑控外设:用脑电波控制机械臂/游戏

摘要: 脑机接口(BCI)的“最后一公里”是将分类结果转化为实际动作的关键环节。本文介绍如何通过指令映射、硬件通信和执行反馈实现脑控外设,包括离散/连续控制策略、防抖处理及串口/蓝牙通信方法。通过两个实战案例(运动想象控制机械臂抓取、P300/SSVEP控制游戏)和完整项目(OpenBCI控制小车),演示了从分类标签到设备动作的完整流程,重点涵盖指令生成算法(多数投票)、Python与Arduino的串口通信集成,为BCI系统落地提供实用解决方案。(149字)

小明的博客 763

51单片机STC8G1K08驱动ws2812记录

使用51单片机控制17个2812灯,这里选择STC8芯片,最大频率可以达到35M,参考网上的各种文章案例,使用定时器做的时候实测做不到规格书要求的245-345ns,STC8G1K08不带PWM,所以只能使用nop来做,好在单片机在这里只有做编程灯的功能,省略测试过程,下面是程序,使用的是24MHz内部晶振 //设置一个灯珠 void SendOnePix(unsigned char *ptr) { unsigned char i,j; unsigned char temp; fo...

的博客 7318

Http缓存、本地缓存策略

强缓存、协商缓存、策略缓存,浏览器本地数据存储:cookie、localstorage、sessionstorage、indexedDB

qq_48018255的博客 1390

离散数学 --- 图论基础 --- 图的同构,通路与回路,可达性与最短通路

同一个图(这里的图是抽象的数学定义)可以有不同的图形表示方法1.重数:两点之间的平行边的个数1.得到 n!的过程,一个图中的一个结点在另一个图中对应的结点有n种可能(黄框中定义的图来讨论),这个对应好后下一个结点有 n - 1 种可能,再下一个有n-2种,直到最后一个为1,所有可能的结果就等于 n * (n - 1) *(n - 2)*....*1 = n!2.虽然说找对应结点很困难,但不是没有规律可循的。比如1.两个相互对应的结点的度数要相同;

qq_51947882的博客 7439

HTTP缓存-http强制缓存与协商缓存

http缓存介绍 缓存的原理:在首次请求后保存一份请求资源的响应副本,当用户再次发起相同请求后,如果判断缓存命中则拦截请求,将之前存储的响应副本返回给用户,从而避免重新向服务器发 起资源请求。 缓存的技术种类:代理缓存、浏览器缓存、网关缓存、负载均衡器及内容分发网络等,大致分为两类:共享缓存和私有缓存。 共享缓存指的是缓存内容可被多个用户使用,如公司内部架设的Web代理; 私有缓存指的是只能单独被用户使用的缓存,如浏览器缓存。 HTTP 缓存可细分为强制缓存与协商缓存。 强制缓存:不用判断缓存是否过期

莫循的AI编程博客 2589

“详规一张图”——上海土地利用数据

本文围绕城市规划与土地管理中空间数据的重要性,介绍了基于地理信息系统(GIS)技术对上海市用地数据进行获取与处理的具体方法。文章以上海市为例,详细阐述了如何通过构建以10米为间隔的网格点覆盖全市范围,并采用GET请求方式从“上海用地规划官网:详细规划‘一张图’公众版”平台获取地块信息的过程。通过对API接口参数的设置,包括坐标系、几何类型和返回格式等,实现了对每个网格点对应地块的属性信息(如规划用地类型、容积率、地块编号等)及几何形状信息的提取。

weixin_45812624的博客 2196

Weka学习笔记01:初探Weka世界

下载、安装和启动Weka、Weka数据格式

howard2005的专栏 1468

HTTP缓存机制

当前后端通信时,会互发HTTP报文,HTTP报文由header、start line、body组成。(header)允许客户端和服务器通过 HTTP 请求(request)或者响应(response)传递附加信息。

mashirokayo的博客 973

AI agents在公司财务报表分析中的应用

在当今竞争激烈的商业环境中,公司财务报表分析对于企业的决策制定、风险评估、战略规划等方面起着至关重要的作用。传统的财务报表分析方法往往依赖于人工操作,存在效率低下、容易出错、难以处理海量数据等问题。而AI agents作为人工智能领域的重要成果,具有自动化、智能化、高效性等特点,能够为财务报表分析带来新的突破和变革。

SuperAGI2025 1608

HTTP缓存

HTTP缓存

obj_obj_baby的博客 2870

解析AI人工智能领域AI芯片的散热技术

当你用ChatGPT写代码、用AI生成高清图片时,背后的AI芯片可能正在“发高烧”——全球TOP500超算的平均功耗已突破10兆瓦,单颗GPU的峰值功耗超过700W(相当于3台家用空调同时运行)。本文将聚焦AI芯片的散热技术,覆盖从基础原理到前沿方案的全链条解析,帮助读者理解“散热为什么比算力更重要”。

AIGC应用创新大全的博客 934

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

HTTP缓存整理

HTTP 缓存是指浏览器/客户端在向服务器发送 HTTP 请求后,将请求与响应的数据缓存到本地。当下次请求相同的资源时,浏览器可以直接从本地读取缓存数据,而无需再次从服务器获取,从而提升性能并减少网络请求。强制缓存协商缓存强制缓存是由浏览器单方面决定是否使用本地缓存的一种机制。只要缓存未过期,就直接使用本地缓存,不向服务器发起请求。对比项Expires时间类型相对时间(以请求时间为起点)绝对时间(具体日期时间)灵活性支持多种参数,功能丰富只能设置过期时间兼容性HTTP/1.1 标准。

m0_74822957的博客 1618

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【http】缓存协议

本文将深入探讨HTTP缓存协议的基本原理、缓存策略以及来自服务器和客户端的缓存指令。我们将详细解析缓存标志和相关头部字段,以帮助开发人员更好地理解和应用HTTP缓存机制。

俊刚的博客 1560

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

http缓存详解,http缓存推荐方案

前言 通过本文,你将了解到http缓存机制是怎样的,no-cache到底有没有缓存,地址栏回车,F5,ctrl+F5的区别,以及当下较为推荐的缓存方案等。 自从和前端组的同事一起整了个前端扫盲计划,想着给他们讲点什么,花了一周时间整理了http缓存的知识,花了一个多小时也算帮同事们重新理了理这玩意。本文借用了部分优秀文章的思路,这里就当一个整理分享了。 那么我们开始~ 说明 阅读前提:http缓存主要针如css,js,图片等更新频率不大的静态文件。 首先得先明确这个概念,不然以下的概念以及例子,

学习笔记 1330

http 缓存

HTTP缓存是一种重要的性能优化技术,它通过存储和重用之前获取的资源来减少网络流量和加快页面加载速度。

坚定目标,超越自我 1429

对HTTP缓存的认识

http缓存是一种保存资源副本并在下一次请求时直接使用该副本的技术。也就是说,当http缓存发现请求的资源已经被存储,他会拦截请求,返回该资源的副本,而不会去源服务器重新下载。在HTTP Caching标准中,有两种不同类型的缓存:私有缓存和共享缓存。:绑定到特定客户端的缓存—通常是浏览器缓存。由于存储的响应不与其他用户共享,因此私有缓存可以存储该用户的个性化响应。注意:如果响应具有Authorization标头,则不能将其存储在私有缓存。

qq_62833247的博客 737
上一篇: JavaScript引擎
下一篇: web 缓存
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值