ApacheCon NA 2013

Portland, Oregon

February 26th – 28th, 2013

Register Now!

Tuesday 1:30 p.m.–2:30 p.m.

SPDY in Apache Httpd

Matthew Steele

Track:
A Patchy Web
Audience level:
Intermediate

Description

SPDY is an augmentation of HTTP 1.1 that reduces page load times by using the network more efficiently, and is the IETF's starting point for HTTP 2.0. I'll discuss the design of mod_spdy, how it is able to support SPDY within Apache Httpd 2.2, and the difficulties (due to Httpd's design) that will have to be overcome if Httpd is ever to natively support HTTP 2.0 down the road.

Abstract

SPDY is an augmentation of HTTP 1.1 that reduces page load times by using the network more efficiently. It is now supported by the majority of major browsers and webservers (including Apache Httpd, using mod_spdy), and the IETF is planning to use SPDY as a starting point for the upcoming HTTP 2.0 standard.

Adding SPDY support to a server can greatly reduce page load times for clients using SPDY-compatible browsers (such as Firefox, Chrome, and Opera) with no other changes needed to the site itself. The SPDY protocol retains the same headers and request semantics of HTTP, but greatly improves on its performance via three major additional features: header compression, multiplexing, and server push. Header compression reduces the bandwidth cost of e.g. attaching large cookies to requests; server push saves on round-trip times by allowing the server to send critical subresources to the client without waiting to be asked for them; and multiplexing allows multiple concurrent requests to share a single TCP connection without suffering from head-of-line blocking. As it turns out, all of these can be implemented in Apache Httpd (and are implemented by mod_spdy), greatly reducing page load times for many sites, but multiplexing in particular is especially difficult due to Httpd's historical design.

I'll talk briefly about SPDY as a protocol -- its features, its current significance, and where it's going in the future -- and then move on to explain how mod_spdy is able to implement it within Apache Httpd, despite difficulties. I'll step through the design of mod_spdy at a high level, and discuss both the benefits of that design for site-owners, and also the drawbacks that come with it. Finally, I'll discuss what can be done in Httpd itself to help alleviate those drawbacks, and what may need to be done if Httpd is to have good support for HTTP 2.0 once that standard is completed and begins to be deployed.