缓存类型

(1) 服务器缓存

服务端缓存一般使用Memcache、Redis

(2)代理缓存

(3)客户端缓存

代理缓存流程图

第一步:客户端第一次向Nginx请求数据a;

第二步:当Nginx发现缓存中没有数据a时,会向服务端请求数据a;

第三步:服务端接收到Nginx发来的请求,则返回数据a到Nginx,并且缓存在Nginx;

第四步:Nginx返回数据a给客户端应用;

第五步:客户端第二次向Nginx请求数据a;

第六步:当Nginx发现缓存中存在数据a时,则不会请求服务端;

第七步:Nginx把缓存中的数据a返回给客户端应用。

配置语法

proxy_cache_path配置语法

Syntax:

proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];

Default: —

Contex: http

proxy_cache配置语法

  • Syntax:  proxy_cache zone | off;
  • Default: proxy_cache off;
  • Context: http, server, location

proxy_cache_valid配置语法

  • Syntax: proxy_cache_valid [code ...] time;
  • Default: —
  • Context: http, server, location

proxy_cache_key配置语法

  • Syntax: proxy_cache_key string;
  • Default: proxy_cache_key $scheme$proxy_host$request_uri;
  • Context: http, server, location

案例演示:

    upstream imooc {
server 192.168.1.112:8001;
server 192.168.1.112:8002;
server 192.168.1.112:8003;
}
#需要首先配置 缓存目录,文件目录层级2级,空间名字 10m大小,目录最大大小(超过启动nginx自己的淘汰规则),在60分钟的时间内没有被访问就会被清理,存放临时文件
proxy_cache_path /opt/app/cache levels=1:2 keys_zone=imooc_cache:10m max_size=10g inactive=60m use_temp_path=off; server {
listen 80;
server_name localhost jeson.t.imooc.io; location / {
proxy_cache off; #开启缓存,imooc_cache对应上面keys_zone=imooc_cache:10m ;关闭off
proxy_pass http://imooc;
proxy_cache_valid 200 304 12h; #200和304头信息过期时间12小时
proxy_cache_valid any 10m; #其他过期时间10分钟
proxy_cache_key $host$uri$is_args$args; #定义缓存的key
add_header Nginx-Cache "$upstream_cache_status";#增加一个头信息 proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; # 一个服务报错请求下一个
include proxy_params;
}
}

清理缓存的内容

cd /opt/app/cache
rm * ./ -rf

 

让部分请求不缓存

 

    upstream imooc {
server 192.168.1.112:8001;
server 192.168.1.112:8002;
server 192.168.1.112:8003;
}
#需要首先配置 缓存目录,文件目录层级2级,空间名字 10m大小,目录最大大小(超过启动nginx自己的淘汰规则),在60分钟的时间内没有被访问就会被清理,存放临时文件
proxy_cache_path /opt/app/cache levels=1:2 keys_zone=imooc_cache:10m max_size=10g inactive=60m use_temp_path=off; server {
listen 80;
server_name localhost jeson.t.imooc.io; #如果url中包含以下路径参数,那么 cookie_nocache 的值为1
if($request_uri ~^/(url3|login|register|password\/reset)){
set $cookie_nocache 1;
} location / {
proxy_cache off; #开启缓存,imooc_cache对应上面keys_zone=imooc_cache:10m ;关闭off
proxy_pass http://imooc;
proxy_cache_valid 200 304 12h; #200和304头信息过期时间12小时
proxy_cache_valid any 10m; #其他过期时间10分钟
proxy_cache_key $host$uri$is_args$args; #定义缓存的key
add_header Nginx-Cache "$upstream_cache_status";#增加一个头信息 #部分不设置缓存 cookie_nocache上面配置的参数, cookie_nocache不为0或者空 那么是不会进行缓存的
proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
proxy_no_cache $http_pragma $http_authorization; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; # 一个服务报错请求下一个
include proxy_params;
}
}

  

大文件分片请求  

优势:每个子请求收到的数据都会形成一个独立的文件,一个请求断了,其他的请求不受到影响
缺点:当文件很大或者slice很小的时候,可能会导致文件描述符耗尽的情况。  

语法

  • syntax:slice size;
  • Default:slice 0;
  • Context:http,server,location

最新文章

  1. 优先队列实现Huffman编码
  2. maven工程下 读取resource下配置文件
  3. uploadify API
  4. Java基础之处理事件——使窗口处理自己的事件(Skethcer 1 handing its own closing event)
  5. GCD 多线程同步
  6. [Hadoop 周边] Hadoop资料收集【转】
  7. oracle 里面定时执行任务,比如存储过程内容等
  8. jquery mobile navbar
  9. [C/C++标准库]_[0基础]_[优先队列priority_queue的使用]
  10. mysql @value := 用法
  11. 正确显示textarea中输入的回车和空格
  12. 新概念英语(1-99)Ow!
  13. html中 submit和button的区别?
  14. Django基础四<二>(OneToMany和 ManyToMany,ModelForm)
  15. 20165232 学习基础和c语言基础调查
  16. GDB快速入门
  17. leetcode 编译问题:Line x: member access within null pointer of type 'struct TreeNode'
  18. Linux命令:unlias
  19. delphi简单单向字符串加密函数
  20. Chart-template

热门文章

  1. Spring5源码分析之AnnotationConfigApplicationContext
  2. RHEL7 的注册
  3. 石子合并 区间DP模板题
  4. 使用Docker在本地启动3个MySQL镜像
  5. 【Leetcode_easy】917. Reverse Only Letters
  6. 网站证书(SSL域名证书)常见格式使用
  7. Django 之redis的应用
  8. MacOs 10.14.3 Matlab2018b 解决“找不到已安装的编译器 'Xcode Clang++'。错误使用mex,未找到合适的编译器”问题
  9. (1)Spirng Boot 入门(笔记)
  10. yzoj 2377 颂芬梭哈 题解