Nginx 缓存解决方案

假设某个App首页前端静态资源,没有使用代理缓存,每次登陆以及其他页面操作回到首页,都需要重新全部加载静态资源,导致明显卡顿,用户体验差。代理缓存是解决该问题的方法之一。

静态资源缓存

静态文件缓存,可以减少带宽的损耗。上游服务器的文件可以缓存到Nginx,Nginx的文件也可以缓存到浏览器。

浏览器缓存:
加速用户访问,提升单个用户(浏览器访问者)体验,缓存在本地。
Nginx缓存:

  • 缓存在nginx端,提升所有访问到nginx这一端的用户体验。
  • 提升访问上游(upstream)服务器的速度。
  • 用户访问仍然会产生请求流量。

1 控制浏览器缓存

浏览器主要是控制缓存过期时间,可以不设置。

location /files {
    alias /home/imooc;
    # expires 10s; #10s后浏览器缓存失效
    # expires @22h30m; #到22:30失效
    # expires -1h; #在这之前1h已经过期
    expires epoch; #相当于no-cache
    # expires off; #关闭Nginx缓存,使用浏览器默认
    # expires max; #最大时间,永不过期
    # add_header Cache-Control no-store;
}

浏览器F12
Cache-Control: max-age=10
Date: Sun, 03 Jan 2021 05:35:04 GMT
Expires: Sun, 03 Jan 2021 05:35:14 GMT

2 设置Nginx反向代理缓存

upstream cluster {
    server 192.168.233.130:8080;
    server 192.168.233.130:8088;
}

proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=1m use_temp_path=off;

# 配置server
server {
    listen      80;
    server_name     www.awecoder.com;
    
    location / {
        proxy_pass  http://cluster;

        # 启动缓存
        proxy_cache mycache;
        # 针对200和304状态码缓存时间为8小时
        proxy_cache_valid   200 304 8h;
    }
}
  • proxy_cache_path 设置缓存目录
  • keys_zone 设置共享内存以及占用空间大小,mycache是缓存名字
  • max_size 设置缓存大小
  • inactive 超过此时间则被清理
  • use_temp_path 临时目录,使用后会影响nginx性能
  • levels 是否创建二级文件夹
posted @ 2021-01-31 23:31  Awecoder  阅读(940)  评论(0编辑  收藏  举报