nginx-nginx的缓存集成
缓存的概念
缓存就是数据交换的缓冲区,被称作cache,访用户想要获取数据时,就会先从缓存中去查询数据,如果缓存中有就会直接返回给用户,若果缓存中没有,则会发出请求从服务器中重新查询数据,将数据返回给用户的同时将数据放入缓存,下次用户就会直接从缓存中获取数据,节省资源访问的时间
缓存的使用场景
| 场景 | 作用 |
|---|---|
| OS磁盘缓存 | 减少磁盘机械操作 |
| 数据库缓存 | 减少文件系统的IO操作 |
| 应用程序缓存 | 减少对数据库的查询 |
| Web服务器缓存 | 减少对应用服务器请求次数 |
| 浏览器缓存 | 减少与后台的交互次数 |
缓存的优缺点
缓存的优点
提高性能
- 缓存技术通过存储经常访问的数据,显著减少了访问原始数据源(如数据库或远程服务器)的次数,从而加快了数据访问速度。
- 在Web应用中,缓存可以减少服务器响应时间,提高页面加载速度,提升用户体验。
减轻服务器负载
- 通过将频繁请求的数据存储在缓存中,服务器可以减少处理请求的数量,从而降低负载。
- 这有助于防止服务器过载,提高系统的稳定性和可靠性。
降低网络延迟
- 缓存技术可以减少网络数据传输量,从而降低网络延迟。
- 对于远程服务或分布式系统,缓存可以显著提高通信效率。
节省成本
- 通过提高性能和减轻服务器负载,缓存技术可以延长硬件的使用寿命,减少升级和维护成本。
- 在一些情况下,缓存还可以减少带宽费用,因为需要传输的数据量减少了。
缓存的缺点
数据一致性问题
- 缓存中的数据可能与原始数据源不一致,特别是在数据频繁更新或删除的情况下。
- 这可能导致用户看到过时或错误的信息。
缓存穿透
- 如果缓存中没有存储某个请求所需的数据,并且该数据在原始数据源中也不存在,那么每次请求都会绕过缓存直接访问原始数据源,导致缓存失效。
- 这可能发生在攻击者故意请求不存在的数据时,以绕过缓存并增加服务器的负载。
缓存雪崩
- 如果缓存中的大量数据同时失效,那么大量请求将直接访问原始数据源,导致服务器负载急剧增加。
- 这可能发生在缓存过期时间设置不当或缓存被恶意清空的情况下。
缓存预热
- 在缓存初始化或重建时,需要将数据从原始数据源加载到缓存中。
- 这可能需要一定的时间和资源,并且在这段时间内,系统的性能可能会受到影响。
复杂性增加
- 引入缓存技术后,系统的设计和维护变得更加复杂。
- 需要考虑缓存的更新策略、失效策略、数据一致性维护等问题。
资源消耗
- 缓存需要占用一定的存储空间,并且可能需要额外的计算资源来管理缓存。
- 在某些情况下,如果缓存配置不当,可能会导致资源浪费或性能下降。
nginx缓存指令
缓存指令是基于ngx_http_proxy_module模块相关指令集来进行完成的,遇到各种未知问题可以到官方文档进行查看
proxy_cache_path指令
该指令用于设置缓存的文件存放路径
| 语法 | proxy_cache_path path [levels=numbers] keys_zone=zone_name;zone_size[inactive=time][max_size=size]; |
|---|---|
| 默认值 | --- |
| 位置 | http |
path:缓存路径 如:/usr/local/proxy_cache
levels:指定该缓存空间对应的目录,最多可以设置为三层,每层取值为1|2 如:
levels=1:2 缓存空间有两层目录,第一层是1个字母,第二次是2个字母
举例说明:
monkey[key]通过MD5加密以后得值为 21eb8dc2babd4f6db0b3bef1923d7398
(可以使用md加密工具进行解析)
levels=1:2 最终的存储路径为:/usr/local/proxy_cache/8/39
levels=2:1:2 最终的存储路径为:/usr/local/proxy_cache/98/3/d7
levels=2:2:2 最终的存储路径为:/usr/local/proxy_cache/98/73/3d
keys_zone:用来为这个缓存区设置名称和大小,如
keys_zone=monkey:200m 缓存区的名称为monkey,大小为200M
inactive:指定缓存的数据多次时间未被访问就会被删除,如
inactive=1d 缓存数据在1天内没有被访问就会被删除
max_size:设置最大缓存空间,如果缓存空间存满,默认会覆盖缓存时间最长的资源,如
max_size=20g
配置实例:
proxy_cache_path /usr/local/proxy_cache levels=2:1 keys_zone=monkey:200m inactive=1d max_size=20g;
proxy_cache指令
该指令用来开启或者关闭代理缓存,如果是开启,则自定义使用哪个缓存区来进行缓存
| 语法 | proxy_cache zone_name;off; |
|---|---|
| 默认值 | proxy_cache off; |
| 位置 | http块,server块,location块 |
zone_name:指定使用缓存区的名称
proxy_cache_key指令
该指令用设置web缓存的key值,nginx会根据key值MD5进行哈希存储缓存
| 语法 | proxy_cache_key key; |
|---|---|
| 默认值 | proxy_cache_key $scheme$proxy_host$request_uri; |
| 位置 | http块,server块,location块 |
默认kye值为:请求的协议+代理主机+请求URI来作为key值
proxy_cache_valid指令
该指令用来对不同返回状态码的URL设置不同的缓存时间
| 语法 | |
|---|---|
proxy_cache_min_uses指令
proxy_cache_methods指令
nginx缓存案例
nginx清除缓存
nginx设置资源不缓存
指令介绍
条件变量介绍
案例实现
相关文章:
nginx-nginx的缓存集成
缓存的概念 缓存就是数据交换的缓冲区,被称作cache,访用户想要获取数据时,就会先从缓存中去查询数据,如果缓存中有就会直接返回给用户,若果缓存中没有,则会发出请求从服务器中重新查询数据,将数…...
【Vim Masterclass 笔记01】Section 1:Course Overview + Section 2:Vim Quickstart
文章目录 Section 1:Course Introduction 课程概述S01L01 Course Overview 课程简介课程概要 S01L02 Course Download 课程资源下载S01L03 What Vim Is and Why You Should Learn It 何为 Vim?学来干啥?1 何为 Vim2 为何学 Vim Section 2&…...
【数据库系列】Spring Boot 中使用 MyBatis 详细指南
一、基础介绍 1.1 MyBatis MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 P…...
Azure Airflow 中配置错误可能会使整个集群受到攻击
网络安全研究人员在 Microsoft 的 Azure 数据工厂 Apache Airflow 中发现了三个安全漏洞,如果成功利用这些漏洞,攻击者可能会获得执行各种隐蔽操作的能力,包括数据泄露和恶意软件部署。 “利用这些漏洞可能允许攻击者以影子管理员的身份获得…...
Python跨年烟花
目录 系列文章 写在前面 技术需求 完整代码 下载代码 代码分析 1. 程序初始化与显示设置 2. 烟花类 (Firework) 3. 粒子类 (Particle) 4. 痕迹类 (Trail) 5. 烟花更新与显示 6. 主函数 (fire) 7. 游戏循环 8. 总结 注意事项 写在后面 系列文章 序号直达链接爱…...
【代码】Python|Windows 批量尝试密码去打开加密的 Word 文档(docx和doc)
文章目录 前言完整代码Githubdocxdoc 代码解释1. msoffcrypto 方法(用于解密 .docx 文件)read_secret_word_file 函数密码生成与解密尝试try_decrypt_file 函数 2. comtypes 方法(用于解密 .doc 文件)read_secret_word_file 函数注…...
java开发中注解汇总
注解作用位置注意mybatis Data Getter Setter ToString EqualsAndHashCode AllArgsConstructor NoArgsConstructor Data 代替:无参构造,get,set,toString,hashCode,equals Getter Setter 可放在类和方法上&…...
C# 设计模式(结构型模式):外观模式
C# 设计模式(结构型模式):外观模式 (Facade Pattern) 在复杂系统中,往往会涉及到多个子系统、模块和类。这些子系统的接口和功能可能会让使用者感到困惑和复杂。在这种情况下,我们可以使用外观模式(Facade…...
PowerShell 常见问题解答
PowerShell 是微软开发的一种功能强大的命令行界面和脚本语言,广泛应用于系统管理和自动化任务。以下是一些使用 PowerShell 时常见的问题及其解决方法。 什么是 PowerShell? PowerShell 是基于 .NET 的命令行界面(CLI)和脚本语言…...
计算机网络 (15)宽带接入技术
前言 计算机网络宽带接入技术是指通过高速、大容量的通信信道或网络,实现用户与互联网或其他通信网络之间的高速连接。 一、宽带接入技术的定义与特点 定义:宽带接入技术是指能够传输大量数据的通信信道或网络,其传输速度通常较高,…...
前端Python应用指南(六)构建RESTful API:使用Flask和Django实现用户认证与授权
《写给前端的python应用指南》系列: (一)快速构建 Web 服务器 - Flask vs Node.js 对比(二)深入Flask:理解Flask的应用结构与模块化设计(三)Django vs Flask:哪种框架适…...
【Unity3D】基于UGUI——简易版 UI框架
https://github.com/AMikeW/BStandShaderResources/blob/master/milk_UIFramework.unitypackage UI框架支持如下功能: 1、层级控制 2、支持面板多次打开时,隐藏前一个打开的面板,当关闭面板时,能够恢复前一个打开面板状态 3、支…...
算法排序算法
文章目录 快速排序[leetcode 215数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/)分析题解快速排序 桶排序[leetcode 347 前K个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/)分析题解 快速排序 leetcode 215数组…...
第3章 总线
总线的定义 为多个部件 分时共享 公共信息传送线路。 系统之间、模块之间、芯片内部用来传递信息信号线集合。 共享 总线上可连接多个部件 各部件间相互交换信息 都可通过总线来。 分时 同一时刻 总线上只能传 一个部件信息。 采用标准总线的优点 简化系统软硬件设计 从硬件角度…...
手机实时提取SIM卡打电话的信令声音-双卡手机来电如何获取哪一个卡的来电
手机实时提取SIM卡打电话的信令声音 --双卡手机来电如何获取哪一个卡的来电 一、前言 前面的篇章《手机实时提取SIM卡打电话的信令声音-智能拨号器的双SIM卡切换方案》中,我们论述了局域网SIP坐席通过手机外呼出去时,手机中主副卡的呼叫调度策略。 但…...
共阳极LED的控制与短路问题解析
共阳极LED的控制与短路问题解析 在电子电路中,LED(发光二极管)是最常见的元件之一。LED的连接方式分为共阳极和共阴极,不同的连接方式决定了LED的控制逻辑。本文将重点讲解共阳极LED的工作原理,并解答“为什么给1不会…...
华为消费级QLC SSD来了
近日,有关消息显示,华为的消费级SSD产品线,eKitStor Xtreme 200E系列,在韩国一家在线零售商处首次公开销售,引起了业界的广泛关注。 尽管华为已经涉足服务器级别的SSD制造多年,但直到今年6月才正式推出面向…...
liunx下载gitlab
1.地址: https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 安装 postfix 并启动 yum install postfix systemctl start postfix systemctl enable postfix ssh服务启动 systemctl enable sshd systemctl start sshd开放 ssh 以及 http 服务,…...
深度学习模型预测值集中在某一个值
深度学习模型,训练过程中,经常遇到预测的结果集中在某个值,而且在学习的过程中会变,样例如下。 主要有如下解决方案 1、更换relu ->tanh 或者其他激活函数 2、更改随机种子,估计是没有初始化好,或者调…...
Sqoop的使用
每个人的生活都是一个世界,即使最平凡的人也要为他那个世界的存在而战斗。 ——《平凡的世界》 目录 一、sqoop简介 1.1 导入流程 1.2 导出流程 二、使用sqoop 2.1 sqoop的常用参数 2.2 连接参数列表 2.3 操作hive表参数 2.4 其它参数 三、sqoop应用 - 导入…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
