访问我的博客

前言

前文介绍了利用 nginx 的 nginx_ngx_cache_purge 模块来实现缓存功能,并设置了缓存时间为一天。

但是如果前端修改了页面,比如首页,由于 Nginx 缓存的存在,网站首页并不会立即生效,而是要等到缓存过期。这样明显不是我们想要的结果,所以需要进行手动使 Nginx 缓存失效。以下为操作详解。

基础环境

Nginx 配置文件拆分

在企业 Nginx 应用中,Nginx 配置文件应该根据域名不同来进行拆分,然后再 nginx.conf中进行include引入。这样的好处是便于管理配置文件,便于修改配置文件, 而 nginx.conf 文件中只保留 upstream 以及其他通用配置信息。

在 Nginx 的 conf 目录下创建文件夹 include, 用于保存拆分的配置文件。

mkdir include

拆分的规则可以如下:

  • 桌面版(WEB)的 Nginx 配置文件,可以命名为 nginx_web.conf
  • 手机版(WAP)的 Nginx 配置文件,可以命名为 nginx_wap.conf
  • 安卓的 Nginx 配置文件,可以命名为 nginx_apk.conf
  • 苹果的 Nginx 配置文件,可以命名为 nginx_ios.conf
  • 清除缓存的配置文件,可以命名为 purge.conf

/usr/local/nginx/conf/nginx.conf 中引入拆分的配置文件, 在配置文件中的 http 节点下进行引入

http{

  #......

  # 注意 purge.conf 必须要第一个引用!!!
include include/purge.conf;
# 引入其他配置文件
include include/nginx_web.conf;
#include include/nginx_wap.conf;
#include include/nginx_apk.conf;
#include include/nginx_ios.conf;
}

配置缓存清除

cd /usr/local/nginx/conf/include
vi purge.conf #purge.conf 文件内容为:
server {
listen 80;
server_name 192.168.200.129;# 此处我配置的是本机ip
charset utf8; location ~ /purge(/.*) {
allow all;# 访问此接口的白名单,all代表所有人都可以访问该路径
# tmpcache 为前文中 proxy_cache_path 里配置的 keys_zone 的值
# www.domain.com$1$is_args$args 表示缓存key的名称,清除某一域名下的缓存,可以指定参数
# $1 代表正则匹配中的第一组
proxy_cache_purge cachefile www.domain.com$1$is_args$args;
}
} # 保存 purge.conf 文件

测试清除缓存

如果要进行缓存清除,首先需要有缓存文件,此处参照前文 Nginx缓存配置 中,访问 www.domain.com/testpage2 ,刷新页面,直到缓存已经生成,即 X-Cache 的状态为 HIT

进入 cd /tmp/cache/ ,查看已经生成了缓存文件

# 测试 nginx 配置是否正确
/usr/local/nginx/sbin/nginx -t
# 如果提示 is ok,说明配置没有问题,否则需要修改 # 重启 Nginx
/usr/local/nginx/sbin/nginx -s reload

浏览器访问(也可以通过 curl 命令来访问):

# 清除key为 www.domain.com/ 的缓存
192.168.200.129/purge/
# 清除 key 为 www.domain.com/testpage2 页面缓存
192.168.200.129/purge/testpage2

如果返回

则表示清除成功。

资源下载

示例nginx配置文件

Nginx缓存配置之手动清除缓存的更多相关文章

  1. shiro使用redis作为缓存,出现要清除缓存时报错 java.lang.Exception: Failed to deserialize at org.crazycake.shiro.SerializeUtils.deserialize(SerializeUtils.java:41) ~[shiro-redis-2.4.2.1-RELEASE.jar:na]

    shiro使用redis作为缓存,出现要清除缓存时报错 java.lang.Exception: Failed to deserialize at org.crazycake.shiro.Serial ...

  2. 关于缓存问题:js清除缓存

    css并行加载,js串行加载(会阻塞页面) 清除缓存的问题: 1.一般手动清除,浏览器缓存 2.js代码清除缓存(原理:增加了一个参数,且该参数是一个随机数,每次都不一样,所以每次的请求参数都不一样, ...

  3. NuGet 手动清除缓存不起作用

    问题 有时更新了一些内网的程序库/包,但仅仅是一些小的更改,不想增加版本号再推送到内网服务器.手动删除了 .nuget 文件夹下的相关包文件,但是使用 Visual Studio 重新构建的时候,其使 ...

  4. iOS中 SDWebImage手动清除缓存的方法 技术分享

    1.找到SDImageCache类 2.添加如下方法: - (float)checkTmpSize { float totalSize = 0; NSDirectoryEnumerator *file ...

  5. 设置Firefox自动清除缓存,无需手动清除

    1.在firefox的地址栏上输入about:config回车 2.找到browser.cache.check_doc_frequency选项,双击将3改成1保存即可. 那么这个选项每个值都是什么含义 ...

  6. nginx缓存配置的操作记录梳理

    web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输 ...

  7. Hibernate缓存配置

    一级缓存 Hibernate的一级缓存是由Session提供的,因此它只存在于Session的生命周期中,当程序调用save(),update(),saveorupdate()等方法 及调用查询接口l ...

  8. JS强制刷新页面、清除缓存刷新

    清理网站缓存的几种方法 meta方法 <meta http-equiv="pragma" content="no-cache"> <meta ...

  9. iOS UIWebView清除缓存

    UIWebView清除Cookie: //清除cookies NSHTTPCookie *cookie; NSHTTPCookieStorage *storage = [NSHTTPCookieSto ...

随机推荐

  1. uva12298(生成函数)

    生成函数的一般应用: #include<iostream> #include<cstring> #include<cmath> #include<cstdio ...

  2. Linqpad工具

    下载地址: http://www.linqpad.net/ 可以通过连接数据库,直接测试LINQ语句,并可以转化为Lamda .SQL语句. 非常好用的小工具,记录一下.

  3. PHP后台图片上传作品 接口

    //把新图片添加到文件夹里 public function info($file=''){ $info = $file->validate(['ext'=>'jpg'])->rule ...

  4. java基础知识-算术运算符和赋值运算符

    1.算术运算符 算术运算符: +,-,*,/,% /:取的是两个数的商,当两个数是整数,不整除的情况,结果不包含小数部分 %:取的是两个数的余数. 字符串和+联合使用:此时的+称为连接符.++,--都 ...

  5. PB常用函数

    弹出窗口:messagebox() 基本写法:Messagebox('标题','内容') 完整写法: MessageBox ( '标题','内容',图标,按键,默认值) (1)其中标题与内容为要显示的 ...

  6. firefox浏览器testclient测试接口

  7. inline&friend&操作符重载

    (1).inline:是一种以空间换时间的做法省去调用函数的额外开销,提高程序的运行效率,它对于编译器而言只是一种建议 (2).友元函数:是可以直接访问类的private成员的非成员函数.它是定义在类 ...

  8. FNDLOAD使用大全

    FNDLOAD使用大全   Syntax FNDLOAD [username/password] 0 Y [mode] [configuration file] [target data file] ...

  9. [leed code 179] Largest Number

    1 题目 Given a list of non negative integers, arrange them such that they form the largest number. For ...

  10. 批量拼脚本神器-NimbleText

    工作中要给产品经理写各种脚本拉数据.修改数据.这种批量拼sql,Excel当然是最合适的.但是苦于Excel玩不转,之前一直用Visual Studio Code的多焦点编辑功能,即便如此,这在同事眼 ...