温馨提示×

ubuntu缓存如何加速网站访问

小樊
42
2025-12-29 21:00:54
栏目: 云计算

Ubuntu缓存加速网站访问的实用方案

一 分层缓存总体思路

  • DNS解析缓存:减少域名解析往返时间(RTT),适合首次访问与频繁跳转场景。
  • 页面与对象缓存:在服务器侧或反向代理侧缓存HTML片段、接口与静态资源,降低后端负载与数据库压力。
  • 应用层数据缓存:缓存数据库查询结果、会话与计算结果,提升动态站点吞吐。
  • 边缘缓存与传输优化:借助CDNBrotli/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 面板查看 TTFBTransfer SizeCache-Control 命中情况
    • 缓存命中:Varnish 日志/统计(varnishstat)观察 cache_hit/miss;应用侧记录 Redis/Memcached 命中率
  • 注意事项
    • 强一致数据(如价格、库存)避免或缩短缓存;为可缓存内容设置合理 Cache-Control / Expires
    • 变更网络/DHCP 后,确保 /etc/resolv.conf 的本地 DNS 写入策略稳定(如由 resolvconf 或 systemd-resolved 管理时保持一致)
    • 启用压缩(Brotli/Gzip)时注意 CPU 与兼容性权衡;优先使用 Brotli 获取更高压缩率

0