温馨提示×

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=1000cache-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‑ageExpires
    • Memcached命中:执行echo “stats” | nc localhost 11211,关注get_hits/get_missescurr_connections
  • 安全与维护
    • 开放Memcached到外部时务必限制来源IP并开启防火墙;仅缓存可缓存的动态内容,避免用户私有/实时数据被缓存;定期审计与滚动密钥/盐值。

0