美文网首页
nginx的fastcgi_cache模块与proxy_cach

nginx的fastcgi_cache模块与proxy_cach

作者: JustFantasy | 来源:发表于2016-05-30 15:38 被阅读719次

1.proxy_cache的作用是缓存后端服务器的内容,包括静态的和动态。
2.fastcgi_cache的作用是缓存fastcgi生成的内容,很多情况是php生成的动态的内容。
3.proxy_cache缓存减少了nginx与后端通信的次数,节省了传输时间和后端宽带。
4.fastcgi_cache缓存减少了nginx与php的通信的次数,更减轻了php和数据库(mysql)的压力,这比用memcached之类的缓存要轻松得多。

附上nginx的httpd 配置

fastcgi_connect_timeout 300;
指定连接到后端FastCGI的超时时间。

fastcgi_send_timeout 300;
向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间。

fastcgi_read_timeout 300;
接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间。

fastcgi_buffer_size 32k;
指定读取FastCGI应答第一部分需要用多大的缓冲区,一般第一部分应答不会超过1k,由于页面大小为4k,所以这里设置为4k。

fastcgi_buffers 4 32k;
指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求。如果一个PHP脚本所产生的页面大小为256KB,那么会为其分配4个64KB的缓冲区来缓存;如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于硬盘。一般这个值应该为站点中PHP脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“16 16k”、“4 64k”等。

fastcgi_busy_buffers_size 64k;
默认值是fastcgi_buffers的两倍。

fastcgi_temp_file_write_size 64k;
在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍。

fastcgi_cache_path /var/logs/nginx/fastcgi_cache_dir levels=1:2 keys_zone=cache_fastcgi:128m inactive=1d max_size=10g;
这个指令为FastCGI缓存指定一个路径,目录结构等级,关键字区域存储时间和非活动删除时间。以及最大占用空间。

然后在server的location里面调用,如下缓存php文件:

location ~ \.php$ {
  root /var/www/html/yan_blog;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME     $document_root$fastcgi_script_name;
  include fastcgi_params;fastcgi_cache cache_fastcgi;

  #表示开启FastCGI缓存并为其指定一个名称。     
  fastcgi_cache_valid 200 302 301 1h;
  fastcgi_cache_valid any 1m;
  #为指定的应答代码指定缓存时间,如上例中将200,302 301应答缓存一小时,其他为1分钟。
  fastcgi_cache_min_uses 1;
  #设置链接请求几次就被缓存。
  fastcgi_cache_use_stale error timeout invalid_header http_500;
  #定义哪些情况下用过期缓存
  fastcgi_cache_key $request_method://$host$request_uri;
  #注意一定要加上$request_method作为cache key,否则如果HEAD类型的先请求会导致后面的GET请求返回为空
}

设置了之后重启nginx就可以生效了,这个时候再访问php的页面的话,就会被缓存了,可以查看/var/logs/nginx/fastcgi_cache_dir这个目录下面是有缓存文件的。

如果更改了缓存目录的路径,一定要把缓存的名称也改掉,后端调用的名称也同步改掉,如果只改掉了缓存目录,不改缓存名称的话,缓存的时候还是会缓存到之前的路径下面去,但是调用的时候调用的是新的路径,这个时候就会出现找不到的情况

原文标题:nginx的fastcgi_cache模块与proxy_cache模块缓存区别
原文地址:http://www.abcde.cn/info/show-26-1515-1.html

相关文章

  • nginx的fastcgi_cache模块与proxy_cach

    1.proxy_cache的作用是缓存后端服务器的内容,包括静态的和动态。2.fastcgi_cache的作用是缓...

  • Nginx优化(Fast_CGI)

    fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=...

  • Nginx与PHP工作原理

    Nginx的工作原理 1.Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,...

  • 6.Nginx模块学习方法

    Nginx模块 Nginx模块分为 Nginx官方模块 和 第三方模块 , 这里我们拿Nginx官方模块来介绍一下...

  • Nginx核心模块以及指令介绍

    Nginx模块概览 Nginx核心模块以及指令介绍 注意:Nginx的核心模块包含主模块和事件模块,即上图的cor...

  • nginx内核原理

    Nginx的模块 Nginx由内核和模块组成。 Nginx的模块从结构上分为核心模块、基础模块和第三方模块: 核心...

  • nginx 源代码分析 (二)

    1. nginx模块 nginx的功能分布在nginx模块中,一个模块为一个功能单元。每个nginx模块都专注于自...

  • 应用运维面试核心

    面试题 Nginx模块 你以前用过哪些Nginx模块? upstream 是Nginx负载均衡模块 image ...

  • 浅析nginx

    一、Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,...

  • Nginx的Rewrite指令

    Nginx重写与转发 Nginx通过ngx_http_rewrite_module模块,实现Url的重写和转发。 ...

网友评论

      本文标题:nginx的fastcgi_cache模块与proxy_cach

      本文链接:https://www.haomeiwen.com/subject/uwfcdttx.html