访问我的博客

前言

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

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

基础环境

Nginx 配置文件拆分

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

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

  1. 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 节点下进行引入

  1. http{
  2. #......
  3. # 注意 purge.conf 必须要第一个引用!!!
  4. include include/purge.conf;
  5. # 引入其他配置文件
  6. include include/nginx_web.conf;
  7. #include include/nginx_wap.conf;
  8. #include include/nginx_apk.conf;
  9. #include include/nginx_ios.conf;
  10. }

配置缓存清除

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

测试清除缓存

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

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

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

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

  1. # 清除key为 www.domain.com/ 的缓存
  2. 192.168.200.129/purge/
  3. # 清除 key 为 www.domain.com/testpage2 页面缓存
  4. 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. Alpha冲刺 - (10/10)

    Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 本人负责的模块(共享编辑)的前端代码 ...

  2. PAT甲级 1125. Chain the Ropes (25)

    1125. Chain the Ropes (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given ...

  3. HDU2732一个让我debug了一晚上的题目

    思路都理解了,清晰了,就是代码不对,还是有些小地方自己注意不到,即使就在你的眼前也不易发现的那种 Description: 也是一个最大流的构图,没相出来,或者说想简单了也是标记点1 至 n * m是 ...

  4. SRM475

    250pt: 题意:有最长N=17的一条格子,每个格子是W.B和R三种颜色之一,当某个格子上有兔子时,下一个回合该兔子按照以下的规则移动: 如果兔子在第一个格子,则向右移动一格: 否则如果兔子在倒数两 ...

  5. CSS 基础 例子 行高line-height

    “行高“指一行文字的高度,具体来说是指两行文子间基线间的距离.在CSS,line-height被用来控制行与行之间的垂直距离.line-height 属性会影响行框的布局.在应用到一个块级元素时,它定 ...

  6. spring boot学习笔记2

    开场知识: spring 容器注入bean,时容器初始化的一些接口以及接口调用的时间先后顺序: 1)BeanFactoryPostProcessor 容器初始化的回调方法 * BeanFactoryP ...

  7. 连接Oracle时ORA-12541 TNS 无监听程序

    http://www.cnblogs.com/Qian123/archive/2016/08/24/5803085.html

  8. Android-okhttp下载网络图片并设置壁纸

    在AndroidManifest.xml配置网络访问权限: <!-- 访问网络是危险的行为 所以需要权限 --> <uses-permission android:name=&quo ...

  9. Web应用安全之点击劫持(CLICKJACKING)与X-FRAME-OPTIONS HEADER

    点击劫持(clickjacking)与X-Frame-Options Header 文/玄魂 目录 前言... 1.1 点击劫持(clickjacking attacks)... 1.2  Frame ...

  10. 《Linux-基础篇笔记》 Vim编辑器(二)

    Linux图形化界面下的文本编辑器 gedit . libre office . evince PDF阅读器 ①gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器.它使用GTK+编写而成, ...