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;
        }
    }
  • 相关阅读:
    Socket基本介绍和实际应用
    自定义流水布局(UICollectionViewFlowLayout的基本使用)
    UIMenuController 简单示例 (Swift)
    继续坚持
    获取手机信息(UIDevice、NSBundle、NSLocale)
    iOS 远程推送 根据后台推送内容的不同跳转指定页面
    定制多样式二维码
    二维码扫描和应用跳转
    iOS开发网络篇—Socket编程
    iOS开发中常用英语单词和句子整理(持续更新)
  • 原文地址:https://www.cnblogs.com/jackey2015/p/10518305.html
Copyright © 2011-2022 走看看