nginx 缓存机制

作者&投稿:乌供 (若有异议请与网页底部的电邮联系)
~ Nginx缓存的基本思路
基本思想是利用客户访问的时间局部性原理,对客户已经访问过的内容在Nginx服务器本地建立副本,这样在一段时间内再次访问该数据,就不需要通过Nginx服务器再次向后端服务器发出请求,所以能够减少Nginx服务器与后端服务器之间的网络流量,减轻网络拥塞,同时还能减小数据传输延迟,提高用户访问速度。同时,当后端服务器宕机时,Nginx服务器上的副本资源还能够回应相关的用户请求,这样能够提高后端服务器的鲁棒性。

对于缓存,我们大概会有以下问题:
(1)缓存文件放在哪儿?
(2)缓存的空间大小是否可以限定?
(3)如何指定哪些请求被缓存?
(4)缓存的有效期是多久?
(5)对于某些请求,是否可以不走缓存?

解决这些问题后,nginx的缓存也就基本配置完成了,下面看详细配置过程
开启缓存

要使用缓存,首先要使用 proxy_cache_path 这个指令(必须放在 http 上下文的顶层位置),然后在目标上下文中使用 proxy_cache 指令

配置示例

proxy_cache_path 有两个必填参数,第一个参数为 缓存目录,第二个参数keys_zone指定缓存名称和占用内存空间的大小(注:示例中的10m是对内存中缓存内容元数据信息大小的限制,如果想限制缓存总量大小,需要用 max_size 参数)

proxy_cache 的参数为之前指定的缓存名称

缓存管理的相关进程
在缓存工作中有两个附加进程:
(1)缓存管理器
定期检查缓存状态,看缓存总量是否超出限制,如果超出,就移除其中最少使用的部分
(2)缓存加载器
加载器只在nginx启动后运行一次,把缓存内容的元数据信息加载到内存空间,如果一次性加载全部缓存信息,会大量消耗资源,使nginx在启动后的几分钟里变慢,为避免此问题,有3种加载策略:
loader_threshold – 指定每次加载执行的时间
loader_files – 每次最多加载的数量
loader_sleeps – 每次加载的延时
例如:
proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 loader_files=200;
指定缓存哪些请求
nginx默认会缓存所有 get 和 head 方法的请求结果,缓存的key默认使用请求字符串
(1)自定义key
例如 proxy_cache_key " request_uri cookie_nocache arg_comment;
如果任何一个参数值不为空,或者不等于0,nginx就不会查找缓存,直接进行代理转发
综合示例

nginx 缓存机制
三分钟看懂Nginx服务器的缓存原理和机制


阿克陶县15956691208: nginx 反向时 缓存能缓存到内存吗 -
妫秒赛博: varnish的缓存机制,就是把缓存内容放在内存里面,速度肯定快,但带来的问题就是当服务重启里,内存的东西会被清空造成重启那会负载很大.nginx的缓存机制,一部分放在内存里面,这部分是经常访问的,最热的数据,可以规定最多使用多少内存以及释放策略.另一部分相对不是经常访问,但也是符合缓存的内容,就会放存在硬盘,也有一定的释放机制及限制微略.

阿克陶县15956691208: nginx怎么配置自定义cache -
妫秒赛博: HTTP协议的Cache -Control指定请求和响应遵循的缓存机制.在请求消息或响应消息中设置 Cache-Control并不会影响另一个消息处理过程中的缓存处理过程.请求时的缓存指令包括no-cache、no-store、max-age、 max-stale、min-fresh、only-...

阿克陶县15956691208: nginx缓存性能怎么样 -
妫秒赛博: Nginx缓存对于不少人来说都不是很明朗的一个知识.那么好我们就借介绍有关优点和缺点的机会把大家带进Nginx缓存的世界.希望大家在文中能找到自己相关的使用方法. 两种Nginx缓存都有着基本一样的优点和缺点: 缺点1:不支持带参数...

阿克陶县15956691208: Nginx - nginx可以通过URL缓存动态内容,并设置过期时间吗 -
妫秒赛博: nginx的缓存服务proxy_cache不能清除指定的URL缓存,只能设置URL过期时间,要清除指定URL可以用nginx第三方模块ngx_cache_purge. nginx安装时需要将ngx_cache_purege加载进去.

阿克陶县15956691208: windows下nginx缓存配置 -
妫秒赛博: 使用nginx建议在Linux下使用 使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制 http://www.qixing318.com/article/using-memc-nginx-and-srcache-nginx-module-build-efficient-and-transparent-caching-mechanism.html

阿克陶县15956691208: 高并发nginx服务器是多进程还是多线程 -
妫秒赛博: Nginx会按需同时运行多个进程:一个主进程(master)和几个工作进程(worker),配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程(cache manager)等.Nginx主要通过“共享内存”的机制实现进程间通信.主进程以root用户身份运行,而worker、cache loader和cache manager均应以非特权用户身份运行.在工作方式上,Nginx分为单工作进程和多工作进程两种模式.在单工作进程模式下,除主进程外,还有一个工作进程,工作进程是单线程的;在多工作进程模式下,每个工作进程包含多个线程.Nginx默认为单工作进程模式.

阿克陶县15956691208: nginx 缓存怎么都在tmp -
妫秒赛博: nginx缓存cache的5种方案 1、传统缓存之一(404) 这个办法是把nginx的404错误定向到后端,然后用proxy_store把后端返回的页面保存. 配置: location / { root /home/html/;#主目录 expires 1d;#网页的过期时间 error_page 404 =200 /fetch$...

阿克陶县15956691208: nginx proxy - cache怎么看出,静态内容被缓存
妫秒赛博: 使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制 http://www.qixing318.com/article/using-memc-nginx-and-srcache-nginx-module-build-efficient-and-transparent-caching-mechanism.html

阿克陶县15956691208: nginx会自动缓存php的运行结果吗
妫秒赛博: 一般情况下nginx不会自动缓存php的运行结果. 如果需要nginx缓存php的运行结果,以减轻php的压力,则可以使用fastcig_cache系列指令对nginx进行配置.具体的配置如下所示: fastcgi_cache one; fastcgi_cache_key $uri; #设置缓存的key,一般可以以uri为key缓存 fastcgi_cache_min_uses 1; #设置只要有访问这个uri就对php结果进行缓存

阿克陶县15956691208: 怎么优化tomcat和nginx -
妫秒赛博: 近花了一点时间进行了NGINX加TOMCAT7集群压力测试,下面通过对一些常见问题的回答来说明如何调优服务器的性能,是自己的一些经验,且无实际数据,如有纰漏请见谅.背景: TOMCAT7已加APR或者NIO.已装简单监控JCONSOLE,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网