009.Nginx缓存及配置
一 浏览器缓存
1.1 缓存概述
1.2 缓存机制
1.3 Nginx缓存类型



1.4 Nginx代理缓存原理

1.5 缓存内容
| Cache-directive | 说明 | 
| public | 所有内容都将被缓存(客户端和代理服务器都可缓存)。 | 
| private | 内容只缓存到私有缓存中(仅客户端可以缓存,代理服务器不可缓存)。 | 
| no-cache | 必须先与服务器确认返回的响应是否被更改,然后才能使用该响应来满足后续对同一个网址的请求。因此,如果存在合适的验证停牌(ETag),no-cache会发起往返通信来验证缓存的响应,如果资源未被更改,可以避免下载。 | 
| no-store | 所有内容都不会被缓存到缓存或Internet临时文件中,强制缓存和对比缓存都不会触发。 | 
| must-revalidation.proxy-revalidation | 如果缓存内容失败,请求必须发送到服务器、代理以进行重新验证。 | 
| max-age=xxx(xxx is numeric) | 缓存的内容将在xxx秒失效,这个选项只在HTTP 1.1可用,并如果和Last-Modified一起使用时,优先级较高。 | 
1.6 缓存规则
  1 location /images/ {
  2     proxy_cache my_cache;
  3     proxy_ignore_headers Cache-Control;
  4     proxy_cache_valid any 30m;
  5     # ...
  6 }
二 Nginx缓存配置项
2.1 expires配置
  1 server {
  2     listen       80;
  3     server_name  xxx.xxx.com;
  4     root         /app/xxx/html/;
  5     location ~ .*\.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm)$
  6     {
  7         expires      7d;
  8     }
  9
 10     location ~ .*\.(?:js|css)$
 11     {
 12         expires      7d;
 13     }
 14
 15     location ~ .*\.(?:htm|html)$    #不缓存html
 16     {
 17         add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
 18     }
 19 }
2.2 proxy_cache配置
1 proxy_cache mycache;
2.3 proxy_cache_path配置
  1 http {
  2     ...
  3     // 缓存目录:/data/nginx/cache
  4     // 缓存名称:one
  5     // 缓存占用内存空间:10m
  6     // 缓存目录级别为2
  7     // 缓存最大时间为60分钟
  8     // 加载器每次迭代过程最多执行300毫秒
  9     // 加载器每次迭代过程中最多加载200个文件
 10     // 缓存硬盘空间最多为 200m
 11     proxy_cache_path /data/nginx/cache  levels=1:2 keys_zone=one:10m inactive=60m loader_threshold=300 loader_files=200 max_size=200m;
 12     server {
 13         listen 8080;
 14         // 使用名称为one的缓存
 15         proxy_cache one;
 16         location / {
 17             // 此location中使用默认的缓存配置
 18             proxy_pass http://backend1;
 19         }
 20         location /some/path {
 21             proxy_pass http://backend2;
 22         // 缓存有效期为1分钟
 23             proxy_cache_valid any 1m;
 24             // 被请求3次以上时才缓存
 25             proxy_cache_min_uses 3;
 26         // 请求中有下面参数值时不走缓存
 27             proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
 28         }
 29     }
 30 }
2.3 proxy_cache_valid配置
1 ……
2 proxy_cache_valid 200 302 10m;
3 proxy_cache_valid 404 1m;
4 ……
1 ……
2 proxy_cache_valid any 5m;
3 ……
2.4 proxy_cache_methods配置
2.5 proxy_cache_key string
2.6 proxy_cache_min_uses
1 ……
2 proxy_cache_min_uses 5;
3 ……
4
2.7 proxy_cache_bypass
1 ……
2 proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
3 ……
4
2.8 proxy_no_chache string
1 ……
2 proxy_no_chache $cookie_nocache $arg_nocache $arg_nocache;
3 ……
4
2.9 proxy_cache_use_stale
1 ……
2 proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
3 ……
4
2.10 proxy_cache_lock
1 ……
2 proxy_cache_lock on;
3 ……
4
2.11 proxy_cache_lock_timeout
1 ……
2 proxy_cache_lock_timeout 5s;
3 ……
4
三 缓存配置实例
参考文档:https://www.myfreax.com/nginx-caching-guide/。
四 缓存清除
4.1 清除缓存配置
  1 location ~ /purge(/.*) {
  2         allow       127.0.0.1;
  3         allow       192.168.55.0/24;
  4         deny        all;
  5         proxy_cache_purge cache_one $1$is_args$args;
  6     }
