首页 > 代码库 > 使用fastcgi_cache加速网站

使用fastcgi_cache加速网站

为了提高网站的性能缓存是一把利器,nginx中可以配置fastcig_cache来缓存不需要实时获取的数据实现动静分离,nginx.conf配置如下:

http
{

    …

    fastcgi_connect_timeout 300;#指定连接到后端FastCGI的超时时间
    fastcgi_send_timeout 300;#指定向FastCGI传送请求的超时时间,这个值是已经完成两次握手后向FastCGI传送请求的超时时间
    fastcgi_read_timeout 300;#指定接收FastCGI应答的超时时间,这个值是已经完成两次握手后接收FastCGI应答的超时时间。
    fastcgi_buffer_size 256k;#用于指定读取FastCGI应答第一部分需要多大的缓冲区,这个值表示将使用1个64KB的缓冲区读取应答的第一部分(应答头),可以设置为fastcgi_buffers选项指定的缓冲区大小。
    fastcgi_buffers 4 256k;#指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求。如果一个PHP脚本所产生的页面大小为256KB,那么会为其分配4个64KB的缓冲区来缓存;如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于硬盘。一般这个值应该为站点中PHP脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“16 16k”、“4 64k”等。
    fastcgi_busy_buffers_size 512k;#默认值是fastcgi_buffers的两倍。
    fastcgi_temp_file_write_size 512k;#表示在写入缓存文件时使用多大的数据块,默认值是fastcgi_buffers的两倍。
    fastcgi_temp_path /dev/shm/factcgi_temp_path 1 2;#生成fastcgi_cache临时文件目录   

    fastcgi_cache_path   /dev/shm/fastcgi_cache  levels=1:2  keys_zone=PHPCACHE:1024m inactive=15m;  #fastcgi_cache缓存目录,可以设置目录哈希层级,比如2:2会生成256*256个字目录,keys_zone是这个缓存空间的名字,cache是用多少内存(这样热门的内容nginx直接放内存,提高访问速度),inactive表示默认失效时间,max_size表示最多用多少硬盘空间,需要注意的是fastcgi_cache缓存是先写在fastcgi_temp_path再移到fastcgi_cache_path,所以这两个目录最好在同一个分区,从0.8.9之后可以在不同的分区,不过还是建议放同一分区。
    fastcgi_cache_key "$scheme$request_method$host$request_uri";#定义fastcgi_cache的key,示例中就以请求的URI作为缓存的key,Nginx会取这个key的md5作为缓存文件,如果设置了缓存哈希目录,Nginx会从后往前取相应的位数做为目录。
    fastcgi_cache_use_stale error  timeout invalid_header http_500; #定义哪些情况下用过期缓存

    …

在server中使用缓存:

server {

    …

    set $no_cache 0;#设置全部缓存

    location /my {
            set $no_cache 1;#设置不缓存/my目录
            rewrite  ^(.*)$  /index.php/$1  last;
            break;
    }

    location ~ .+\.php($|/) {
            set $script $uri;
            set $path_info "/";
            if ($uri ~ "^(.+\.php)(/.+)") {
                set $script $1;
                set $path_info $2;
            }

            fastcgi_cache   PHPCACHE;
            fastcgi_no_cache $no_cache;
            fastcgi_cache_bypass   $no_cache;
            fastcgi_cache_valid   200 302  1h;
            fastcgi_cache_valid   301      1h;
            fastcgi_cache_valid   any      1m;
            fastcgi_cache_min_uses  1;
            fastcgi_ignore_headers Cache-Control Expires;

            fastcgi_pass 127.0.0.1:9001;
            fastcgi_index index.php?IF_REWRITE=1;
            include fastcgi_params;
            fastcgi_param PATH_INFO $path_info;
            fastcgi_param SCRIPT_FILENAME $document_root/$script;
            fastcgi_param SCRIPT_NAME $script;
        }

清空缓存:

url:http://www.xxx.com/zhouyou.html
组成方式:
    httpGETwww.xxx.com/zhouyou.html
返回md5:
    FB9AAC75CE375A1A2419BD1C4AE90731
第一个目录是截取最后一位数字:1
第二个目录为截取最后两个数字:73

进入/dev/shm/fastcgi_cache/1/73 删除FB9AAC75CE375A1A2419BD1C4AE90731文件

使用fastcgi_cache加速网站