web缓存之nginx缓存
一、nginx缓存知识
网络缓存位于客户端和 "源服务器 "之间,保存着所有可见内容的副本。当客户端请求缓存中存储的内容时,它可以直接从缓存中检索内容,而无需与服务器通信。这样,网络缓存就 "接近 "了客户端,提高了响应性能,并更有效地利用了应用服务器,使其不必为每个请求生成页面。
在浏览器和应用服务器之间有多种 "潜在 "缓存,包括客户端浏览器缓存、中间缓存、内容交付网络(CDN)、负载均衡和服务器上的反向代理。缓存,即使只是在反向代理和负载平衡的层面上,对于提高性能也是非常有用的。
举个例子来说明,去年我为一个加载缓慢的网站进行了性能优化。我注意到的第一件事是,主页的生成时间几乎长达一秒或更长。经过一番调试,我发现加载速度慢的原因是网页被标记为非缓存,这意味着每次请求都会动态生成。这其实没有必要,因为网页本身不需要经常更改,也不需要个性化。为了验证我的结论,我将页面标记为每五秒钟缓存一次。第一个字节到达的时间缩短到几毫秒,页面加载速度明显加快。
除了大型内容交付网络(CDN),缓存还能提高负载平衡器、反向代理和应用服务器前端网络服务的性能。从上面的例子中可以看出,缓存内容可以更有效地利用应用服务器,因为页面生成过程无需每次重复。此外,网络缓存还可用于提高网站的可靠性。如果服务器宕机或繁忙,可以对 NGINX 进行设置,将缓存内容发送给用户,而不是向用户返回错误信息。这就意味着,如果应用服务器或数据库出现故障,网站的部分或全部功能仍能保持。
二、设置nginx缓存
nginx源站点服务器设置


缓存服务器设置
proxy_cache_path /data/nginx/cache levels=1 keys_zone=my_cache:10m max_size=10g inactive=3m use_temp_path=off;●path:强制参数,指定缓存文件的存放路径。
●levels:定义了缓存目录的层级。每层可以用1(最多16种选择,0-f)或2(最多256种选择,00-ff)表示,中间用 : 分隔。
proxy_cache_path /data/nginx/cache; 代表所有缓存只有一个目录,比如/data/nginx/cache/d7b6e5978e3f042f52e875005925e51b
proxy_cache_path /data/nginx/cache levels=1:2; 代表缓存是二层目录(有16*256=4096个目录),比如/data/nginx/cache/b/51/d7b6e5978e3f042f52e875005925e51b
●keys_zone:强制参数,定义共享内存区的名称和大小,该共享内存用于保存缓存项目的元数据(所有活动的key和缓存数据相关的信息),这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key。
●inactive:删除指定时间内未被访问的缓存文件,默认10分钟。
●max_size:设置了缓存存储的上限,如果不指定,最大会用掉所有磁盘空间。
●use_temp_path:直接把临时文件放在缓存目录中。


