zoukankan      html  css  js  c++  java
  • Nginx 用分片提示缓存效率基于range协议

    107

    slice 模块

    Syntax:slice size;
    Default: slice 0;

    Context:httpserverlocation

    功能:通过range协议将大文件分解多个小文件,更好的用缓存为客户端的range协议服务

    模块:--with-http_slice_module

    location / {
        slice             1m;
        proxy_cache       cache;
        proxy_cache_key   $uri$is_args$args$slice_range;
        proxy_set_header  Range $slice_range;
        proxy_cache_valid 200 206 1h;
        proxy_pass        http://localhost:8000;
    }

     下游服务器代码示列

     server {
            listen       8080;
            server_name  shop**.com.cn;
            location / {
    
            root html;
                    proxy_cache two;
                    proxy_cache_valid 200 206 1m;
                    proxy_pass http://192.168.0.51:8012; #代理到上游服务器
            }
    }

    上游服务器代码示列  在html里有个大文件

    server {
                    listen 8012;
                    default_type text/plain;
                    root html;
                  
                    location / {
    
                    }
    }

    请求示列

    curl -r 10000-10010 http://shop**.com.cn:8080/step -I //-r 表示启用range

    返回示列

    HTTP/1.1 206 Partial Content
    Server: openresty/1.13.6.2
    Date: Fri, 15 Mar 2019 10:07:02 GMT
    Content-Type: text/plain
    Content-Length: 11 #获取的实际数量 因为 10000-10010 长度是11
    Connection: keep-alive
    Last-Modified: Fri, 08 Mar 2019 02:13:42 GMT
    Vary: Accept-Encoding
    ETag: "5c81cfd6-281c558"
    Content-Range: bytes 10000-10010/42059096 #这里会看到总量与取量

     但是有个问题,如果用户并发请求缓存的话会影响性能 一般用多线程并且使用range协议的话

     proxy_cache_path data/tmpcache levels=2:2 keys_zone=two:10m loader_threshold=300
                         loader_files=200 max_size=200m inactive=1m;
      server {
            listen       8080;
            server_name  shop**.com.cn;
            location / {
    
            root html;
                    slice 1m;
                    proxy_cache_key $uri$is_args$args$slice_range;
                    proxy_set_header Range $slice_range; #这里必须要加range协议到头部 而且需要加范围值
                    proxy_cache two;
                    proxy_cache_valid 200 206 1m;
                    proxy_pass http://192.168.0.51:8012;
        }
    }
  • 相关阅读:
    CH和CN图标去除及语言栏变短
    vim命令学习总结
    《Applications=Code+Markup》读书札记(2)——创建一个简单的 WPF 程序的代码结构及关于 Window 实例位置设置问题
    linux 开机时自动挂载分区
    Windows/linux双系统的时间修改问题
    关于RHEL6.1你可能想知道的那点事
    C语言的重要概念
    sprintf你知道多少
    《Applications=Code+Markup》读书札记(1)——一个简单的 WPF 程序
    Linux命令——tar
  • 原文地址:https://www.cnblogs.com/jackey2015/p/10518305.html
Copyright © 2011-2022 走看看