iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >nginx缓存以及清除缓存的使用
  • 709
分享到

nginx缓存以及清除缓存的使用

2024-04-02 19:04:59 709人浏览 泡泡鱼
摘要

目录缓存清除缓存控制Nginx缓存缓存 缓存的基本思想是利用客户端访问的时间局限性,将客户端访问过的内容做一个副本,在一定时间内存放到本地,当改数据下次被访问时,不必连接到后端服务器

缓存

  • 缓存的基本思想是利用客户端访问的时间局限性,将客户端访问过的内容做一个副本,在一定时间内存放到本地,当改数据下次被访问时,不必连接到后端服务器反复去查询数据,而是由本地保存的副本响应数据。
  • 保存在本地的这些副本具有一个过期时间,超过该时间将会更新。判断一个副本数据是否为过期数据的办法有很多,可以使用保留时间来判断,也可以使用数据完整度来判断。
  • 许多WEB服务器还具有校验功能,就是当某些副本数据过期以后,先向后端服务器发送校验请求,后端服务器对这些数据进行校验,如果发现原数据和副本没有差别,则将过期副本重新置为可用副本。

缓存的好处

  • 减轻服务器负载
  • 提供网页响应效率
  • 降低网络阻塞,增强网络可扩展性

为什么使用缓存?

  • 服务器处理能力以及负载能力出现瓶颈,响应效率大大降低
  • 为了减少网络传输延迟,提升响应效率
  • 能够避免因为后端服务器出现异常以及网络故障,客户端请求数据副本能够及时响应

nginx的缓存机制

proxy模块指令

以上nginx配置结合使用:

Http {
  .
  .
  .
  proxy_cache_path /cache/nginx levels=1:2 keys_zone=imooc_cache:10m max_size=5g inactive=60m use_temp_path=off;

  .
  .
  .
  server {
    .
    .
    .
    location /api/ {
      proxy_cache imooc_cache;
      proxy_pass 127.0.0.1:81/api/;
      proxy_cache_valid 200 304 12h;
      proxy_cache_valid any 10m;
      proxy_cache_key $host$uri$is_args$args;
      include proxy_params;
    }
  }
}

proxy_params文件的配置如下:

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;

访问一次页面,并向 http://192.168.148.168:8000/api/ 发起一个接口数据请求,查看/cache/nginx目录下的缓存结果:

[root@localhost 02]# cat 9563faff155b9fcfbf3fb1b16c253021 
¿]n`ÿÿÿÿÿÿÿÿÿ´m`Džt> 
KEY: 192.168.148.170/api/index.PHP
HTTP/1.1 200 OK
Date: Wed, 07 Apr 2021 13:34:55 GMT
Server: Apache/2.4.46 (Unix) php/7.4.16
X-Powered-By: PHP/7.4.16
Content-Length: 31
Connection: close
Content-Type: text/html; charset=UTF-8

this is 192.168.148.170_php_new[root@localhost 02]# 

清除缓存

ngx_cache_purge是nginx的第三方模块,能够帮助我清除nginx中的缓存。

如果启动了缓存,没有安装这个模块(ngx_cache_purge),重启nginx会出现异常:

2021/04/18 10:15:36 [emerg] 12180#0: unknown directive “proxy_cache_purge” in /vhost/test_170.cc.conf:20

这个异常是在指示我们,找不到该指令的驱动,需要按照相关模块。

ngx_cache_purge只是nginx的第三方模块,并不是某个特殊的软件,所以我们需要对nginx重新进行编译,操作如下:

./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_gzip_static_module --with-http_stub_status_module --with-file-aio --with-http_realip_module --with-http_ssl_module --with-pcre=/home/pcre-8.44 --with-zlib=/home/zlib-1.2.11 --with-openssl=/home/openssl-1.1.1g --add-module=/home/ngx_cache_purge-2.3

make -j2

make install

配置nginx:

location ~ /clear_cache(.*) {
     allow   all;
     proxy_cache_purge imooc_cache $host$1$is_args$args;
}

缓存清除测试
访问:http://192.168.148.170:8000/clear_cache//api/index.php, 访问这个链接将会清除接口:http://192.168.148.170:8000//api/index.php 的缓存数据。

成功清除缓存返回结果如下

没有缓存返回结果如下

控制nginx缓存

proxy_no_cache

# set 指令为变量设置,proxy_no_cache参数中的值可以设置多个,但是多个值中,只要有一个是不为0的,就会通过缓存响应数据
server
{
    .
    .
    .
    location /api/ {
       set $a 0; #设置初始值
       if ( $request_uri ~ /api/noapi/(.*) ){
           set $a 1; #如果满足不缓存 设置为1
       }

       proxy_no_cache $a;//
       .
       .
       .
    }
    location ~ /clear_cache(.*) {
         allow   all;
         proxy_cache_purge imooc_cache $host$1$is_args$args;
    }
}

查看proxy_cache指令详解

到此这篇关于nginx缓存以及清除缓存的使用的文章就介绍到这了,更多相关nginx缓存及清除缓存内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: nginx缓存以及清除缓存的使用

