Nginx 的缓存功能有:proxy_cache / fastcgi_cache
proxy_cache的作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态。
fastcgi_cache的作用是缓存fastcgi生成的内容,很多情况是php生成的动态的内容。
proxy_cache缓存减少了nginx与后端通信的次数,节省了传输时间和后端宽带。
fastcgi_cache缓存减少了nginx与php的通信的次数,更减轻了php和数据库(mysql)的压力,这比用memcached之类的缓存要轻松得多
Nginx 的 buffer 机制
对于来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端浏览器。缓冲区的大小由 fastcgi_buffers 和 fastcgi_buffer_size 两个值控制。
指令
#缓存路径文件,目录结构等级,关键字区域实际和非活动时间
fastcgi_cache_path /usr/local/openresty/nginx/fastcgi_temp levels=1:2 keys_zone=QIANHE:10m inactive=1m;
#读取fastcgi应答第一部分(应答头)需要多大缓冲区
fastcgi_buffer_size 8k;
#指定本地需要多少和多大的缓冲区来缓冲fastcgi应答请求
fastcgi_buffers 4 64k;
#写入缓存文件使用多大的数据块,默认值是fastcgi_buffer的2倍
fastcgi_temp_file_write_size 128k;
#开启fastcgi缓存并为其指定为QIANHE名称,降低cpu负载,防止502错误发生
fastcgi_cache QIANHE;
#设置缓存的关键字
fastcgi_cache_key QIANHE
#为缓存实际使用的共享内存指定一个区域,相同的区域可以用在不同的地方
fastcgi_cache zone off
#指令指定了经过多少次请求的相同URL将被缓存
fastcgi_cache_min_uses 1
#指定同FastCGI服务器的连接超时时间,这个值不能超过75秒
fastcgi_connect_timeout 10
#指向fastcgi服务器请求超时时间(这个指定值已经完成两次握手后向fastcgi传送请求的超时时间)
fastcgi_send_timeout 300
#接收fastcgi服务器应答超时时间,同理也是2次握手后
fastcgi_read_timeout 300