温馨提示×

centos缓存如何提高页面渲染速度

小樊
48
2026-01-01 23:59:19
栏目: 智能运维

在 CentOS 上提升页面渲染速度的核心缓存策略


一 浏览器与协议层缓存

  • 启用并配置 mod_expires 设置资源过期时间,减少重复请求;启用 mod_headers 下发 Cache‑Control 公共缓存头;启用 mod_deflate 进行 Gzip/Brotli 压缩以降低传输体积。示例(Apache):
    LoadModule expires_module modules/mod_expires.so
    LoadModule headers_module modules/mod_headers.so
    LoadModule deflate_module modules/mod_deflate.so
    
    <IfModule mod_expires.c>
      ExpiresActive On
      ExpiresByType text/css        "access plus 1 year"
      ExpiresByType application/javascript "access plus 1 year"
      ExpiresByType image/jpeg     "access plus 1 year"
      ExpiresByType image/png      "access plus 1 year"
      ExpiresByType text/html      "access plus 1 hour"
    </IfModule>
    
    <IfModule mod_headers.c>
      Header set Cache-Control "public, max-age=31536000, immutable" env=!no-cache
    </IfModule>
    
    <IfModule mod_deflate.c>
      AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
    </IfIfModule>
    
    说明:对带指纹/版本号的静态资源设置长 max‑ageimmutable,对 HTML 设置较短时间以便内容更新及时生效。

二 反向代理与页面级缓存

  • Nginx 层缓存:使用 proxy_cache 缓存后端动态页面,用 fastcgi_cache 缓存 PHP‑FPM 输出,显著降低后端负载与时延。示例:
    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;
        }
      }
    }
    
  • Varnish:高性能 HTTP 加速器,适合高并发门户与 API。示例 VCL 片段(简化版):
    vcl 4.0;
    backend default { .host = "127.0.0.1"; .port = "8080"; }
    
    sub vcl_recv {
      if (req.http.Cookie ~ "PHPSESSID" || req.http.Authorization) { return (pass); }
      return (hash);
    }
    
    sub vcl_backend_response {
      if (bereq.http.Cookie ~ "PHPSESSID") { set beresp.uncacheable = true; return (deliver); }
      set beresp.ttl = 120s;
    }
    
    sub vcl_deliver {
      set resp.http.X-Cache = obj.hits > 0 ? "HIT" : "MISS";
    }
    
    提示:对登录态、个性化、带 Cookie 的请求走 pass,其余按 URL/参数哈希缓存。

三 应用层数据缓存

  • Memcached:适合缓存数据库查询结果、页面片段、会话等。安装与启动:
    sudo yum install memcached
    sudo systemctl enable --now memcached
    # 编辑 /etc/sysconfig/memcached 可按需调整 PORT/USER/MAXCONN/CACHESIZE
    
    PHP 示例:
    $m = new Memcached();
    $m->addServer('127.0.0.1', 11211);
    $key = 'page_home_1';
    $data = $m->get($key);
    if (!$data) {
      $data = buildPageData();         // 耗时操作
      $m->set($key, $data, 300);       // 缓存 5 分钟
    }
    render($data);
    
  • Redis:键值/哈希/有序集合更丰富,适合复杂对象与更高层缓存。安装与启动:
    sudo yum install redis
    sudo systemctl enable --now redis
    
    建议:读多写少的热点数据优先入缓存,设置合理 TTL,并在缓存失效时采用“后台刷新/互斥锁”避免雪崩。

四 静态资源与内容分发

  • 将图片、CSS、JS 等静态资源通过 CDN 分发,用户就近获取,显著降低首屏时间;同时结合浏览器长缓存与 ETag/Last‑Modified 做协商缓存。
  • 在 Web 服务器启用压缩(见第一节),并尽量合并/最小化资源,减少请求数与体积。

五 操作系统与临时文件缓存

  • 利用 tmpfs 将可丢失的缓存目录放入内存(如 /dev/shm),提升读/写速度。示例(将应用缓存目录放入内存):
    mkdir -p /dev/shm/myapp_cache
    chmod 1777 /dev/shm/myapp_cache
    mount --bind /dev/shm/myapp_cache /var/www/myapp/wp-content/cache
    
    注意:内存有限,务必设置合适的缓存失效与清理策略,避免 OOM;系统重启后 tmpfs 内容会丢失。

0