【问题标题】:Netty ChannelUpstreamHandler and HTTP pipeliningNetty ChannelUpstreamHandler 和 HTTP 流水线
【发布时间】:2012-01-08 10:09:48
【问题描述】:

我在玩 Netty 示例 org.jboss.netty.example.http.snoop,我注意到 Firefox 执行 4 个请求导致创建 4 个 HttpRequestHandler 实例,Internet Explorer 8/9 执行 2 个请求导致创建 2 个 HttpRequestHandler 实例。

我认为这是由于 HTTP 1.1 管道,但是即使更改了 FireFox 的 network.http.pipelining.* 键和 IE 的 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings 注册表项,Netty 的行为方式也相同。

我的问题是,这是预期的和正确的,还是我遗漏了什么?是否可以配置 Netty 以丢弃后续的幂等请求,或者这最终必须由 HttpRequestHandler 实现?

【问题讨论】:

    标签: http netty pipelining


    【解决方案1】:

    您应该打印出路径以找出 FF 请求的内容。我很确定它是 favicon.ico,它被多次请求(重试机制),因为 Snoop 示例发送的格式无效。

    编辑。我验证了,确实是favicon,请求了3次:

    Thread[New I/O server worker #1-3,5,main] - [id: 0x57c52e72, /0:0:0:0:0:0:0:1:63056 => /0:0:0:0:0:0:0:1:8080] RECEIVED: DefaultHttpRequest(chunked: false) GET / HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Connection: keep-alive
    Thread[New I/O server worker #1-3,5,main] - GET
    Thread[New I/O server worker #1-3,5,main] - /
    
    Thread[New I/O server worker #1-3,5,main] - [id: 0x57c52e72, /0:0:0:0:0:0:0:1:63056 => /0:0:0:0:0:0:0:1:8080] RECEIVED: DefaultHttpRequest(chunked: false) GET /favicon.ico HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0 Accept: image/png,image/*;q=0.8,*/*;q=0.5 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Connection: keep-alive
    Thread[New I/O server worker #1-3,5,main] - GET
    Thread[New I/O server worker #1-3,5,main] - /favicon.ico
    
    Thread[New I/O server worker #1-3,5,main] - [id: 0x57c52e72, /0:0:0:0:0:0:0:1:63056 => /0:0:0:0:0:0:0:1:8080] RECEIVED: DefaultHttpRequest(chunked: false) GET /favicon.ico HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Connection: keep-alive
    Thread[New I/O server worker #1-3,5,main] - GET
    Thread[New I/O server worker #1-3,5,main] - /favicon.ico
    
    Thread[New I/O server worker #1-3,5,main] - [id: 0x57c52e72, /0:0:0:0:0:0:0:1:63056 => /0:0:0:0:0:0:0:1:8080] RECEIVED: DefaultHttpRequest(chunked: false) GET /favicon.ico HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Connection: keep-alive
    Thread[New I/O server worker #1-3,5,main] - GET
    Thread[New I/O server worker #1-3,5,main] - /favicon.ico
    

    【讨论】:

    • 我认为这是 FF 中的一个错误,因为 FF 在最后两个请求中请求带有 Accept-hreader 设置为 text/html,application/xhtml+xml,application/xml 的网站图标。有人有更多信息吗?
    • Japer - 确认;确实很奇怪,FF 请求了 3 次 favicon,Chrome 和 IE 对一个 favicon 请求很满意 :)。
    猜你喜欢
    • 2018-11-25
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 2013-05-15
    • 2011-01-25
    • 2011-03-18
    • 2011-07-04
    • 1970-01-01
    相关资源
    最近更新 更多