温馨提示×

centos缓存加速网站访问技巧

小樊
32
2025-12-13 09:55:35
栏目: 云计算

CentOS 缓存加速网站访问技巧

一 分层缓存架构与适用场景

  • 浏览器与 CDN 边缘缓存:对静态资源设置长 Cache‑Control,利用 CDN 将内容分发到离用户更近的节点,显著降低首包与往返时延。适用于图片、CSS、JS、字体、下载包等。
  • 反向代理层缓存:在 Nginx 使用 proxy_cache 或在 Varnish 做全页/片段缓存,适合高并发、命中率高的内容;对带身份态或隐私数据的请求走 pass
  • 应用层对象缓存:用 Memcached/Redis 缓存数据库查询结果、会话与通用计算结果,减轻后端负载。
  • 静态资源与压缩:启用 Gzip/Brotli 压缩、设置 Expires/ETag,减少传输体积与重复请求。
  • 操作系统与文件系统层:合理利用 Page Cache,并按需调整 内核参数tmpfs 提升 I/O 表现。

二 Nginx 与 Varnish 配置要点

  • Nginx 反向代理与页面缓存示例
    • 缓存路径与键区:
      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 {
          listen 80;
          server_name example.com;
          location / {
            proxy_pass http://backend;
            proxy_cache my_cache;
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 404 1m;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
          }
        }
      }
      
    • 静态资源长缓存(示例对图片/CSS/JS 设置 30 天):
      location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
        access_log off;
        add_header Cache-Control "public, max-age=2592000";
      }
      
  • Varnish 全页缓存示例(监听 6081,后端 127.0.0.1:8080
    • /etc/varnish/default.vcl(VCL 4.0+)
      vcl 4.0;
      backend default {
        .host = "127.0.0.1";
        .port = "8080";
      }
      acl purge {
        "localhost";
        "127.0.0.1";
      }
      sub vcl_recv {
        if (req.http.Cookie ~ "PHPSESSID" || req.http.Authorization) {
          return (pass);
        }
        if (req.method == "PURGE") {
          if (!client.ip ~ purge) { return (synth(403, "Forbidden")); }
          return (purge);
        }
        return (hash);
      }
      sub vcl_backend_response {
        if (bereq.http.Cookie ~ "PHPSESSID") {
          set beresp.uncacheable = true;
          return (deliver);
        }
        set beresp.grace = 30s;
      }
      sub vcl_deliver {
        set resp.http.X-Cache = obj.hits > 0 ? "HIT" : "MISS";
      }
      
    • 将 Nginx 作为后端或前端接入 Varnish(常见做法:Nginx 监听 80 反向代理到 127.0.0.1:6081,或 Nginx 8080 → Varnish 6081 → 后端)。
    • 启动与开机自启:
      sudo systemctl start varnish
      sudo systemctl enable varnish
      
    以上示例涵盖 proxy_cacheVarnish 的核心配置与关键命中策略。

三 应用层与数据库缓存

  • Memcached
    • 安装与启动:
      sudo yum install memcached -y
      sudo systemctl start memcached
      sudo systemctl enable memcached
      
    • PHP 扩展(以 PHP 7.4 为例,使用 Remi 源):
      sudo yum install php74-php-pecl-memcached -y
      sudo systemctl restart php74-php-fpm
      
    • 验证与监控:
      sudo yum install libmemcached-tools -y
      memcdump --servers=127.0.0.1:11211
      
    • WordPress 可选:将 object-cache.php 放入 wp-content/ 目录启用对象缓存,或在插件(如 W3 Total Cache)中选择 Memcached 作为后端。
  • Redis
    • 安装与启动:
      sudo yum install redis -y
      sudo systemctl start redis
      sudo systemctl enable redis
      
  • 数据库侧优化(以 MySQL 为例)
    • 合理设置 InnoDB 缓冲池 等内存参数,减少磁盘 I/O(示例值需结合内存容量与实例角色调整):
      [mysqld]
      innodb_buffer_pool_size = 1G
      
    以上步骤覆盖 Memcached/Redis 的安装、PHP 接入与 WordPress 场景的落地方式。

四 操作系统与文件系统层优化

  • 利用 Page Cache:Linux 会自动将频繁访问的文件缓存在内存中,通常无需额外配置即可受益。
  • 调整内核参数(/etc/sysctl.conf,持久化生效)
    • 脏页刷写阈值:控制内存中已修改但未落盘的数据比例,避免抖动。
      vm.dirty_ratio = 10
      vm.dirty_background_ratio = 5
      
    • VFS 缓存压力:数值越高越倾向回收 inode/dentry 缓存,通常保持中等水平。
      vm.vfs_cache_pressure = 50
      
    • 应用与观察:
      sudo sysctl -p
      free -h
      cat /proc/meminfo | grep "Cached"
      
  • 使用 tmpfs 加速可缓存的临时/热点文件(示例挂载 8G
    echo "tmpfs /var/www/html/file_cache tmpfs defaults,noatime,size=8G 0 0" | sudo tee -a /etc/fstab
    sudo mount -o remount /var/www/html/file_cache
    
    以上做法有助于提升 I/O 密集型站点的响应速度与稳定性。

五 CDN 加速与落地步骤

  • 选择 CDN 提供商(如 Cloudflare、Akamai、Amazon CloudFront),关注全球节点分布、稳定性与技术支持。
  • 在域名 DNS 将接入域名的 CNAME 指向 CDN 提供的加速域名
  • CDN 控制台 配置缓存规则:为静态资源设置长 Cache‑Control,为动态接口设置短 TTL 或不缓存,必要时配置 路径匹配/忽略参数/回源 Host
  • 配置 HTTPS/TLS:可在 CDN 侧申请与部署证书,统一证书管理与自动续期。
  • 监控与优化:使用 Pingdom、GTmetrix 等工具测试性能,依据命中率、首包时间、带宽与回源量持续调整缓存策略与目录/文件规则。

0