ubuntu缓存如何加速网站访问
小樊
42
2025-12-29 21:00:54
Ubuntu缓存加速网站访问的实用方案
一 分层缓存总体思路
- DNS解析缓存:减少域名解析往返时间(RTT),适合首次访问与频繁跳转场景。
- 页面与对象缓存:在服务器侧或反向代理侧缓存HTML片段、接口与静态资源,降低后端负载与数据库压力。
- 应用层数据缓存:缓存数据库查询结果、会话与计算结果,提升动态站点吞吐。
- 边缘缓存与传输优化:借助CDN与Brotli/Gzip压缩,缩短用户与资源的物理距离并减少传输体积。
二 快速落地步骤
- DNS解析缓存
- 方案A(轻量):安装并启用dnsmasq
- 安装:sudo apt-get install dnsmasq
- 配置:/etc/dnsmasq.conf 设置 listen-address=127.0.0.1
- DHCP写入本地DNS:/etc/dhcp/dhclient.conf 增加 prepend domain-name-servers 127.0.0.1;
- 验证:dig example.com 两次,Query time 从数十毫秒降至接近 0 ms
- 方案B(持久化):安装并启用pdnsd
- 安装:sudo apt-get install pdnsd
- 配置:/etc/pdnsd.conf 设置缓存大小与TTL,例如 perm_cache 10240; min_ttl 3d;
- 启动:sudo systemctl enable --now pdnsd
- 将本地回环加入 /etc/resolv.conf:nameserver 127.0.0.1
- 页面与对象缓存
- 反向代理缓存:部署Varnish(典型架构为 Varnish 监听 80,后端 8080)
- 安装:sudo apt-get install varnish
- 配置:/etc/varnish/default.vcl 设置 backend 与缓存策略;/etc/default/varnish 设置 VARNISH_LISTEN_PORT=80
- 启动:sudo systemctl enable --now varnish
- 动态内容缓存:在应用侧引入Redis/Memcached,缓存热点数据、会话与查询结果;对价格、库存等强一致数据设置较短TTL或绕过缓存
- 应用与协议优化
- PHP:启用OPcache减少脚本编译开销
- Web服务器:启用Gzip/Brotli压缩;Nginx 建议启用HTTP/2或更高版本以多路复用提升并发加载体验
三 配置示例
- Apache浏览器与磁盘缓存
- 启用模块:sudo a2enmod cache cache_disk expires
- 配置片段:
- CacheEnable disk /var/cache/apache2/mod_cache_disk
- CacheRoot “/var/cache/apache2/mod_cache_disk”
- ExpiresActive On
- ExpiresByType image “access plus 1 month”
- ExpiresByType text/css “access plus 1 week”
- ExpiresByType application/javascript “access plus 1 week”
- 生效:sudo systemctl restart apache2
- Nginx + Varnish 典型架构
- Varnish 后端指向应用端口(如 8080),Varnish 监听 80;应用(如 Nginx/PHP-FPM)改为监听 8080
- Varnish VCL 要点:vcl_backend_response 中对可缓存响应设置 beresp.ttl;对 Set-Cookie/Authorization 等不可缓存场景 bypass
- 重载:sudo systemctl reload varnish
- DNS缓存对比
- 未启用本地缓存:dig 首次 Query time 常见为30–60 ms或更高
- 启用 dnsmasq/pdnsd 后:第二次及后续查询通常降至0–2 ms量级(取决于网络与上游)
四 验证与注意事项
- 效果验证
- DNS:使用 dig 观察前后两次 Query time 差异(从数十毫秒降至接近 0 ms)
- 页面:Chrome DevTools 的 Network 面板查看 TTFB、Transfer Size 与 Cache-Control 命中情况
- 缓存命中:Varnish 日志/统计(varnishstat)观察 cache_hit/miss;应用侧记录 Redis/Memcached 命中率
- 注意事项
- 强一致数据(如价格、库存)避免或缩短缓存;为可缓存内容设置合理 Cache-Control / Expires
- 变更网络/DHCP 后,确保 /etc/resolv.conf 的本地 DNS 写入策略稳定(如由 resolvconf 或 systemd-resolved 管理时保持一致)
- 启用压缩(Brotli/Gzip)时注意 CPU 与兼容性权衡;优先使用 Brotli 获取更高压缩率