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

Nginx 缓存集成、清除、设置不缓存资源

文章目录

  • 前言
    • 1. web缓存服务
      • 1.1 原理
      • 1.2 指令
        • 1.2.1 proxy_cache_path
        • 1.2.2 proxy_cache
        • 1.2.3 proxy_cache_key
        • 1.2.4 proxy_cache_valid
        • 1.2.5 proxy_cache_min_uses
        • 1.2.6 proxy_cache_methods
    • 2. 缓存案例
    • 3. 缓存的清除
      • 3.1 删除对应的缓存目录
      • 3.2 使用第三方扩展模块ngx_cache_purge,并使用proxy_cache_purge指令
    • 4. 设置资源不缓存
      • 4.1 proxy_no_cache
      • 4.2 proxy_cache_bypass
      • 4.3 设置不缓存资源的配置方案

前言

  使用缓存的优点在于减少数据传输,节省网络流量,加快响应速度;减轻服务器压力;提供服务端的高可用性;缺点在于数据的不一致问题;增加成本
  Nginx作为Web缓存服务器,介于客户端和应用服务器之间,当用户通过浏览器访问一
个URL时,web缓存服务器会去应用服务器获取要展示给用户的内容,将内容缓存到自己的服务器上,当下一次请求到来时,如果访问的是同一个URL,web缓存服务器就会直接将之前缓存的内容返回给客户端


1. web缓存服务

1.1 原理

  Nginx的web缓存服务主要是使用ngx_http_proxy_module模块,其基于Proxy Store来实现,其原理是把URL及相关组合当做Key,在使用MD5算法对Key进行哈希,得到硬盘上对应的哈希目录路径,从而将缓存内容保存在该目录中。它可以支持任意URL连接,同时也支持404/301/302这样的非200状态码。Nginx即可以支持对指定URL或者状态码设置过期时间,也可以使用purge命令来手动清除指定URL的缓存

1.2 指令

1.2.1 proxy_cache_path

  语法:

proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time][max_size=size];

path:缓存路径地址
levels: 指定该缓存空间对应的目录,最多可以设置3层,每层取值为1|2(MD5加密后的密文从后往前取值1到2个字符)
keys_zone:用来为这个缓存区设置名称和指定大小
inactive:指定缓存的数据多次时间未被访问就将被删除
max_size:设置最大缓存空间,如果缓存空间存满,默认会覆盖缓存时间最长的资源
  实例:

http {
proxy_cache_path /usr/local/proxy_cache keys_zone=cz:200m levels=1:2:1 inactive=1d max_size=20g;
}
1.2.2 proxy_cache

开启或关闭代理缓存,如果是开启则自定使用哪个缓存区来进行缓存

1.2.3 proxy_cache_key

设置web缓存的key值,Nginx会根据key值MD5哈希存缓存

1.2.4 proxy_cache_valid

对不同返回状态码的URL设置不同的缓存时间

1.2.5 proxy_cache_min_uses

设置资源被访问多少次后被缓存

1.2.6 proxy_cache_methods

设置缓存哪些HTTP方法


2. 缓存案例

在http块中设置

proxy_cache_path /usr/local/proxy_cache keys_zone=cz:200m levels=1:2:1 inactive=1d max_size=20g;
 server {listen   12305;location ~* .\.(png|jpg|css|html|js)$ {proxy_cache cz;proxy_cache_key $scheme$proxy_host$request_uri;proxy_cache_min_uses 1;proxy_cache_valid 200 1d;proxy_cache_valid any 1m;add_header nginx-cache "$upstream_cache_status";proxy_pass http://172.18.25.50:12306;}}server {listen   12306;location ^~ /bdosp {alias  /mnt/disk1/home/ZLQ_YL/myUI/bdops_ui/bdopsDist/bdosp;index  index.html index.htm;}}

3. 缓存的清除

3.1 删除对应的缓存目录

rm -rf /usr/local/proxy_cache

3.2 使用第三方扩展模块ngx_cache_purge,并使用proxy_cache_purge指令


4. 设置资源不缓存

4.1 proxy_no_cache

  定义不将数据进行缓存的条件
示例:

proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;

4.2 proxy_cache_bypass

  设置不从缓存中获取数据的条件
示例:

proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;

$cookie_nocache指当前请求的cookie中键的名称为nocache对应的值
$arg_nocache$arg_comment指的是当前请求的参数中属性名为nocache和comment对应的属性值
至少有一个不为空且不等于0,则条件满足成立

4.3 设置不缓存资源的配置方案

server{
listen 8080;
server_name localhost;
location / {if ($request_uri ~ /.*\.js$){set $nocache 1;}
proxy_no_cache $nocache $cookie_nocache $arg_nocache $arg_comment;
proxy_cache_bypass $nocache $cookie_nocache $arg_nocache $arg_comment;}}

http://www.lryc.cn/news/296722.html

相关文章:

  • C++面试宝典第27题:完全平方数之和
  • webrtc native api的几个要点
  • MinMaxScaler, StandardScaler数据预处理中常用的两种缩放方法,用于将数据标准化或归一化到特定的范围或分布
  • 【Web】vulhub Shiro-550反序列化漏洞复现学习笔记
  • 【论文精读】多模态情感分析 —— VLP-MABSA
  • SQL SELECT TOP, LIMIT, ROWNUM 子句
  • 金融信贷风控评分卡模型
  • 【java苍穹外卖项目实战二】苍穹外卖环境搭建
  • 在 Ubuntu 22.04 上安装 Django Web 框架的方法
  • JVM Java虚拟机入门指南
  • 【错误文档】This与Here的区别、主系表结构、如何合并两个句子、祈使句结构
  • Java入门之JavaSe(韩顺平p1-p?)
  • TCP的连接和断开详解
  • armbian ddns
  • MQTT 服务器(emqx)搭建及使用
  • 【flink状态管理(四)】MemoryStateBackend的实现
  • 前端架构: 脚手架在前端研发流程中的意义
  • Qt网络编程-QTcpServer的封装
  • 【MySQL】_JDBC编程
  • 微信小程序编译出现 project.config.json 文件内容错误
  • 一周学会Django5 Python Web开发-Django5创建项目(用命令方式)
  • DockerUI如何部署结合内网穿透实现公网环境管理本地docker容器
  • UML之在Markdown中使用Mermaid绘制类图
  • Spring Boot + 七牛OSS: 简化云存储集成
  • C++:二叉搜索树模拟实现(KV模型)
  • npm淘宝镜像源换新地址
  • 十大排序算法之线性时间非比较类排序
  • 容器基础:Docker 镜像如何保证部署的一致性?
  • 爪哇部落算法组2024新生赛热身赛题解
  • 1123. 铲雪车(欧拉回路)