当前位置: 代码网 > 服务器>服务器>缓存 > Nginx 缓存集成、清除、设置不缓存资源

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

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

前言

  使用缓存的优点在于减少数据传输,节省网络流量,加快响应速度;减轻服务器压力;提供服务端的高可用性;缺点在于数据的不一致问题;增加成本
  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;
 }
 }

(0)

相关文章:

  • Nginx的HA高可用的搭建的实现

    1.什么是高可用高可用(high availability, ha)是一种系统设计策略,旨在确保服务或应用在面对硬件故障、软件缺陷或任何其他异常情况时,仍能持续稳定地运行。它通过实…

    2024年08月08日 服务器
  • Apache中mod_proxy模块的使用问题及解决方案

    Apache中mod_proxy模块的使用问题及解决方案

    nc中间件应用场景:配置了apache的情况,包括uap集群,配置https等场景下均适用;如果是单机(nc单结点情况不存在问题,则不用配置这项; was环境也... [阅读全文]
  • 【论文阅读】Cache locality is not enough

    需要大量的高速缓存访问无法利用现代CPU上可用的SIMD指令由此设计了算法PQ Fast Scan:将驻留在cache中的距离表转换成大小适合SIMD寄存器的small table…

    2024年08月03日 服务器
  • 行列视(RCV)的数据处理能力强吗?

    行列视(RCV)的数据处理能力强吗?

    而专业缓存技术则通过算法使缓存数据存入本地硬盘,保证了常用数据的高效读取,并防止了由于数据存放在关系数据库中导致的系统性能下降和维护量增大的问题。这样的性能表现... [阅读全文]
  • 大数据之Flink优化

    以计算每个 mid 出现的次数为例,keyby 之前,使用 flatMap 实现 LocalKeyby 功能//Checkpoint 时为了保证 Exactly Once,将 bu…

    2024年08月02日 服务器
  • 【图解大数据技术】Hive、HBase

    HBase是一个用于存储海量非结构化或半结构化数据的列示存储数据库,支持高性能写入,准实时查询。HBase底层基于HDFS实现了PB级别的海量数据存储。通过缓存和预写日志技术实现了…

    2024年08月02日 服务器

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com