【优化】Nginx 配置页面请求不走缓存 浏览器页面禁用缓存

艺帆风顺 发布于 2025-04-02 20 次阅读


前言

  使用缓存的优点在于减少数据传输,节省网络流量,加快响应速度;减轻服务器压力;提供服务端的高可用性;缺点在于数据的不一致问题;增加成本  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;
            版权声明:本文内容来自CSDN:我是Superman丶,遵循CC 4.0 BY-SA版权协议上原文接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。原文链接:https://blog.csdn.net/G971005287W/article/details/141866230如有涉及到侵权,请联系,将立即予以删除处理。在此特别鸣谢原作者的创作。此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。