4.2 脚本清除
1 #!/bin/sh
2 #****************************************************************#
3 # ScriptName: nginx_cache_clean.sh
4 # Author: null
5 # Create Date: 2020-06-24 00:03
6 # Modify Author: xhy
7 # Modify Date: 2020-06-24 00:03
8 # Version:
9 #***************************************************************#
10 echo -e "\n"
11 echo -n -e "\e[35;1m请输入Nginx Proxy_cache缓存的具体路径(提示:可使用Tab补全!)\e[0m\e[34;5m:\e[0m"
12 read -e path
13 CACHE_DIR=$path
14 echo -e "\e[32;1m----------------------------------------------------------------\e[0m"
15 echo -e "\e[32;1m----------------------------------------------------------------\e[0m"
16 echo -n -e "\e[32;1m请输入删除操作的类型:\n1.按文件类型删除\t2.按具体文件名删除\t3.按文件目录删除\n:"
17 read action
18 case $action in
19 1)
20 echo -e "\e[32;1m----------------------------------------------------------------\e[0m"
21 echo -e "\e[32;1m----------------------------------------------------------------\e[0m"
22 echo -n -e "\e[34;1m 请输入你要删除的缓存文件类型(多个参数可空格隔开)\e[0m\e[34;5m:\e[0m"
23 read -a FILE
24 for i in `echo ${FILE[*]}|sed 's/ /\n/g'`
25 do
26 grep -r -a \.$i ${CACHE_DIR}| awk 'BEGIN {FS=":"} {print $1}' > /tmp/cache_list.txt
27 for j in `cat /tmp/cache_list.txt`
28 do
29 rm -rf $j
30 echo "$i $j 删除成功!"
31 done
32 done
33 ;;
34 2)
35 echo -e "\e[32;1m----------------------------------------------------------------\e[0m"
36 echo -e "\e[32;1m----------------------------------------------------------------\e[0m"
37 echo -n -e "\e[33;1m 请输入你要删除的缓存文件具体名称(多个参数可空格隔开)\e[0m\e[34;5m:\e[0m"
38 read -a FILE
39 for i in `echo ${FILE[*]}|sed 's/ /\n/g'`
40 do
41 grep -r -a $i ${CACHE_DIR}| awk 'BEGIN {FS=":"} {print $1}' > /tmp/cache_list.txt
42 for j in `cat /tmp/cache_list.txt`
43 do
44 rm -rf $j
45 echo "$i $j 删除成功!"
46 done
47 done
48 ;;
49 3)
50 echo -e "\e[32;1m----------------------------------------------------------------\e[0m"
51 echo -e "\e[32;1m----------------------------------------------------------------\e[0m"
52 echo -n -e "\e[33;1m支持的模式有:\n1.清除网站cache目录下的所有缓存:cache.aa.com/data/cache/\n2.清除网站shop下的所有缓存:cache.aa.com/data/upload/shop\n3.清除网站根目录下的所有缓存:cache.aa.com\e[0m\n"
53 echo -n -e "\e[34;1m 请输入你要删除的缓存文件具体目录\e[0m\e[34;5m:\e[0m"
54 read -a FILE
55 for i in `echo ${FILE[*]}|sed 's/ /\n/g'`
56 do
57 grep -r -a "$i" ${CACHE_DIR}| awk 'BEGIN {FS=":"} {print $1}' > /tmp/cache_list.txt
58 for j in `cat /tmp/cache_list.txt`
59 do
60 rm -rf $j
61 echo "$i $j 删除成功!"
62 done
63 done
64 ;;
65 *)
66 echo "输入错误,请重新输入"
67 ;;
68 esac
009.Nginx缓存及配置的更多相关文章
- nginx缓存模块配置总结proxy_cache(未完)
		简介:此缓存设置用到了第三方模块purge,使用的时候就在源链接和访问的具体内容之间加入关键字"/purge/"即可. 如:访问http://192.168.0.1/a.png 会 ... 
- nginx缓存配置的操作记录梳理
		web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输 ... 
- Nginx缓存配置以及nginx ngx_cache_purge模块的使用
		web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输 ... 
- 网易技术分享:Nginx缓存引发的跨域惨案
		推荐:更多技术团队分享文章 关注:MAYOU18技术专栏 1. 前言 贵金属wap版直播间上线后,偶尔有用户反馈,在进入wap直播间的时候,出现空白页面,但是重新刷新又可以正常显示了.我们曾一度认为是 ... 
