LNMP缓存策略配置指南
一 整体思路与分层
二 Nginx缓存配置
location ~* \.(jpg|jpeg|gif|png|css|js|ico|webp|svg)$ {
expires 1y;
add_header Cache-Control "public, no-transform";
add_header ETag "";
}
http {
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=php_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_cache php_cache;
fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 404 1m;
fastcgi_cache_key "$scheme$request_uri";
fastcgi_cache_methods GET HEAD;
# 登录、带 Authorization 等请求不命中缓存
fastcgi_cache_bypass $http_authorization;
fastcgi_no_cache $http_authorization;
add_header X-Proxy-Cache $upstream_cache_status;
}
}
}
三 PHP缓存配置
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
[apcu]
extension=apcu.so
apcu.enable_cli=1
apcu.shm_size=64M
apcu.ttl=7200
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set('key', 'value', 3600); // 缓存 1 小时
echo $redis->get('key');
sudo apt install php-redis 或 sudo apt install php-memcached。四 MySQL缓存与数据库层优化
[mysqld]
innodb_buffer_pool_size=1G
innodb_buffer_pool_instances=8
innodb_log_file_size=256M
innodb_log_buffer_size=64M
五 验证与运维要点
curl -I https://example.com/style.css