nginx的proxy_cache是緩存後端內容,而fastcgi_cache則是緩存Nginx+php的fastcgi,即緩存php動態內容.php
fastcgi_cache默認已包含在nginx0.7.48及之後的版本中了.nginx
配置:後端
http段中配置緩存
fastcgi_cache_path /home/cache levels=1:2 keys_zone=cache_php:20m inactive=1d max_size=10m;url
fastcgi_cache_path緩存目錄 /home/cacheserver
levels 設置目錄層級 1:2能夠生成16*256個子目錄內存
cache_php 是緩存空間的名字md5
20m是用多少內存作緩存(頻繁訪問的內容將被放入內存中)it
inactive 默認時效時間,1d表示一天,表示1天沒有被訪問的內容將被清除掉ast
max_size 表示最多用多少硬盤空間
server段php中配置
fastcgi_cache cache_php;
fastcgi_cache_valid 200 302 1d;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_cache_key $host$request_uri;
fastcgi_ignore_headers Cache-Control;
fastcgi_cache 緩存名稱
fastcgi_cache_valid 那些http頭要緩存,緩存時間
fastcgi_cache_min_uses 進過多少次請求後被緩存
fastcgi_cache_use_stale 那些狀況下不用過時緩存
fastcgi_cache_key 定義fastcgi_cache的key,示例中就以請求的URI做爲緩存的key,Nginx會取這個key的md5做爲緩存文件,若是設置了緩存哈希目錄,Nginx會從後往前取相應的位數作爲目錄
fastcgi_ignore_headers 忽略頭部Cache-Control進行緩存
刪除緩存php代碼
$md5 = md5($url); $cacheFile = '/www/php_cache/' . substr($md5, -1, 1) . '/' . substr($md5, -3, 2) . '/' . $md5;if (!file_exists($cacheFile)) { exit('緩存不存在。');}if (@unlink($cacheFile)) { echo '清除緩存成功。';} else { echo '清除緩存失敗。';}