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;
        }
    }
  • 相关阅读:
    Office转SWF的一些感想(Office2007和Office2010)
    数据库字段为日期类型时
    C#实现office文档转换为PDF格式
    C#.net word excel powerpoint (ppt) 转换成 pdf 文件
    Servlet基础
    Android加速度传感器实现“摇一摇”,带手机振动
    android完全退出应用程序
    【安卓笔记】作为内部类的广播接收者
    Android中使用广播机制退出多个Activity
    [Android] ImageView.ScaleType设置图解
  • 原文地址:https://www.cnblogs.com/jackey2015/p/10518305.html
Copyright © 2011-2022 走看看