温馨提示×

ubuntu缓存如何提高网站访问速度

小樊
39
2025-12-22 02:07:13
栏目: 云计算

Ubuntu缓存优化提升网站访问速度

一 浏览器与CDN缓存

  • 设置强浏览器缓存:对图片、CSS、JS、字体等静态资源返回Cache-Control: public, max-age=31536000, immutable,可显著减少重复下载。Nginx示例:
    location ~* \.(js|css|png|webp|svg|woff2)$ {
        expires 365d;
        add_header Cache-Control "public, immutable";
        access_log off;
    }
    
  • 启用内容分发网络(CDN):将静态资源分发到全球边缘节点,缩短用户与服务器的物理距离;优先选择支持Brotli压缩的CDN,较Gzip压缩率可再提升约20%

二 反向代理与应用层缓存

  • Nginx代理缓存:缓存后端动态接口,降低数据库与后端压力。
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=dynamic_cache:100m max_size=10g inactive=24h use_temp_path=off;
    server {
        location /api/ {
            proxy_cache dynamic_cache;
            proxy_pass http://backend;
            proxy_cache_valid 200 302 10m;
            proxy_cache_lock on;
            proxy_cache_use_stale error timeout updating;
        }
    }
    
  • 静态文件句柄缓存:加速磁盘文件元数据与内容访问。
    open_file_cache max=10000 inactive=30s;
    open_file_cache_valid 60s;
    open_file_cache_min_uses 2;
    
  • 应用层对象缓存:使用RedisMemcached缓存热点数据(如查询结果、会话、配置)。Ubuntu安装示例:
    sudo apt-get install redis-server
    sudo apt-get install memcached
    
    在应用(如PHP、Python、Node.js)中配置连接与TTL策略,动态内容(如价格、库存)设置较短缓存时间。

三 PHP与数据库相关缓存

  • PHP OPcache:缓存已编译字节码,减少解释与加载开销。
    sudo apt-get install php-opcache
    sudo phpenmod opcache
    sudo systemctl restart apache2   # 或 php-fpm
    
    在php.ini中启用并合理设置:opcache.enable=1、opcache.memory_consumption、opcache.validate_timestamps(生产建议关闭并配合部署流程刷新)。
  • MySQL查询缓存:在数据库层开启/优化查询缓存(注意不同版本差异与锁争用),对读多写少场景有效。
  • 连接与会话缓存:使用Redis存储会话(如PHP的session.save_handler=redis),减少数据库写入与锁竞争。

四 系统与网络层缓存

  • DNS本地缓存:安装dnsmasq减少域名解析往返时间(首次解析通常30–60 ms,命中缓存后可降至**~2 ms**)。
    sudo apt-get install dnsmasq
    echo "prepend domain-name-servers 127.0.0.1;" | sudo tee -a /etc/dhcp/dhclient.conf
    echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
    sudo systemctl restart dnsmasq
    
    验证:dig example.com 两次,观察 Query time 明显下降。
  • 传输层与协议:启用Gzip/Brotli压缩、HTTP/2HTTP/3,并优化SSL会话缓存。
    gzip on; gzip_types text/plain application/json application/javascript; gzip_min_length 1024; gzip_comp_level 6;
    brotli on;
    listen 443 ssl http2;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
    ssl_protocols TLSv1.3 TLSv1.2;
    
  • TCP与文件描述符:适度增大最大文件描述符、优化本地端口范围TIME_WAIT复用,提升高并发下的连接处理能力。

五 进阶与注意事项

  • 内存文件系统tmpfs:将可丢失的缓存目录(如CMS生成的页面缓存)放入内存,加速读写(重启后数据消失,注意内存占用)。
    sudo mkdir -p /dev/shm/mysite-cache
    sudo mount --bind /dev/shm/mysite-cache /var/www/html/wp-content/cache
    
  • 系统缓存维护与调优:按需清理PageCache/Dentry/Inode(仅维护窗口使用,避免频繁操作影响性能),并适度降低vm.swappiness以减少换页。
    # 仅示例:维护时执行
    sync && echo 1 | sudo tee /proc/sys/vm/drop_caches   # PageCache
    sync && echo 2 | sudo tee /proc/sys/vm/drop_caches   # dentries/inodes
    sync && echo 3 | sudo tee /proc/sys/vm/drop_caches   # 全部
    sudo sysctl -w vm.swappiness=10
    
  • 变更与验证:每次调整配置后,使用浏览器开发者工具curl -Iab/wrkLighthouse进行性能对比;对CDN与代理缓存设置版本化URL/缓存键失效策略,避免用户看到过期内容。

0