Nginx作為反向代理和靜態資源服務器,其緩存配置能有效減少后端請求,提升響應速度。
expires指令設置過期時間(如expires 30d),并添加Cache-Control: public, no-transform頭,讓瀏覽器和CDN直接緩存,避免重復請求。proxy_cache_path定義緩存路徑(如/var/cache/nginx)、層級(levels=1:2)、共享內存區域(keys_zone=my_cache:10m)及最大大?。?code>max_size=1g);通過proxy_cache指令啟用緩存,proxy_cache_valid設置不同狀態碼的緩存時間(如200 302 10m、404 1m),并添加add_header X-Proxy-Cache $upstream_cache_status監控緩存命中狀態(HIT/MISS)。fastcgi_cache_path配置緩存路徑,fastcgi_cache指令啟用緩存,fastcgi_cache_valid設置緩存時間(如PHP頁面緩存10分鐘),減少PHP-FPM的重復解析和數據庫查詢。PHP腳本的編譯和執行是動態請求的性能瓶頸,緩存編譯結果和常用數據能顯著提升效率。
opcache.enable=1開啟,設置opcache.memory_consumption(如128MB,根據腳本大小調整)、opcache.max_accelerated_files(如4000,覆蓋項目所有PHP文件)、opcache.revalidate_freq(如60秒,代碼更新后自動失效),緩存編譯后的字節碼,避免重復編譯。apcu.enable_cli=1開啟,設置apcu.shm_size(如32MB,根據緩存數據量調整),使用apcu_store()和apcu_fetch()存儲和獲取數據。php-memcached或php-redis擴展連接,將頻繁訪問的數據存儲在內存中,減少數據庫壓力。MySQL的緩存配置直接影響數據庫查詢性能,需結合InnoDB特性和外部緩存優化。
innodb_buffer_pool_size是核心參數,設置為物理內存的60%-80%(如64GB內存設為32GB-51.2GB),緩存數據和索引頁,減少磁盤I/O。query_cache_type=0),因其在高并發下易成為瓶頸,建議用Redis/Memcached替代。Predis、phpredis)操作,減少直接訪問MySQL的次數。應用層緩存能針對業務場景優化,提升數據訪問效率。
Cache-Control(如public, max-age=31536000)和Expires頭,讓瀏覽器緩存靜態資源,避免重復下載,提升頁面加載速度。緩存一致性是保證數據準確性的關鍵,需根據業務場景選擇合適的策略。
apcu_delete()、Redis->del()),確保下次請求獲取最新數據。product_123_v2),更新數據時遞增版本號,使緩存自動失效,避免臟數據。持續監控緩存性能,根據實際情況調整策略。
$upstream_cache_status、Redis的INFO stats、APCu的apcu_cache_info()監控命中率(如Nginx緩存命中率應保持在80%以上),若命中率低,需調整緩存時間或大小。used_memory),避免內存溢出;調整maxmemory策略(如allkeys-lru),淘汰不常用的緩存數據。slow_query_log分析慢查詢,優化SQL語句(如添加索引、避免SELECT *),減少數據庫壓力,降低緩存失效頻率。