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