温馨提示×

centos缓存如何优化网站用户体验

小樊
44
2025-12-11 10:18:27
栏目: 云计算

CentOS 缓存优化提升网站用户体验

一 整体思路与分层策略

  • 从用户到服务器,建议分层构建缓存:浏览器缓存(减少往返)、反向代理/页面缓存(降低源站压力)、应用层缓存(减少计算与数据库访问)、系统层缓存(提升文件与内核命中率)。
  • 配合压缩与连接复用,可显著降低首屏时间与整体延迟,提升交互流畅度与稳定性。

二 浏览器与协议层优化

  • 启用并配置 mod_expires 设置资源过期时间,结合 mod_headers 输出 Cache-Control,让浏览器强缓存可缓存资源,协商缓存用于易变内容。
  • 启用 mod_deflate 进行 Gzip/Brotli 压缩,减少传输体积,加快首包到达时间。
  • 开启 KeepAlive 复用 TCP 连接,减少握手与慢启动开销。
  • 示例(Apache,建议写入 /etc/httpd/conf.d/cache.conf 或虚拟主机配置):
    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 image/gif                "access plus 1 year"
      ExpiresByType text/html                "access plus 1 hour"
    </IfModule>
    
    <IfModule mod_headers.c>
      Header set Cache-Control "public, max-age=31536000" env=!NO_CACHE
      Header set Cache-Control "no-cache, must-revalidate" env=NO_CACHE
    </IfModule>
    
    <IfModule mod_deflate.c>
      AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
    </IfModule>
    
    KeepAlive On
    MaxKeepAliveRequests 100
    KeepAliveTimeout 5
    
    修改后执行:sudo systemctl restart httpd 生效。

三 反向代理与页面缓存

  • 使用 Varnish 作为反向代理缓存,缓存整页或片段,显著降低源站 CPU/数据库压力,提升 TTFB 与并发能力。
  • 示例(Varnish 6,默认端口 6081,后端 127.0.0.1:80):
    backend default {
      .host = "127.0.0.1";
      .port = "80";
    }
    
    sub vcl_recv {
      if (req.method == "PURGE") {
        return (purge);
      }
      return (hash);
    }
    
    sub vcl_backend_response {
      set beresp.ttl = 120s;
      set beresp.grace = 60s;
    }
    
    启动:sudo systemctl start varnish && sudo systemctl enable varnish(配合 systemd 或传统方式设置监听端口与后端)。
  • 如采用 Nginx,可使用 proxy_cache 缓存后端动态内容:
    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 {
        location / {
          proxy_cache my_cache;
          proxy_pass http://127.0.0.1:8080;
          proxy_cache_valid 200 302 10m;
          proxy_cache_valid 404 1m;
        }
      }
    }
    
    以上可显著缩短响应时间并提升高峰并发下的稳定性。

四 应用层缓存

  • PHP 启用 OPcache(字节码缓存),减少脚本编译开销,直接提升页面渲染速度:
    [opcache]
    zend_extension=opcache.so
    opcache.enable=1
    opcache.memory_consumption=128
    opcache.interned_strings_buffer=8
    opcache.max_accelerated_files=4000
    opcache.revalidate_freq=60
    opcache.fast_shutdown=1
    
  • 使用 Memcached/Redis 做数据对象缓存(查询结果、会话、片段),降低数据库压力:
    • 安装与启动:sudo yum install memcached && sudo systemctl start memcached && sudo systemctl enable memcached
    • PHP 扩展:sudo yum install php-pecl-memcached(或 php-pecl-redis 搭配 Redis)
    • 应用侧以键过期策略缓存热点数据,命中则直接返回,未命中回源计算并写回缓存。
  • 如使用 PHP-FPM,结合业务并发调整进程模型与上限,减少排队与上下文切换:
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    pm.max_requests = 500
    
    以上措施可显著缩短后端处理时间,提升整体吞吐与稳定性。

五 系统与文件系统层优化

  • 适度调整内核与文件系统参数,提升文件与元数据缓存命中率,减少磁盘 I/O:
    • 查看与调整脏页阈值与 VFS 缓存压力:
      # 查看
      cat /proc/sys/vm/dirty_ratio
      cat /proc/sys/vm/dirty_background_ratio
      cat /proc/sys/vm/vfs_cache_pressure
      
      # 示例:放宽脏页回写阈值,降低 VFS 回收倾向(请结合内存与负载评估)
      echo 40 > /proc/sys/vm/dirty_ratio
      echo 10 > /proc/sys/vm/dirty_background_ratio
      echo 50 > /proc/sys/vm/vfs_cache_pressure
      
      # 持久化
      echo "vm.dirty_ratio=40" >> /etc/sysctl.conf
      echo "vm.dirty_background_ratio=10" >> /etc/sysctl.conf
      echo "vm.vfs_cache_pressure=50" >> /etc/sysctl.conf
      sysctl -p
      
    • 对静态资源目录使用 noatime 挂载,减少元数据更新:
      mount -o remount,noatime /var/www
      
    • 不建议在生产环境手动清理页面缓存(如 echo 1 > /proc/sys/vm/drop_caches),仅在测试或异常时配合 sync 使用,以免影响稳定性与命中率。
  • 监控与迭代:结合业务指标(首屏时间、TTFB、缓存命中率、带宽、错误率)与系统指标(CPU、内存、I/O)持续评估与调优。

0