HTTP Protocol: From 0.9 to HTTP/3

· Priya Sharma · 10 min read

The HTTP protocol (Hypertext Transfer Protocol) is the communication standard that powers the World Wide Web — the language that browsers and servers use to exchange web pages, images, APIs, and every other piece of content online. From its humble beginnings as a one-line protocol created by Tim Berners-Lee in 1991, HTTP has evolved through five major versions, each addressing fundamental performance and security limitations. Understanding HTTP's evolution is critical for CDN optimization because every version change has reshaped how content is delivered at the edge.

How Did HTTP Begin?

In 1989, Tim Berners-Lee, a British computer scientist working at CERN (the European Organization for Nuclear Research), proposed a system for sharing research documents across the internet. His proposal included three innovations that defined the web:

The first version, HTTP/0.9 (1991), was astonishingly simple. It supported only a single method — GET — and the entire protocol exchange looked like this:

GET /index.html
(server returns the HTML document and closes the connection)

No headers, no status codes, no content types. Each request opened a new TCP connection, received the response, and the connection closed. This simplicity was deliberate: Berners-Lee optimized for adoption, not performance.

What Changed in HTTP/1.0 and HTTP/1.1?

HTTP/1.0 (1996, RFC 1945) added the features we consider fundamental today:

Performance Comparison: Edge vs Origin Processing
Metric Edge Processing Origin Processing Improvement
Latency (p50)8–15 ms120–300 ms15–20x faster
Cache Hit Ratio85–95%N/AReduces origin load
TLS Handshake1–5 ms (nearby PoP)50–150 ms10–30x faster
Bandwidth Cost$0.01–0.04/GB$0.05–0.12/GB3–5x cheaper
Availability99.99% (multi-PoP)99.9% (single DC)10x fewer outages

But HTTP/1.0 retained a critical inefficiency: each request-response required its own TCP connection. Loading a web page with 10 images meant 11 separate TCP connections (1 for HTML + 10 for images), each with its own handshake overhead.

HTTP/1.1 (1997, RFC 2068, updated in RFC 2616) fixed this with persistent connections (keep-alive) — a single TCP connection could carry multiple request-response pairs sequentially. It also introduced:

HTTP/1.1 was remarkably durable. Despite being standardized in 1997, it remained the dominant protocol until 2015 — an 18-year reign during which the web transformed from simple text pages to rich, interactive applications.

HTTP Protocol Evolution — Each generation brought significant performance improvements, from 8-secon HTTP Protocol Evolution — From HTTP/0.9 (1991) to HTTP/3 (2022) HTTP Protocol Evolution HTTP/0.9 1991 • GET only • No headers • No status codes • HTML only HTTP/1.0-1.1 1996-1997 • Headers, status • Keep-alive • Cache-Control • Virtual hosting HTTP/2 2015 • Binary framing • Multiplexing • HPACK compress • Server push HTTP/3 2022 • QUIC transport • 0-RTT connect • No HOL blocking • Built-in TLS 1.3 Future 2025+ • Multipath QUIC • WebTransport • HTTP Datagrams • Capsule Protocol Performance Improvement per Generation ~8s load ~3s load (2x faster) ~1.5s load (5x faster) ~0.8s load (10x faster)
Figure 1: HTTP Protocol Evolution — Each generation brought significant performance improvements, from 8-second page loads to sub-second delivery

What Made HTTP/2 a Game-Changer?

HTTP/2 (2015, RFC 7540) was the most significant upgrade in HTTP's history, born from Google's experimental SPDY protocol. While HTTP/1.1 was a text-based protocol, HTTP/2 introduced a binary framing layer that fundamentally changed how data flows between client and server:

CDN providers were among the first to deploy HTTP/2 at scale, often bridging HTTP/2 connections with clients while using HTTP/1.1 to origin servers. This meant websites could benefit from HTTP/2 performance without modifying their origin infrastructure — the CDN handled the protocol translation transparently.

How Does HTTP/3 with QUIC Improve Performance?

HTTP/3 (2022, RFC 9114) represents a radical departure: it replaces TCP with QUIC as the transport protocol. QUIC (Quick UDP Internet Connections) was developed by Google engineer Jim Roskind starting in 2012 and standardized by the IETF in 2021.

Key improvements over HTTP/2:

CDN providers have aggressively adopted HTTP/3. As of 2025, Cloudflare, Fastly, and Akamai serve HTTP/3 on the majority of their edge traffic. The performance gains are most pronounced on mobile networks with higher latency and packet loss.

How Do CDN Cache-Control Headers Work?

HTTP headers are the primary mechanism for controlling CDN caching behavior. The most important headers include:

HeaderPurposeCDN Behavior
Cache-Control: max-age=3600Cache for 3600 secondsEdge serves cached copy for 1 hour
Cache-Control: s-maxage=86400Shared cache max ageCDN caches for 24h (overrides max-age for shared caches)
Cache-Control: no-cacheMust revalidate before servingCDN checks origin freshness on each request
Cache-Control: no-storeNever cacheCDN always fetches from origin
Cache-Control: stale-while-revalidate=60Serve stale while refreshingCDN serves expired copy while fetching fresh one
Vary: Accept-EncodingCache variants by encodingSeparate cache entries for gzip vs brotli

Deep understanding of these headers is essential for effective CDN configuration. Our Cache-Control headers deep dive covers advanced patterns including stale-if-error, surrogate headers, and CDN-specific extensions.

HTTP/1.1 vs HTTP/2 Multiplexing — HTTP/2 sends all resources simultaneously over one connection, eli HTTP/1.1 vs HTTP/2 Multiplexing — Connection efficiency comparison HTTP/1.1 vs HTTP/2: Connection Efficiency HTTP/1.1 — 6 Connections style.cssapp.js img1img3 img2img4 Idle gaps = wasted time HTTP/2 — 1 Connection style.css img1 img2 app.js img3 img4 font analytics All resources stream simultaneously Result: HTTP/2 loads pages 15-50% faster CDNs support HTTP/2 at the edge even when origins use HTTP/1.1
Figure 2: HTTP/1.1 vs HTTP/2 Multiplexing — HTTP/2 sends all resources simultaneously over one connection, eliminating idle gaps and redundant handshakes

What Is the Performance Difference Between HTTP Versions?

MetricHTTP/1.1HTTP/2HTTP/3
Connection SetupTCP + TLS: 3 RTTTCP + TLS: 2 RTTQUIC: 1 RTT (0-RTT repeat)
Head-of-Line BlockingYes (per connection)No (application), Yes (TCP)No (fully eliminated)
Header CompressionNoneHPACKQPACK
Concurrent Streams1 per connection (6 connections)100+ per connection100+ per connection
Connection MigrationNoNoYes (IP change survives)
Built-in EncryptionOptionalPractically requiredMandatory (TLS 1.3)
Typical Page Load~3.0s~1.5s~0.8s

External References

References & Standards: HTTP/2 specification · Cloudflare documentation