当前位置: 首页 > news >正文

反向代理-缓存篇

文章目录

  • 强缓存
    • 一、Expires(http1.0 规范)
    • 二、cache-control(http1.1 出现的 header 信息)
        • Cache-Control 的常用选项
        • Cache-Control 常用选项的选择
    • 三、弊端
  • 协商缓存
    • 一、ETag
    • 二、If-None-Match
    • 三、Last-modified
    • 四、If-Modified-Since
  • 浏览器的三种刷新方式
  • 静态资源部署策略-资源(一)
  • 静态资源部署策略-html(二)
  • 动态请求静态化处理
  • 架构改进-全页面静态化
  • 交易验证优化
  • 数据库行锁性能优化-版本一🥩
  • 数据库行锁性能优化-版本二🥩
  • 异步同步数据库
    • 存在的问题
  • 回查机制-库存操作流水
  • 库存数据库最终一致性保证
  • 库存售罄
  • 现有缺陷
  • 秒杀令牌原理
  • 队列泄洪原理

在这里插入图片描述

强缓存

一、Expires(http1.0 规范)

Expires 的值为一个绝对时间的 GMT 格式的时间字符串,例如 Mon,10 Jun 2015 21:31:24 GMT。若发送请求的时间在 expires 之前,则本地缓存有效;否则,将发送请求至服务器以获取资源。

二、cache-control(http1.1 出现的 header 信息)

通过 max-age 值进行判断,它是一个相对值。浏览器依据第一次的请求时间和 Cache-Control 设置的有效期,计算出资源过期时间。再将该过期时间与当前时间进行比较,若请求时间在过期时间之前,则能命中缓存,否则不行。Cache-Control 的设置由服务器完成,前端无需进行任何操作。

Cache-Control 的常用选项
选项含义
max-age=100缓存 100 秒后过期,资源缓存在本地。
no-cache不使用本地缓存,使用协商缓存。先与服务器确认返回的响应是否被更改,若之前的响应中存在 ETag,则请求时会与服务端验证。若资源未被更改,则可避免重新下载。
no-store所有内容都不会被缓存,既不使用强制缓存也不使用协商缓存。每次用户请求该资源,都会向服务器发送一个请求,服务器再返回资源。
public可以被所有的用户缓存,包括客户端和代理服务器。
private只能被客户端缓存,不允许 CDN 等中继缓存服务器对其缓存。
s-maxage覆盖 max-age,作用域与 max-age 一样,但只用于代理服务器中缓存。

在浏览器下一次请求同样的文件时,浏览器会检查 max-age 是否过期。若未过期,则直接从本地缓存中获取资源,不会向服务器再次发起请求;若过期,浏览器会像第一次一样向服务器发起请求。一旦使用强缓存且未过期,就不会再向服务器发起请求。

Cache-Control 常用选项的选择

相关文章:

反向代理-缓存篇

文章目录 强缓存一、Expires(http1.0 规范)二、cache-control(http1.1 出现的 header 信息)Cache-Control 的常用选项Cache-Control 常用选项的选择三、弊端协商缓存一、ETag二、If-None-Match三、Last-modified四、If-Modified-Since浏览器的三种刷新方式静态资源部署策略…...

【伪代码】数据结构-期末复习 线性表

目录 例1 矩阵相乘 线性表 2.1 线性表的类型定义 例2-1 求并集 LALA∪LB 例2-2 有序表归并 2. 2 线性表的顺序表示和实现 1.构造空表 2.插入 3.删除 4.定位 顺序表的优点: 顺序表的缺点: 例…...

JavaWeb学习、过滤器、ajax异步请求、json、jquery-api文档

