动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

Nginx启用缓存详解

06-21 15:25 1120浏览
举报 T字号
  • 大字
  • 中字
  • 小字

Nginx基于Proxy Store实现,使用Nginx的http_proxy模块可以实现类似于squid的缓存功能。当启用缓存时,Nginx会将相应数据保存在磁盘缓存中,只要缓存数据尚未过期,就会使用缓存数据来响应客户端的请求。

Nginx启用缓存需要在最顶层的http节点下配置proxycachepath命令。我们先看看proxycachepath命令的语法结构:

proxy_cache_path /data/cache keys_zone=niyueling:10m;

可以看到proxycachepath命令一共包含两个参数,第一个参数指定缓存保存的本地路径,第二个参数定义缓存数据的共享内存区域的名称和内存区大小。Nginx启动后,缓存加载程序只进行加载一次,加载时会将缓存的元数据加载到共享内存区域,但是如果一次加载整个缓存全部内容可能会使Nginx刚启动的前几分钟性能消耗严重,大幅度降低Nginx的性能。所以可以在proxycachepath命令中配置缓存迭代加载。缓存迭代加载一共可以设置三个参数:

loader_threshold - 迭代的持续时间,以毫秒为单位(默认为200)
loader_files - 在一次迭代期间加载的最大项目数(默认为100)
loader_sleeps - 迭代之间的延迟(以毫秒为单位)(默认为50)

我们可以看下一个小例子:

proxy_cache_path /data/cache keyszone=niyueling:10m loaderthreshold=300 loader_files=200;

在这个例子中缓存迭代加载可以持续300毫秒或者直到加载满200个项目。在http节点下设置完proxycachepath命令,下一步在虚拟服务器配置中配置proxycache命令,我们可以看看proxycache命令的语法结构:

proxy_cache niyueling;

可以看到proxycache命令很简单,就是指定了我们刚才配置的内存区。但是这里有一点需要额外注意的是:我们刚才通过配置proxycachepath命令的keyszone参数配置内存区大小为10m,这并不会限制缓存数据的大小,实际上缓存数据是存储在文件系统中的特定文件的元数据副本。如果想要限制缓存数据的上限,则需要在proxycachepath命令中添加maxsize参数设置缓存数据上限。说完了proxycache命令。我们接着看看下一个命令:proxycachemethods,我们看下该命令语法结构:

proxy_cache_methods[GET HEAD POST];

在虚拟服务器下配置proxycachemethods命令可以指定该虚拟服务器下什么类型的HTTP方法可以被缓存。默认情况下GET请求及HEAD请求会被缓存,而POST请求不会被缓存。接下来看看另外一个常见的命令:proxycachevalid,先贴下该命令语法结构:

proxy_cache_valid replycode [replycode...] time;

这个命令很有意思,在虚拟服务器下设置该命令,它可以针对不同状态码的响应数据设置不同的缓存时间,我们可以看个简单的小例子:

proxy_cache_valid 200 10m ;
proxy_cache_valid 404 1m ;
proxy_cache_valid 302 5m ;

我们通过上面的命令就可以设置200状态码的缓存时间为10分钟,302重定向的缓存时间为5分钟,404的缓存时间为1分钟。如果想为所有状态码定义相同缓存时间,就可以使用any作为第一个参数:

proxy_cache_valid any 5m;

接下来看看下一个命令:proxycachebypass。一样先看下语法结构:

proxy_cache_bypass $cookienocache $argnocache$arg_comment;

这个命令可以配置不会向客户端响应缓存,而是直接将请求转发给后端服务进行请求数据。可以通过上述命令配置需要绕过缓存的请求URL,也就是说URL中包含该配置的值,则这次请求会直接跳过缓存直接请求后端服务去获取数据。接下来还有最后一个比较常用的命令:proxycachemin_uses。先贴下语法结构:

proxy_cache_min_uses 2;

这个命令可以设置当某请求最少响应几次后会被缓存。若我设置为2则表示每个请求最少被请求2次后会加入到缓存中。到这里我们也就算基本完成了Nginx缓存的启用,接下来就是对Nginx缓存的相关操作,还不会的小伙伴可以到动力节点在线观看精选的Nginx服务器视频教程,学习更多更优质的课程。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵498
程序员代码小兵498

153篇文章贡献528999字

作者相关文章更多>

推荐相关文章更多>

RabbitMQ使用及工作原理

代码小兵86504-19 19:55

Nginx反向代理的简单实例

代码小兵49806-21 15:40

Linux删除文件夹命令

代码小兵69607-21 11:32

Nginx配置详解

代码小兵12407-22 10:47

Linux更改ip地址的三种方式

代码小兵87207-21 12:51

发评论

举报

0/150

取消