在LNMP(Linux, Nginx, MySQL, PHP)环境下配置缓存系统可以显著提高网站性能。以下是配置缓存系统的步骤:
Nginx提供了多种缓存机制,包括proxy_cache和fastcgi_cache。
确保你的Nginx版本支持缓存模块。大多数现代Nginx版本都支持这些模块。
编辑Nginx配置文件(通常是/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
),添加以下内容:
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 {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
add_header X-Proxy-Cache $upstream_cache_status;
}
}
}
如果你使用PHP-FPM,可以配置fastcgi_cache:
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 {
listen 80;
server_name example.com;
location ~ \.php$ {
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;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
}
PHP有多种缓存扩展,如OPcache、APCu和Memcached。
OPcache是PHP内置的缓存扩展,通常默认启用。你可以在php.ini
文件中调整其设置:
[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
APCu是另一个PHP缓存扩展,适用于用户数据缓存。安装APCu:
sudo apt-get install php-apcu
在php.ini
文件中启用APCu:
[apcu]
extension=apcu.so
apcu.enable_cli=1
apcu.shm_size=32M
Memcached是一个高性能的分布式内存对象缓存系统。安装Memcached:
sudo apt-get install memcached
启动Memcached服务:
sudo systemctl start memcached
在PHP中使用Memcached扩展:
$memcached = new Memcached();
$memcached->addServer('127.0.0.1', 11211);
$key = 'my_cache_key';
$data = $memcached->get($key);
if (!$data) {
$data = 'some expensive data';
$memcached->set($key, $data, 3600); // Cache for 1 hour
}
echo $data;
MySQL提供了查询缓存和InnoDB缓冲池等缓存机制。
编辑MySQL配置文件(通常是/etc/mysql/my.cnf
或/etc/mysql/mysql.conf.d/mysqld.cnf
),添加以下内容:
[mysqld]
query_cache_type=1
query_cache_size=64M
重启MySQL服务:
sudo systemctl restart mysql
InnoDB缓冲池是MySQL的主要缓存机制。编辑MySQL配置文件,调整以下参数:
[mysqld]
innodb_buffer_pool_size=1G
innodb_buffer_pool_instances=8
重启MySQL服务:
sudo systemctl restart mysql
配置缓存系统后,监控其性能并进行优化是必要的。可以使用工具如nginx-stats
、php-fpm-stat
和memcached-tool
来监控缓存命中率和性能指标。
通过以上步骤,你可以在LNMP环境下配置一个高效的缓存系统,显著提升网站性能。