A small number of mobile applications still use HTTP 1.0. This early version of the HTTP protocol doesn't support improvements, like persistent TCP connections, that make HTTP 1.1 much more efficient to use.
This Best Practice Deep Dive looks at the improvements that were added in HTTP 1.1, discusses the issues faced by apps that use HTTP 1.0, and provides a recommendation to use HTTP 1.1.
Hypertext Transfer Protocol (HTTP) is a protocol used on the internet for distributed, collaborative, hypermedia information systems, and is the foundation of data communication for the World Wide Web.
It is a generic, stateless protocol that can be used for many tasks beyond its use for hypertext, such as name servers and distributed object management systems, through extension of its request methods, error codes, and headers.
HTTP 1.0 was officially introduced and recognized in 1996. The next version, HTTP 1.1 was officially released in January 1997, and improvements and updates to the specification were released in June 1999. The HTTP 1.1 specification is almost three times as long as the one for HTTP 1.0, reflecting an increase in complexity, clarity, and specificity.
The following, are some of the areas of improvement that were added in HTTP 1.1:
- Bandwidth optimization
- Network connection management
- Message transmission
- Internet address conservation
- Error notification
- Security, integrity, and authentication
- Content negotiation
Using HTTP 1.0 is extremely inefficient for a number of reasons. One significant reason that greatly impacts mobile applications is the older protocol's lack of support for persistent TCP connections. In HTTP 1.0, each TCP connection is responsible for only one object.
Even though HTTP 1.1 is the preferred standard for use with mobile applications, and replaced the HTTP 1.0 standard in 1997, there are still a small number of mobile applications using HTTP 1.0.
Best Practice Recommendation
The Best Practice Recommendation is to use HTTP 1.1 with pipelining. HTTP pipelining parallelizes HTTP requests within a TCP session. It's perfect for improving user experience in high latency environments, but it's important to note that HTTP pipelining requires implementation on both client and server.
For more information and best practice recommendations about HTTP pipelining, and managing persistent TCP connections, see Multiple Simultaneous TCP Connections.