location / {root /usr/share/nginx/html;index index.html index.htm;proxy_cache my_cache; #指定用于页面缓存的共享内存,zone名称由proxy_cache_path指令定义proxy_cache_valid 200 3m; #为不同的响应状态码设置不同的缓存时间,此为缓存状态码为200的请求,缓存时长为3分钟proxy_cache_key $request_uri; #指定缓存文件的key为请求的URIadd_header Nginx-Cache-Status $upstream_cache_status; #把缓存状态设置为头部信息,响应给客户端proxy_pass http://webservers; #设置代理转发的后端服务器的协议和地址}

测试



三、补充知识
CDN 内容分发网络
在最接近用户的网络“边缘”增加一层CDN缓存代理服务器,将源站点的内容发布CDN节点,可以使用户就近取得所需的内容,提高用户访问网站的响应速度。
CDN工作原理:将源站点(Web应用服务器)的静态网页资源缓存到CDN节点上,用户请求资源时,通过与DNS的配合,找到最靠近用户的一台CDN缓存服务器,然后把资源数据快速地分发给用户,而不需要每个用户的请求都从源站点获取,从而避免网络拥塞、缓解源站点的压力,保证用户访问资源的速度和体验。
CDN的内容是如何获取的?
1)对于热点资源,定时做缓存预热
2)如果CDN节点没有,会从上游服务器或源站点获取资源,并同步到CDN节点的缓存中
相关文章:
web缓存之nginx缓存
一、nginx缓存知识 网络缓存位于客户端和 "源服务器 "之间,保存着所有可见内容的副本。当客户端请求缓存中存储的内容时,它可以直接从缓存中检索内容,而无需与服务器通信。这样,网络缓存就 "接近 "了客户端&a…...
【用法总结】无障碍AccessibilityService
一、背景 本文仅用于做学习总结,转换成自己的理解,方便需要时快速查阅,深入研究可以去官网了解更多:官网链接点这里 之前对接AI语音功能时,发现有些按钮(或文本)在我没有主动注册唤醒词场景…...
AI绘画风格化实战
在社交软件和短视频平台上,我们时常能看到各种特色鲜明的视觉效果,比如卡通化的图片和中国风的视频剪辑。这些有趣的风格化效果其实都是图像风格化技术的应用成果。 风格化效果举例 MidLibrary 这个网站提供了不同的图像风格,每一种都带有鲜…...
008定点小数、奇偶校验码
...
一、二进制方式 安装部署K8S
目录 一、操作系统初始化 1、关闭防火墙 2、关闭 SELinu 3、 关闭 swap 4、添加hosts 5、同步系统时间 二、集群搭建 —— 使用外部Etcd集群 1、自签证书 2、自签 Etcd SSL 证书 ① 创建 CA 配置文件:ca-config.json ② 创建 CA 证书签名请求文件ÿ…...
【simple-admin】FMS模块如何快速接入阿里云oss 腾讯云cos 服务 实现快速上传文件功能落地
让我们一起支持群主维护simple-admin 社群吧!!! 不能加入星球的朋友记得来点个Star!! https://github.com/suyuan32/simple-admin-core 一、前提准备 1、goctls版本 goctls官方git:https://github.com/suyuan32/goctls 确保 goctls是最新版本 v1.6.19 goctls -v goct…...
数据结构.线性表(2)
一、模板 例子: a: b: 二、基本操作的实现 (1)初始化 (2)销毁和清空 (3)求长度和判断是否为空 (4)取值 (5)查找 (6)插入 &…...
【计算机网络】TCP原理 | 可靠性机制分析(三)
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程、计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 目…...
【昕宝爸爸小模块】线程的几种状态,状态之间怎样流转
➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你👍点赞、🗂️收藏、加❤️关注哦。 本文章CSDN首发,欢迎转载,要注明出处哦! 先感谢优秀的你能认真的看完本文&…...
ChatGPT网站小蜜蜂AI更新了
ChatGPT网站小蜜蜂AI更新了 前阶段郭震兄弟刚开发小蜜蜂AI网站的的时候,写了一篇关于ChatGPT的网站小蜜蜂AI的博文[https://blog.csdn.net/weixin_41905135/article/details/135297581?spm1001.2014.3001.5501]。今天听说小蜜蜂网站又增加了新的功能——在线生成思…...
瑞_Java开发手册_(二)异常日志
文章目录 异常日志的意义(一) 错误码(二) 异常处理(三) 日志规约附:错误码列表 🙊前言:本文章为瑞_系列专栏之《Java开发手册》的异常日志篇,本篇章主要介绍异常日志的错误码、异常处理、日志规约。由于博主是从阿里的《Java开发手…...
Elasticsearch:Search tutorial - 使用 Python 进行搜索 (四)
在本节中,你将了解另一种机器学习搜索方法,该方法利用 Elastic Learned Sparse EncodeR 模型或 ELSER,这是一种由 Elastic 训练来执行语义搜索的自然语言处理模型。这是继之前的文章 “Elasticsearch:Search tutorial - 使用 Pyth…...
Python之Matplotlib绘图调节清晰度
Python之Matplotlib绘图调节清晰度 文章目录 Python之Matplotlib绘图调节清晰度引言解决方案dpi是什么?效果展示总结 引言 使用python中的matplotlib.pyplot绘图的时候,如果将图片显示出来,或者另存为图片,常常会出现清晰度不够的…...
pygame.error: video system not initialized
错误处理方式: pygame.init() 增加此行...
java面试题2024
前言 准备换工作了,给自己定个目标,每天至少整理出一道面试题。题型会比较随机,感觉这样更容易随机到面试官要问的东西。整理时我会把我认为正确的回答写出来,比较复杂的也尽量把原理贴出来,争取做到无论为了应付面试&…...
配置git服务器
第一步: jdk环境配置 (1)搜索【高级系统设置】,选择【高级】选项卡,点【环境变量】 (2)在【系统变量】里面,点击【新建】 (3)添加JAVA_HOME环境变量JAVA_HO…...
vue3环境下,三方组件中使用echarts,无法显示问题
问题描述: vue3中,使用了三方组件primevue的侧边栏Sidebar,在其中注册echarts dom节点,无法显示,提示dom不存在 问题分析: 使用原生div,通过document.getElementById(),将echarts…...
FAST OS DOCKER 可视化Docker管理工具
介绍 FAST OS DOCKER 界面直观、简洁,非常适合新手使用,方便大家轻松上手 docker部署运行各类有趣的容器应用,同时 FAST OS DOCKER 为防止服务器负载过高,进行了底层性能优化;其以服务器安全为基础,对其进…...
MOJO基础语法
文章目录 打印变量及方法声明结构体python集成 打印 print("Hello Mojo!")变量及方法声明 变量: 使用’ var ‘创建一个可变的值,或者用’ let 创建一个不可变的值。 方法: 方法可以使用python中的def 方法声明,也引…...
java基础之IO流之字符流
字符流 传输char和String类型的数据 输入流 抽象父类:Reader 节点流:FileReader 常用方法 int read():读取一个字符,读取到达末尾,返回-1 package com.by.test2; import java.io.FileNotFoundException; import…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
