Details

    • Type: Improvement Improvement
    • Status: Open
    • Priority: Minor Minor
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: Future
    • Labels:
      None
    • Environment:
      Operating System: All
      Platform: All

      Description

      Pipelining is currently employed by Mozilla based browsers, which are reported
      to gain some performance from it.

        Activity

        Hide
        Roland Weber added a comment -

        This issue will be addressed by the HttpAsync component.

        Show
        Roland Weber added a comment - This issue will be addressed by the HttpAsync component.
        Hide
        Roland Weber added a comment -

        In order to enable pipelining in HttpClient, the connection management API and therefore HttpClient would have to be remodeled to a two-phase allocation of connections. First the connection is allocated for sending the request, then released for sending (unless there is an expect-continue handshake) and allocated for receiving the response. To avoid pointless sending of requests, the connection re-use strategy should make partial decisions based on the request alone, for example if there is a "connection: close" header. Authentication and secure tunnels add another layer of complexity to this problem.
        Many of the problems will have to be addressed in HttpAsync. Once we've learned how to handle pipelining there, we can attempt to bring it into the HttpClient.

        Show
        Roland Weber added a comment - In order to enable pipelining in HttpClient, the connection management API and therefore HttpClient would have to be remodeled to a two-phase allocation of connections. First the connection is allocated for sending the request, then released for sending (unless there is an expect-continue handshake) and allocated for receiving the response. To avoid pointless sending of requests, the connection re-use strategy should make partial decisions based on the request alone, for example if there is a "connection: close" header. Authentication and secure tunnels add another layer of complexity to this problem. Many of the problems will have to be addressed in HttpAsync. Once we've learned how to handle pipelining there, we can attempt to bring it into the HttpClient.
        Hide
        Oleg Kalnichevski added a comment -

        Actually, HttpCore NIO is fully HTTP pipelining capable. I just need to add ability to queue requests / responses to the default protocol handlers. So, we'll have a full-blown HTTP pipelining support in HttpCore 4.0

        Oleg

        Show
        Oleg Kalnichevski added a comment - Actually, HttpCore NIO is fully HTTP pipelining capable. I just need to add ability to queue requests / responses to the default protocol handlers. So, we'll have a full-blown HTTP pipelining support in HttpCore 4.0 Oleg
        Hide
        Jonathan Leibiusky added a comment -

        Are there any news on this? It seems like a really old issue.

        Show
        Jonathan Leibiusky added a comment - Are there any news on this? It seems like a really old issue.
        Hide
        Jakub Skoczen added a comment -

        Guys, what is the status of this? Has that been implemented the HttpCore already?

        Show
        Jakub Skoczen added a comment - Guys, what is the status of this? Has that been implemented the HttpCore already?
        Hide
        Oleg Kalnichevski added a comment -

        HTTP request pipelining is partially supported by the HttpCore server side components. I am planning to enhance request pipelining on the server side in 4.3 and possibly add support for request pipelining on the client side.

        Oleg

        Show
        Oleg Kalnichevski added a comment - HTTP request pipelining is partially supported by the HttpCore server side components. I am planning to enhance request pipelining on the server side in 4.3 and possibly add support for request pipelining on the client side. Oleg
        Hide
        Philippe Marsteau added a comment -

        Is there any update/plan to add HTTP 1.1 pipelining support anytime soon? Is this already part of HttpAsyncClient module?

        Show
        Philippe Marsteau added a comment - Is there any update/plan to add HTTP 1.1 pipelining support anytime soon? Is this already part of HttpAsyncClient module?
        Hide
        Oleg Kalnichevski added a comment -

        No immediate plans. It will need to be implemented in HttpCore first.

        Oleg

        Show
        Oleg Kalnichevski added a comment - No immediate plans. It will need to be implemented in HttpCore first. Oleg

          People

          • Assignee:
            Unassigned
            Reporter:
            Ortwin Glück
          • Votes:
            8 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

            • Created:
              Updated:

              Development