首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Nginx + PHP 快取機制深度解析:proxy_cache 與 fastcgi_cache 實戰配置

     編輯:PHP 綜合知識

Nginx 提供兩種核心快取機制,針對不同架構層級優化效能:

核心差異對照

特性proxy_cachefastcgi_cache
快取對象後端伺服器回應(靜態/動態皆可)FastCGI 進程產生的內容(通常為 PHP 動態頁)
減少通訊Nginx ↔ 後端伺服器Nginx ↔ PHP-FPM
壓力分擔後端帶寬、傳輸時間PHP 處理、資料庫查詢
適用場景反向代理、負載均衡架構PHP 應用直接掛載於 Nginx

proxy_cache 完整配置範例

proxy_temp_path /data0/proxy_temp_dir;
proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;

server {
    listen 80;
    server_name www.example.com;
    location / {
        proxy_cache cache_one;
        proxy_cache_valid 200 304 12h;
        proxy_cache_key $host$uri$is_args$args;
        proxy_pass https://backend_server;
        proxy_next_upstream http_502 http_504 error timeout invalid_header;
    }
    # 快取清除端點
    location ~ /purge(/.*) {
        allow 127.0.0.1; allow 192.168.0.0/16; deny all;
        proxy_cache_purge cache_one $host$1$is_args$args;
    }
    # 動態檔案不快取
    location ~ \.(php|jsp|cgi)$ { proxy_pass https://backend_server; }
}

fastcgi_cache 完整配置範例

fastcgi_cache_path /tt/cache levels=1:2 keys_zone=NAME:2880m inactive=2d max_size=10G;
fastcgi_cache_key "$scheme$request_method$host$uri$arg_filename$arg_x$arg_y";

server {
    listen 8080;
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_cache NAME;
        fastcgi_cache_valid 200 48h;
        fastcgi_cache_min_uses 1;
        fastcgi_cache_use_stale error timeout invalid_header http_500;
        fastcgi_pass_header Set-Cookie; # 關鍵:允許 Cookie 穿透
        include fastcgi.conf;
    }
}

關鍵參數說明

  • levels=1:2:二級目錄結構,避免單目錄檔案過多
  • keys_zone:共享記憶體區名稱與大小(存放快取索引)
  • inactive:未被存取多久刪除
  • max_size:磁碟快取上限,超過自動淘汰 LRU
  • fastcgi_pass_header Set-Cookie:解決快取導致 Cookie 無法寫入的關鍵

兩種快取可同時啟用(如 CDN → Nginx proxy_cache → PHP fastcgi_cache),按需分層部署。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved