Netty ChannelUpstreamHandler и конвейеризация HTTP

Я играл с примером Netty org.jboss.netty.example.http.snoop и заметил, что Firefox выполняет 4 запроса, приводящих к созданию 4 экземпляров HttpRequestHandler, а Internet Explorer 8/9 выполняет 2 запроса, ведущих к созданию 2 экземпляров HttpRequestHandler.

Я думаю, это связано с конвейерной обработкой HTTP 1.1, однако даже после изменения ключей network.http.pipelining.* для FireFox и записей реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings для IE Netty ведет себя так же.

Мой вопрос в том, является ли это ожидаемым и правильным, или я что-то упустил, и можно ли настроить Netty на отбрасывание последующих идемпотентных запросов, или это должно быть реализовано HttpRequestHandler в конечном итоге?


person Cristian Malinescu    schedule 29.11.2011    source источник


Ответы (1)


Вы должны распечатать путь, чтобы узнать, что запрашивает FF. Я почти уверен, что это favicon.ico, который запрашивается несколько раз (механизм повторных попыток) из-за того, что пример Snoop отправляет недопустимый формат.

редактировать. Я проверил это, и это действительно фавикон, который запрашивается три раза:

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
person Japer D.    schedule 29.11.2011
comment
Я думаю, что это ошибка в FF, поскольку FF запрашивает значок значка с Accept-hreader, установленным в text/html,application/xhtml+xml,application/xml в последних двух запросах. Есть ли у кого-нибудь больше информации? - person Japer D.; 29.11.2011
comment
Джапер - подтвердил; действительно странно, FF запрашивает значок 3 раза, Chrome и IE довольны одним запросом значка :). - person Cristian Malinescu; 06.12.2011