本文链接: http://www.lsjlt.com/news/165085.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • nginx缓存以及清除缓存的使用
    目录缓存清除缓存控制nginx缓存缓存 缓存的基本思想是利用客户端访问的时间局限性,将客户端访问过的内容做一个副本,在一定时间内存放到本地,当改数据下次被访问时,不必连接到后端服务器...
    99+
    2024-04-02
  • 清除html缓存
    在现代的网页设计中,HTML文件往往被用作网页的主要结构骨架。除此之外,HTML文件还负责引入CSS和JavaScript等一系列文件,来赋予网页更加生动、炫目的外观。然而,由于HTML文件在浏览器中被缓存,有时候我们进行了网页修改之后,可...
    99+
    2023-05-15
  • 清除css缓存
    在网页开发中,CSS样式表扮演着非常重要的角色,它能够让网页具有更加美观的外观,并且提供更方便的用户体验。但是在开发中,有时候我们会遇到一个令人头疼的问题,那就是CSS缓存。这个问题可能会导致我们在开发中遇到一些奇怪的问题,比如改了代码但是...
    99+
    2023-05-15
  • golang 清除缓存
    一、前言在 golang 开发中,由于内存限制和数据频繁变化的需求,经常需要执行缓存操作。但是缓存是有一定危险性的,它可能会占用大量的内存资源,并且对于缓存数据的时效性和有效性的掌控也是具有挑战性的。因此,在适当的时候,清除不需要的缓存是必...
    99+
    2023-05-18
  • Android WebView清除缓存
    一般在使用完成之后在onDestroy方法中进行处理: @Overridepublic void onDestroy() { super.onDestroy(); if (webView != null) { Vi...
    99+
    2023-09-12
    android 缓存
  • PHP artisan 清除缓存
    本篇文章介绍了如何在 Laravel PHP 中使用 artisan 清除缓存。 PHP artisan 清除缓存 artisan 是PHP的 Laravel 框架中提供的一个命令行界面。 a...
    99+
    2024-02-27
  • 怎么用Shell脚本批量清除Nginx缓存
    这篇文章主要介绍“怎么用Shell脚本批量清除Nginx缓存”,在日常操作中,相信很多人在怎么用Shell脚本批量清除Nginx缓存问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Shell脚本批量清除N...
    99+
    2023-06-09
  • nginx 缓存使用及配置步骤
    目录前言Nginx的web缓存Nginx缓存设置相关指令配置实例实验演示其他配置参数说明缓存配置案例展示环境准备配置步骤Nginx设置资源不缓存案例展示proxy_cache_byp...
    99+
    2024-04-02
  • Javascript如何获取缓存和清除缓存API
    这篇文章给大家分享的是有关Javascript如何获取缓存和清除缓存API的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。JavaScript ServiceWorker API的...
    99+
    2024-04-02
  • html清除缓存的方法
    这篇文章给大家分享的是有关html清除缓存的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。html清除缓存的方法:1、在meta标签里使用“Cache-Control”属性,语法“CONTENT="...
    99+
    2023-06-14
  • 清除redis缓存的命令
    redis 提供了清除缓存数据的命令,包括:删除单个键:del、unlink清除整个数据库:flushdb、flushall 清除 Redis 缓存的命令 Redis 提供了多种命令来...
    99+
    2024-04-20
    redis
  • 怎么清除css缓存
    这篇文章主要介绍怎么清除css缓存,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,使网页更加美化。它也是一种定义样式结构...
    99+
    2023-06-15
  • thinkphp5.0如何清除缓存
    这篇文章主要介绍“thinkphp5.0如何清除缓存”,在日常操作中,相信很多人在thinkphp5.0如何清除缓存问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”thinkphp5.0如何清除缓存”的疑惑有所...
    99+
    2023-07-04
  • javascript如何清除缓存
    小编给大家分享一下javascript如何清除缓存,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!javascript清除缓存的方法:1、通过meta方法清理网站缓...
    99+
    2023-06-14
  • redis如何清除缓存
    小编给大家分享一下redis如何清除缓存,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linux中redis清除缓存的方法1、进...
    99+
    2024-04-02
  • 清除redis缓存数据
    常用的 redis 缓存清理方法包括:flushall:清除所有键值对。del:删除指定的键。unlink:异步删除指定的键。expire:设置键的过期时间,到期后自动删除。 清除 R...
    99+
    2024-04-19
    redis 网络问题 键值对
  • redis缓存怎么清除
    redis 清除缓存的方法如下:清除所有键:使用 flushall 命令清除所有键。清除特定模式下的键:使用 del 命令清除符合特定模式的键。清除过期键:使用 expire 命令为键设...
    99+
    2024-04-08
    redis
  • 如何清除laravel缓存
    这篇文章给大家分享的是有关如何清除laravel缓存的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。清除Laravel(终端)中的缓存登录运行laravel应用程序的系统并打开终端。然后导航到Laravel应用程序...
    99+
    2023-06-14
  • javascript清除缓存的方法
    本篇内容介绍了“javascript清除缓存的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!javascript清除缓存的方法:1、在h...
    99+
    2023-06-14
  • 什么是缓存?php怎么自动清除缓存?
    在PHP项目开发过程中,经常会出现一些缓存使用的情况,例如网站的缓存、数据库的缓存等等。缓存可以提高网站的响应速度,但是如果缓存不正确地使用,就会导致程序出现一些异常错误。为了解决这些问题,程序开发人员通常需要利用PHP的一些功能来自动清除...
    99+
    2023-05-14
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作