在 Nginx 和 PHP 中實現緩存持久化,通常涉及兩個方面:服務器端緩存(如使用 OPcache)和客戶端緩存(如使用 HTTP 緩存頭)。以下是一些關鍵步驟和配置示例,幫助你實現緩存持久化。
OPcache 是 PHP 的一個內置擴展,用于緩存 PHP 腳本的解釋結果,從而提高性能。
在 Debian/Ubuntu 系統上:
sudo apt-get install php-opcache
sudo phpenmod opcache
在 CentOS/RHEL 系統上:
sudo yum install php-opcache
sudo systemctl restart httpd
編輯 php.ini
文件(通常位于 /etc/php/7.x/apache2/php.ini
或 /etc/php.ini
),確保以下配置已啟用:
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.validate_timestamps=0
通過設置適當的 HTTP 緩存頭,可以讓瀏覽器緩存靜態資源和動態內容。
編輯 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf
或 /etc/nginx/sites-available/default
),添加或修改以下配置:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.x-fpm.sock; # 根據你的 PHP 版本調整
fastcgi_cache_bypass $http_cache_control;
fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 404 1m;
}
對于更高級的緩存需求,可以使用 Redis 或 Memcached 作為緩存后端。
在 Debian/Ubuntu 系統上:
sudo apt-get install redis-server
在 CentOS/RHEL 系統上:
sudo yum install redis
sudo systemctl start redis
編輯 Nginx 配置文件,添加 Redis 緩存配置:
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 ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.x-fpm.sock;
fastcgi_cache my_cache;
fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 404 1m;
}
}
}
Varnish 是一個高性能的 HTTP 緩存代理,可以作為 Nginx 的前端緩存服務器。
在 Debian/Ubuntu 系統上:
sudo apt-get install varnish
在 CentOS/RHEL 系統上:
sudo yum install varnish
sudo systemctl start varnishd
編輯 Varnish 配置文件(通常位于 /etc/varnish/default.vcl
),添加以下配置:
backend http {
.host = "localhost";
.port = "80";
}
sub vcl_recv {
# 其他配置...
}
sub vcl_backend_response {
# 其他配置...
}
sub vcl_deliver {
# 其他配置...
}
通過以上步驟,你可以在 Nginx 和 PHP 中實現緩存持久化,提高網站性能和響應速度。