一、过滤器: 按照过滤规则筛选出想要的资源。 为什么使用过滤器? 1. 很多地方都需要判断是否登录。如果我们在每个资源出进行判断,非常麻烦。我们可以使用过滤器在访问这些资源前进行判断。 (这样就不用在主界面,修改…...

深入探索 JVM:原理、机制与实战

一、JVM 概述 JVM(Java Virtual Machine)是 Java 程序运行的核心组件,它提供了一个独立于硬件和操作系统的执行环境,使得 Java 程序能够在不同平台上具有跨平台的特性。 JVM 主要由以下几部分组成: 类装载器&#xf…...

JavaWeb学习(3)(Servlet详细、Servlet的三种实现方式(面试)、Servlet的生命周期、传统web.xml配置Servlet(了解))

目录 一、Servlet详细。 (1)基本介绍。 (2)基本作用。 1、接收客户端请求数据。 2、处理请求。 3、完成响应结果。 二、Servlet的三种实现方式。 (1)实现javax.servlet.Servlet接口。 1、基本介绍。 2、代码…...

支付宝租赁小程序助力便捷生活新方式

内容概要 支付宝租赁小程序为现代人带来了许多惊喜,它不仅仅是一个简单的租赁平台,更是生活中不可或缺的好帮手。想象一下,无论你缺少什么,从工具到家居用品,只需轻轻一点,便能轻松找到需要的物品。这个小…...

Linux-ubuntu环境配置

一,安装VWware,里面导入镜像文件 这些都是文件夹里面有的,然后对着正点原子视频安装就行,虚拟机的破解码,去百度搜一个能用就行,中间遇见俩问题。①乌班图里面不能上网,②插入U盘后,…...

深入解析下oracle的number底层存储格式

oracle数据库中,number数据类型用来存储数值数据,它既可以存储负数数值,也可以存储正数数值。相对于其他类型数据,number格式的数据底层存储格式要复杂得多。今天我们就详细探究下oracle的number底层存储格式。 一、环境搭建 1.…...

nginx代理rabbitmq和配置 Nginx 代理达梦数据库

在 Nginx 中使用 stream 模块进行 TCP 代理时,可以将 TCP 或 UDP 流量转发到指定的后端服务器。你给出的配置是一个用于代理 RabbitMQ 的示例,具体是在 TCP 层上代理 5672 端口的流量。 只能在nginx.conf配置上代理 stream {# 定义 upstream&#xff0c…...

汉语唤醒词的模糊判断(Python)

汉语唤醒词的模糊判断【Python】 说明安装库代码Demo其他 说明 这是一个简单的汉语模糊唤醒词的判断器,汉语发音中前后舌以及声母韵母的区别,如果进行精准判断,很容易误判。需要一个模糊判断的逻辑! 安装库 pip install pypinyin代码Demo …...

Redis篇-2--原理篇1--I/O多路复用机制(5种I/O模型,I/O多路复用)

I/O多路复用机制: Redis 是通过I/O多路复用机制来管理大量客户端连接。这使得redis可以实现通过单线程来处理多个客户端连接的请求,避免了为每个客户端创建独立的线程,从而减少了上下文切换的开销,提高了系统的并发性和性能。 理解…...

Knowledge Graph Studio:让知识图谱构建更简单、更智能

一、前言 上周和研究院的同事讨论 2025 年大模型产品规划时,让我产生了一些疑惑和不解,因为从大家交流的规划方向来看,更多的还是集中在Prompt提示词工程(包括提示词的管理、测试、评估、调优)这一块规划的确实挺细&a…...

vue 中实现音视频播放进度条(可拖拽,满足常见开发需求)

由于开发需要,作者封装了一个音视频播放进度条的组件,支持 vue2 及 vue3 ,有需要的朋友后台私信作者获取组件源码哦(工作日每天都在线),下面是对该款组件的介绍。 组件默认样式👇(组…...

[免费]SpringBoot+Vue企业OA自动化办公管理系统【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue企业OA自动化办公管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue企业OA自动化办公管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 随着信息技术在管理上越来越深入…...

笔记:在WPF中BitmapSource都有哪些派生类,他们主要功能,使用方法,使用场景

一、目的:在WPF中BitmapSource都有哪些派生类,他们主要功能,使用方法,使用场景 BitmapSource 是 WPF 中图像处理的基类,提供了许多派生类来处理不同类型的图像源。以下是一些常见的 BitmapSource 派生类、它们的主要功…...

JAVA基础学习笔记_多线程

文章目录 多线程并发和并行多线程的实现方式Thread类实现Runnable接口方式实现callable接口和Future接口实现 常用的成员方法线程的生命周期线程的安全问题同步代码块同步方法lock锁死锁 生产者和消费者(等待唤醒机制)阻塞队列实现等待唤醒机制线程的6种状态线程池自定义线程池…...

什么是自动化办公

自动化办公是指使用技术工具或软件,通过预设流程或脚本,自动执行日常办公任务,从而提升效率、减少错误、节约时间的办公模式。它适用于需要重复性、规则明确的工作流程,让员工将精力集中在更具创造性和战略性的工作上。 自动化办公…...

数据库系统

数据库模式 3个阶段以及各自的产物: 1、需求分析(数据流图、数据字典、需求说明书); 2、概念结构设计(ER模型); 3、逻辑结构设计(关系模式)); 关…...

文件系统--底层架构(图文详解)

一、文件系统的底层存储与寻址 当我们谈到文件系统的底层结构时,最关键的问题是:文件的数据与元数据(属性)如何存储在磁盘上,以及系统是如何定位这些数据的?在谈及文件系统之前,我们要先对储存…...

【OCR】——端到端文字识别GOT-OCR2.0不香嘛?

代码:https://github.com/Ucas-HaoranWei/GOT-OCR2.0?tabreadme-ov-file 在线demo:https://huggingface.co/spaces/stepfun-ai/GOT_official_online_demo 0.前言 最早做ocr的时候,就在想如何能做一个端到端的模型,就不用先检测再…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

如何在网页里填写 PDF 表格?

有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据&#xff…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...