ubuntu缓存如何提升页面加载速度
小樊
40
2025-12-29 21:02:50
Ubuntu缓存优化提升页面加载速度
一 核心策略总览
- DNS缓存:缩短域名解析时间,优先解析本地命中。
- 浏览器与HTTP缓存:给静态资源设置长期Cache‑Control/Expires,减少重复下载。
- 服务器页面与对象缓存:用Memcached/Redis缓存数据库查询结果、页面片段,降低后端负载。
- 反向代理与CDN:边缘节点缓存静态资源与可缓存页面,显著缩短首包与总耗时。
- 内核与文件系统缓存:让Linux用好空闲内存做PageCache,并合理设置swappiness/vfs_cache_pressure等参数。
二 快速落地步骤
- DNS缓存
- 安装本地DNS缓存:sudo apt install dnsmasq;编辑**/etc/dnsmasq.conf**设置缓存大小(如:cache-size=1000 或 cache-mem=512),重启:sudo systemctl restart dnsmasq。
- 浏览器与HTTP缓存
- Apache启用缓存与过期头:sudo a2enmod headers expires;在虚拟主机或全局配置加入:
- ExpiresActive On
- ExpiresByType image/jpg “access plus 3 days”
- ExpiresByType image/png “access plus 3 days”
- ExpiresByType text/css “access plus 24 hours”
- ExpiresByType application/javascript “access plus 7 days”
- ExpiresDefault “access plus 24 hours”
- 重启:sudo systemctl restart apache2。
- 内存对象缓存(动态站点)
- 安装并配置Memcached:sudo apt install memcached;编辑**/etc/memcached.conf调整内存(如:-m 256** 或 -m 1024),监听地址(如仅本机:-l 127.0.0.1;多机:-l 0.0.0.0 并配合防火墙),重启:sudo systemctl restart memcached。
- PHP站点安装扩展:sudo apt install php-memcached;重启Web服务:sudo systemctl restart apache2/php-fpm;用 echo “stats” | nc localhost 11211 查看命中与连接情况。
- 反向代理与CDN
- 在站点前加一层反向代理(如Varnish/Nginx)缓存可缓存内容;静态资源(图片、CSS、JS)接入CDN,并开启Brotli压缩(相较Gzip通常可再省约**20%**体积)。
三 内核与文件系统层优化
- 减少换页,优先利用内存缓存:临时设置vm.swappiness=10(如:sudo sysctl vm.swappiness=10),永久写入**/etc/sysctl.conf**;适度降低vm.vfs_cache_pressure(如设为50)以保留更多目录/索引节点缓存。
- 脏页刷写策略(顺序写较多的场景):调低vm.dirty_background_ratio(如5%)与vm.dirty_ratio(如10%),减少突发写放大,提升流畅度。
- I/O调度器:SSD优先noop/noop/none,HDD可用deadline;查看:cat /sys/block/sda/queue/scheduler;临时设置示例:echo deadline > /sys/block/sda/queue/scheduler。
- SSD维护:启用fstrim.timer定期TRIM:sudo systemctl enable --now fstrim.timer,保持写入性能与寿命。
四 验证与注意事项
- 验证要点
- DNS缓存命中:对比前后dig/nslookup耗时,命中后应显著下降。
- HTTP缓存生效:首次访问抓包或浏览器开发者工具看状态码200,再次访问静态资源应为304 Not Modified;响应头应包含Cache‑Control: max‑age或Expires。
- Memcached命中:执行echo “stats” | nc localhost 11211,关注get_hits/get_misses与curr_connections。
- 安全与维护
- 开放Memcached到外部时务必限制来源IP并开启防火墙;仅缓存可缓存的动态内容,避免用户私有/实时数据被缓存;定期审计与滚动密钥/盐值。