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

关于Nginx缓存

Nginx缓存

一般情况下系统用到的缓存有三种

  • 服务端缓存: 缓存存在后端服务器,如redis
  • 代理缓存: 缓存存储在代理服务器或中间件,内容从后端服务器获取,保存在本地
  • 客户端缓存: 缓存在浏览器什么时候会出现304? 服务器响应中包含有ETaglast-modified,浏览器下次去请求时会发送这两个标签,直接返回304 Not Modified来告诉浏览器该资源没有修改,不需要从服务器获取最新的,浏览器就会直接使用本地缓存

Nginx使用的缓存属于代理缓存

cache配置

Nginx通过proxy_cache来实现缓存。Buffer(缓冲)主要用于传输效率不同步或者优先级不相同的设备之间传输数据,通过对一方数据进行临时存放,在统一发送的方式传递给另一方,以降低进程间的等待时间;Cache(缓存)主要用于将硬盘上已有的数据在内存中建立缓存数据,提高数据的访问效率。

而proxy_cache只有在Proxy Buffer机制开启的情况下Proxy Cache的配置才会发挥作用。

相关配置

  • proxy_zone: zone | off 默认是off,即关闭proxy_cache功能,zone为用于存放缓存的内存区域名称,可以在http/server、location块内使用

  • proxy_cache_path: path [levels=levels] keys_zone-name:size [inactive=time] [max_size=size] 只能在http块内使用

    • path:设置缓存数据存放的路径
    • levels:设置目录层级,如levels=1:2,表示有两个子目录
    • keys_zone:设置内存zone的名称和大小,如keys_zone=my:10m
    • inactive:设置缓存多长时间失效,当磁盘上的缓存数据在该时间段内没有被访问过,就会失效,数据将被删除,默认10s
    • max_size:设置硬盘中最多缓存多少数据,数据超出,则删除最少访问的数据
  • proxy_cache_methods: GET HEAD POST 设置缓存哪些方法

  • proxy_cache_min_uses: 设置缓存的最小使用次数

  • proxy_cache_valid: 对不同的状态码缓存不同的时间

  • proxy_cache_key: 设置缓存的key值

示例

http {proxy_cache_path    /var/www/cache #缓存地址levels=1:2 #目录分级keys_zone=test_cache:10m #开启的keys空间名字:空间大小(1m可以存放8000个key)max_size=10g #目录最大大小(超过时,不常用的将被删除)inactive=60m #60分钟内没有被访问的缓存将清理use_temp_path=off; #是否开启存放临时文件目录,关闭默认存储在缓存地址server {# 使用缓存location / {proxy_cache test_cache;    #开启缓存对应的名称,在keys_zone命名好proxy_cache_valid 200 304 12h;    #状态码为200 304的缓存12小时proxy_cache_valid any 10m;    #其他状态缓存10分钟proxy_cache_key $host$uri$is_args$args;    #设置key值add_header Nginx-Cache "$upstream_cache_status";}#不使用缓存if ($request_uri ~ ^/(login|register) ) {    #当请求地址有login或register时set $nocache = 1;    #设置一个自定义变量为true}location / {proxy_no_cache $nocache $arg_nocache $arg_comment;proxy_no_cache $http_pragma $http_authoriztion;}}
}

expires配置

location ~ .*.(jpg|jpeg|gif|png)$ {# 设置图片缓存过期时间expires 1d;
} # 匹配静态目录
location ~^ /(|css|js) / {expires 2h;
}

响应会返回给浏览器Expires属性,展示的是过期时间,之后再次请求该资源时,如果没有超过响应返回的Expires时,则不需要向服务器访问,直接从缓存中获取

静态资源缓存

# 缓存zone levels表示缓存层级以及目录位数 keys_zone表示缓存内存大小 inactive有效期 max_size所占用的最大磁盘大小
proxy_cache_path /data/nginx/cache_ad levels=1:2 keys_zone=cache_cache_ad:100m inactive=7d max_size=200m;server {location / {# 缓存zoneproxy_cache cache_ad;# 缓存key  进行md5proxy_cache_key $host$uri$is_args$args;# 什么情况下进行缓存存储proxy_cache_valid 200 304 12h;}
}
http://www.lryc.cn/news/205304.html

相关文章:

  • 为什么Open3D可视化TensorFlow张量速度超慢
  • 使用element-UI Cascader组件,实现第一级单选选,第二级,第三级,子级可以多选
  • 防止消息丢失与消息重复——Kafka可靠性分析及优化实践
  • 【Linux】Linux中Crontab(定时任务)命令详解及使用教程
  • 计算机毕设 flink大数据淘宝用户行为数据实时分析与可视化
  • 8.2 矢量图层点要素单一符号使用一
  • SQL企业微信群机器人消息推送
  • vscode远程连接ubuntu
  • Positive Technologies 在迪拜宣布与地区网络安全解决方案提供商开展合作
  • Pyside6 QTextEdit
  • Hadoop核心机制详细解析
  • Chromium源码由浅入深(一)
  • Spring Authorization Server 1.1 扩展 OAuth2 密码模式与 Spring Cloud Gateway 整合实战
  • UE4 UltraDynamicSky 天气与水体交互
  • Liunx 实时调度策略 SCHED_RR SCHED_FIFO 区别 适用情况
  • mac上使用虚拟机vm, 里面的镜像挂起会占用电脑的内存吗, 挂起和关机的区别是什么, 会影响正常电脑的内存和硬盘使用吗
  • AIGC时代 浪潮信息积极推动存储产品创新
  • 【PG】PostgreSQL字符集
  • 力扣:137. 只出现一次的数字 II(Python3)
  • orb-slam3编译手册(Ubuntu20.04)
  • 升级 Xcode 15模拟器 iOS 17.0 Simulator(21A328) 下载失败
  • PHP 函数、PHP 简单后门
  • 前端实现菜单按钮级权限
  • STM32:TTL串口调试
  • 【Jenkins 安装】
  • JVM——GC垃圾回收器
  • 【三维重建-PatchMatchNet复现笔记】
  • CSS - 常用属性和布局方式
  • 数据结构与算法之矩阵: Leetcode 134. 螺旋矩阵 (Typescript版)
  • LVS+keepalived高可用负载均衡集群