V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
sNullp
V2EX  ›  分享创造

测试下你部署的反向加速代理是否能正确处理反应速度很慢的 backend 吧

  •  
  •   sNullp ·
    sNullp · 2014-10-24 11:27:48 +08:00 · 3243 次点击
    这是一个创建于 3675 天前的主题,其中的信息可能已经有所发展或是发生改变。
    写了个故意以很慢速度返回 HTTP 内容的脚本。部署下面这个脚本到 localhost,然后给反代增加一个 domain (比如 test.test) 指向 localhost:6789。



    然后你就可以用 curl -vv -H "<<Your headers>>" 来测试你的加速反代了。

    注意:下面的例子中的正确行为是我猜测的,并不一定符合标准。每个例子中两个 curl 是在一起执行的(不是一个跑完了跑第二个)。

    例子1:
    第一个 curl:
    curl -vv test.test
    正确行为:脚本得到 GET 请求,开始慢慢返回。同时 curl 能立刻按行返回,不需要等到整个文件传输完成。
    第二个 curl:
    (等待几秒)curl -vv test.test
    正确行为:脚本并不会显示 Accept 到了新连接。前一个请求已经得到的数据应当立刻返回,之后两个 curl 同步按行返回新数据。

    例子2:
    第一个 curl:
    curl -vv test.test
    正确行为:脚本得到 GET 请求,开始慢慢返回。同时 curl 能立刻按行返回,不需要等到整个文件传输完成。
    第二个 curl:
    (等待几秒)curl -vv -H "Ranges: bytes=a-b" test.test
    正确行为:脚本并不会显示 Accept 到了新连接。应当正确返回 206 并且包含正确数据(可看 Content-Range 头)。如果 a 小于已传送的数据则已传送的数据应该立刻显示,否则将等待直到相应数据传输过来再显示。之后两个 curl 数据同步直到遇到 b。

    例子3:
    第一个 curl:
    curl -vv -H "Ranges: bytes=a-b" test.test
    正确行为:脚本得到 GET 请求,并且请求不应当包含 Ranges(反代应当请求整个文件)。同时 curl 会等待直到有效数据返回,不需要等到整个文件传输完成。
    第二个 curl:
    (等待几秒)curl -vv -H "Ranges: bytes=a-b" test.test
    正确行为:脚本并不会显示 Accept 到了新连接。应当正确返回 206 并且包含正确数据(可看 Content-Range 头)。如果 a 小于已传送的数据则已传送的数据应该立刻显示,否则将等待直到相应数据传输过来再显示。之后两个 curl 数据同步直到遇到 b。
    1 条回复    2014-10-24 22:09:44 +08:00
    sNullp
        1
    sNullp  
    OP
       2014-10-24 22:09:44 +08:00
    真是醉了。。这种纯技术贴居然连踩的都没有。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2511 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:50 · PVG 23:50 · LAX 07:50 · JFK 10:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.