nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > Nginx缓存服务端代理客户端

Nginx缓存在服务端 代理和客户端的区别深入探索

作者:bug生产者

这篇文章主要介绍了Nginx缓存在服务端 代理和客户端的区别深入探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Nginx缓存

一般情况下系统用到的缓存有三种

[ ] 什么时候会出现304? 服务器响应中包含有ETaglast-modified,浏览器下次去请求时会发送这两个标签,直接返回304 Not Modified来告诉浏览器该资源没有修改,不需要从服务器获取最新的,浏览器就会直接使用本地缓存

Nginx使用的缓存属于代理缓存

cache配置

Nginx通过proxy_cache来实现缓存。Buffer(缓冲)主要用于传输效率不同步或者优先级不相同的设备之间传输数据,通过对一方数据进行临时存放,在统一发送的方式传递给另一方,以降低进程间的等待时间;Cache(缓存)主要用于将硬盘上已有的数据在内存中建立缓存数据,提高数据的访问效率。

而proxy_cache只有在Proxy Buffer机制开启的情况下Proxy Cache的配置才会发挥作用

相关配置

示例

http {
    proxy_cache_path    /var/www/cache #缓存地址
                        levels=1:2 #目录分级
                        keys_zone=test_cache:10m #开启的keys空间名字:空间大小(1m可以存放8000个key)
                        max_size=10g #目录最大大小(超过时,不常用的将被删除)
                        inactive=60m #60分钟内没有被访问的缓存将清理
                        use_temp_path=off; #是否开启存放临时文件目录,关闭默认存储在缓存地址
    server {
            # 使用缓存
        location / {
            proxy_cache test_cache;    #开启缓存对应的名称,在keys_zone命名好
            proxy_cache_valid 200 304 12h;    #状态码为200 304的缓存12小时
            proxy_cache_valid any 10m;    #其他状态缓存10分钟
            proxy_cache_key $host$uri$is_args$args;    #设置key值
            add_header Nginx-Cache "$upstream_cache_status";
        }
        #不使用缓存
        if ($request_uri ~ ^/(login|register) ) {    #当请求地址有login或register时
            set $nocache = 1;    #设置一个自定义变量为true
            }
            location / {
            proxy_no_cache $nocache $arg_nocache $arg_comment;
            proxy_no_cache $http_pragma $http_authoriztion;
            }
    }
}

expires配置

location ~ .*.(jpg|jpeg|gif|png)$ {
    # 设置图片缓存过期时间
    expires 1d;
} 
# 匹配静态目录
location ~^ /(|css|js) / {
    expires 2h;
}

响应会返回给浏览器Expires属性,展示的是过期时间,之后再次请求该资源时,如果没有超过响应返回的Expires时,则不需要向服务器访问,直接从缓存中获取

静态资源缓存

# 缓存zone levels表示缓存层级以及目录位数 keys_zone表示缓存内存大小 inactive有效期 max_size所占用的最大磁盘大小
proxy_cache_path /data/nginx/cache_ad levels=1:2 keys_zone=cache_cache_ad:100m inactive=7d max_size=200m;
server {
    location / {
      # 缓存zone
      proxy_cache cache_ad;
      # 缓存key  进行md5
      proxy_cache_key $host$uri$is_args$args;
      # 什么情况下进行缓存存储
      proxy_cache_valid 200 304 12h;
    }
}

以上就是Nginx缓存在服务端 代理和客户端的区别深入探索的详细内容,更多关于Nginx缓存服务端代理客户端的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文