1. Web服務器緩存配置
通過Nginx或Apache的緩存模塊,緩存靜態文件(如圖片、CSS、JS)和動態內容,減少后端服務器的重復處理。
/etc/nginx/nginx.conf,配置proxy_cache_path定義緩存路徑、大小和過期時間,通過proxy_cache指令開啟緩存,并用proxy_cache_valid設置不同狀態碼的緩存有效期(如200狀態碼緩存10分鐘)。示例配置:http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
location / {
proxy_pass http://backend;
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
}
}
}
mod_cache和mod_cache_disk模塊,編輯httpd.conf配置CacheEnable disk指定緩存路徑,設置CacheRoot、CacheDirLevels(目錄層級)和CacheDefaultExpire(默認過期時間)。示例配置:<IfModule mod_cache.c>
<IfModule mod_cache_disk.c>
CacheEnable disk /;
CacheRoot "/var/cache/apache2/mod_cache_disk";
CacheDirLevels 2;
CacheDirLength 1;
CacheDefaultExpire 3600;
</IfModule>
</IfModule>
2. 反向代理緩存(Varnish)
Varnish是一款高性能反向代理緩存服務器,專為HTTP加速設計,能顯著減少后端服務器負載。
sudo yum install varnish。/etc/varnish/default.vcl,設置后端服務器地址(如127.0.0.1:8080),并通過sub vcl_recv規則排除需要實時處理的請求(如含PHPSESSID的Cookie),通過sub vcl_backend_response設置緩存條件(如忽略帶Cookie的響應)。示例配置:backend default {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_recv {
if (req.http.Cookie ~ "PHPSESSID") {
return (pass);
}
return (hash);
}
sub vcl_backend_response {
if (bereq.http.Cookie ~ "PHPSESSID") {
set beresp.uncacheable = true;
return (deliver);
}
}
sudo systemctl start varnish并設置開機自啟。3. 內存緩存系統(Memcached/Redis)
Memcached和Redis是內存緩存系統,用于緩存數據庫查詢結果、會話數據等,減少數據庫訪問壓力。
sudo yum install memcached,啟動sudo systemctl start memcached并設置開機自啟。sudo yum install redis,啟動sudo systemctl start redis并設置開機自啟。memcached擴展、Redis的predis庫)連接緩存系統,將頻繁訪問的數據存儲到內存中。4. 瀏覽器緩存優化
通過設置HTTP響應頭,讓瀏覽器緩存靜態資源(如圖片、CSS、JS),減少重復請求。
expires(過期時間)和Cache-Control(緩存控制)頭,示例:location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public";
}
<FilesMatch>指令設置相同頭部,示例:<FilesMatch "\.(jpg|jpeg|png|gif|ico|css|js)$">
ExpiresActive On
ExpiresDefault "access plus 30 days"
</FilesMatch>
5. 靜態資源優化
通過壓縮和CDN分發靜態資源,減少傳輸時間和帶寬占用。
gzip on,指定壓縮類型(如text/plain、text/css、application/javascript);在Apache中啟用mod_deflate模塊,添加AddOutputFilterByType DEFLATE指令。6. 數據庫緩存優化
優化數據庫查詢和緩存,減少數據庫響應時間。
SELECT *,只查詢需要的字段;減少復雜JOIN操作,拆分大查詢為小查詢。7. 系統級緩存調優
調整內核參數和文件系統設置,提高系統緩存效率。
vm.dirty_ratio(臟頁占內存的最大比例,默認20%)和vm.dirty_background_ratio(后臺刷臟頁的閾值,默認10%)控制臟頁刷新頻率,適當增加可減少磁盤I/O。示例:echo 40 > /proc/sys/vm/dirty_ratio
echo 10 > /proc/sys/vm/dirty_background_ratio
/etc/fstab中為不需要更新訪問時間的文件系統(如/var/www)添加noatime選項,減少文件系統元數據更新。示例:/dev/sda1 /var/www ext4 defaults,noatime 0 0
/tmp)掛載為tmpfs(內存文件系統),提高臨時文件讀寫速度。示例:echo "tmpfs /tmp tmpfs defaults,size=2G 0 0" >> /etc/fstab
mount -o remount /tmp