- NGINX缓存使用官方指南
		我们都知道,应用程序和网站一样,其性能关乎生存.但如何使你的应用程序或者网站性能更好,并没有一个明确的答案.代码质量和架构是其中的一个原因,但是在很多例子中我们看到,你可以通过关注一些十分基础的应用内 ... 
- ASP.NET Core 缓存技术 及 Nginx 缓存配置
		前言 在Asp.Net Core Nginx部署一文中,主要是讲述的如何利用Nginx来实现应用程序的部署,使用Nginx来部署主要有两大好处,第一是利用Nginx的负载均衡功能,第二是使用Nginx ... 
- debian下配置nginx缓存
		root权限下 新建/usr/nginx/cache/webpages目录 在/etc/nginx/sites-available下找到自己所需配置的文件,打开文件后在开头加上proxy_cache_ ... 
- Nginx缓存配置
		访问我的博客 前言 本文介绍利用 nginx 的 nginx_ngx_cache_purge 模块来实现缓存功能,前几篇文章介绍了 Nginx 的动静分离以及 CDN 技术,在其基础上,再对整个页面进 ... 
- Nginx缓存配置之手动清除缓存
		访问我的博客 前言 前文介绍了利用 nginx 的 nginx_ngx_cache_purge 模块来实现缓存功能,并设置了缓存时间为一天. 但是如果前端修改了页面,比如首页,由于 Nginx 缓存的 ... 
随机推荐
- linux下操作memcache的操作命令
			1.连接memcache linux下一般使用telnet连接memcache服务 [root@localhost ~]# telnet 127.0.0.1 11266 Trying 127.0.0. ... 
- 嵌入式QT开发视频教程-供参考
			免费嵌入式QT开发视频教程 https://pan.baidu.com/s/1bprhJ2Z QT初级到高级编程视频教程--丁林松.rarhttp://www.jisoupan.com/share/2 ... 
- Java 多线程基础(七)线程休眠 sleep
			Java 多线程基础(七)线程休眠 sleep 一.线程休眠 sleep sleep() 方法定义在Thread.java中,是 static 修饰的静态方法.sleep() 的作用是让当前线程休眠, ... 
- 跨云厂商部署 k3s 集群
			原文链接:https://fuckcloudnative.io/posts/deploy-k3s-cross-public-cloud/ 最近一两年各大云服务商都出了各种福利活动,很多小伙伴薅了一波又 ... 
- Android安全初学笔记
			安全概述 安全主要解决4类问题 保密:不希望第三方窥探 鉴别:与你通信的人可以被确认 完整性:不能被随意篡改,或者能鉴别是否被篡改 不可否认性:能确认产生信息的人,并且产生该信息的人在何时都无法否认产 ... 
- vue 入门, todoList
			# 实现逻辑: > * 技术栈> 1. 生命周期,creatd( 创建后执行)> 2. methods': 调用事件方法,结果不会缓存> 3. Watch : 监听器,监听输 ... 
- 使用Jmeter如何测试下载接口
			性能测试过程中,有时候需要对下载类的功能做压测,有些同学没有这方面的测试经验,比较迷茫,本文简单介绍下如何测试下载类的请求1.首先使用fiddler抓包,知道是一个http类型的请求,有一个post请 ... 
- 前端笔记(关于解决打包时报node-sass错误的问题)
			这个问题之前反复出现,试过重新从其他同事将node_modules拿过来用,但是过了几天又出同样的问题 去网上百度了好久,大多数都说是node-sass重装一下就行.可是我这边卸载都无法卸载,何谈重装 ... 
- 技术干货丨卷积神经网络之LeNet-5迁移实践案例
			摘要:LeNet-5是Yann LeCun在1998年设计的用于手写数字识别的卷积神经网络,当年美国大多数银行就是用它来识别支票上面的手写数字的,它是早期卷积神经网络中最有代表性的实验系统之一.可以说 ... 
- 阿里巴巴开源canal 工具数据同步异常CanalParseException:parse row data failed,column size is not match for table......
			一.异常现象截图 二.解决方式: 1.背景 早期的canal版本(<=1.0.24),在处理表结构的DDL变更时采用了一种简单的策略,在内存里维护了一个当前数据库内表结构的镜像(通过desc ... 
