• nginx缓存


    开启缓存可以提高网站性能,减轻频繁访问数据,而给数据库带来的压力
    合理的缓存,还会减轻程序运算时,对CPU带来的压力
    http缓存设置——浏览器访问Nginx,浏览器会Cache
    nginx代理层缓存——Nginx 访问后端,Nginx 自己Cache
    1.http缓存设置
    Nginx提供了 expiresetagif-modified-since 指令来实现浏览器缓存控制
    expires让用户访问一次后,将数据缓存在用户的浏览器中
    expires的配置
    upstream nodejs {
        server 127.0.0.1:3002;
    }
    
    server {
        listen 3001;
        server_name 127.0.0.1;
        location / {
            proxy_pass      http://nodejs;
            gzip on;
            gzip_min_length 1k;
            gzip_buffers 4 16k;
            #gzip_http_version 1.0;
            gzip_comp_level 2;
            gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
            gzip_vary off;
            gzip_disable "MSIE [1-6].";
            expires   3m;
        }
    
    }

    开启缓存后第一次请求

     

    以后再请求

     

     2.nginx代理层缓存

    Nginx实现缓存是通过代理缓存pxory_cache
    常用的设置选项有
    (1)proxy_cache_path
      定义一个完整的缓存空间,指定缓存数据的磁盘路径、索引存放的内存空间以及一些其他参数,如缓存删除策略
      eg:
    proxy_cache_path /data/cache levels=1:2 keys_zone=nodejs:10m max_size=1G inactive=10m; 

      说明:

    levels:设置如何将缓存文件保存到文件系统

      如果未定义,则将缓存文件直接保存在定义的路径中。

      如果定义为1:2,则根据缓存文件的md5哈希将其保存在缓存路径的子目录中。

    keys_zone:用来为这个缓存区起名,并设置大小

      如上指定名为nodejs,供proxy_cache引用;10m就是内存空间的大小;

    max_size:指定最大缓存数据磁盘空间的大小

    inactive:在inactive指定的时间内,未被访问的缓存数据将从缓存中删除

      默认值为10分钟

      注:
        只能定义在http块上下文中
    (2)proxy_cache
      用来引用上面proxy_cache_path定义的缓存空间, 现时打开缓存功能
    (3)proxy_cache_valid
      设置不同响应代码的缓存时间
    eg:
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
    
        proxy_cache_path data/cache levels=1:2 keys_zone=nginx:50M max_size=2G  inactive=2h;
        proxy_cache_key    $host$request_uri;
    
        upstream nodejs {
            server 127.0.0.1:3002;
        }
    
        server {
            listen 3001;
            server_name 127.0.0.1;
            proxy_cache nginx;
            proxy_cache_valid  301 302 20m;
            proxy_cache_valid any 2m;
            location / {
                proxy_pass      http://nodejs;
                gzip on;
                gzip_min_length 1k;
                gzip_buffers 4 16k;
                #gzip_http_version 1.0;
                gzip_comp_level 2;
                gzip_types text/plain application/json application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
                gzip_vary off;
                gzip_disable "MSIE [1-6].";
                #缓存设置
                proxy_ignore_headers Set-Cookie Cache-Control;
                proxy_hide_header Cache-Control;
                proxy_hide_header Set-Cookie;
                proxy_set_header Host $proxy_host:$proxy_port;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                add_header X-Via $server_addr;
                add_header X-Upstream $upstream_addr;
                add_header  Nginx-Cache $upstream_cache_status;
            }
        }
    }

    http://127.0.0.1:3001/upload/layui.css

     刷新再访问

     说明:

      $upstream_cache_status变量用来显示缓存的状态

      MISS 未命中,请求被传送到后端

      HIT 缓存命中

      EXPIRED 缓存已经过期请求被传送到后端 

      UPDATING 正在更新缓存,将使用旧的应答  

      STALE 后端将得到过期的应答

     参考

  • 相关阅读:
    201920201学期20192407《网络空间安全专业导论》第一周学习总结
    JavaEEJSP详解
    JavaEEJSP指令
    JavaSE类与对象
    JavaSE基础知识
    JavaEEEL表达式
    JavaSE关键字
    JavaSE抽象类、内部类、接口
    JavaSE面向对象
    绪论
  • 原文地址:https://www.cnblogs.com/baby123/p/11984636.html
Copyright © 2020-2023  润新知