8. HTTP Compression

HTTP compression allows content to be compressed on the server before transmission to the client. For resources such as text this can significantly reduce the size of the response message, leading to reduced bandwidth requirements and download times.

Some content types such as zip files or gif images are already compressed and do not respond well to compression. In fact, attempting to compress them can increase the size of the response message and waste CPU time on the server.

Compression is particularly useful where secure SSL connections are used, because it reduces the amount of content that has to be encrypted on the server and decrypted by the client.

Two compression algorithms are commonly used - deflate and gzip. HTTP clients indicate their support of compression using the Accept-Encoding header as shown here:

Accept-Encoding: gzip, deflate

A server will only compress content for clients that support compression and will set the Content-Encoding header so that the client knows which algorithm to use when reading the response body:

Content-Encoding: gzip

If you look at the response message for a compressed page you will see that the response headers are in clear, uncompressed text and the HTML content is in a compressed binary format:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html
Content-Encoding: gzip
Content-Length: 1253
Date: Wed, 4 Oct 2004 12:00:00 GMT

[1253 bytes of binary compressed HTML data starts here]

Example 8

Question: How much difference did compression* make to each of the following?

 

A. This page HTML page?

 

B. This image (smallpic.jpg)?

 

Compressed JPG

 

 

(* if you are accessing this page through a proxy server it may remove compression)

 


 

Using HttpWatch with Example 8

To view the effect of HTTP compression on this page:

  1. Open the HttpWatch window by clicking on the HttpWatch icon on the toolbar
  2. Click on Record to start logging requests in HttpWatch
  3. Add a filter to capture only gzip compressed pages by adding a 'Response Headers Contain' condition with the value "gzip".
  4. Click on the Refresh this page button above
  5. You can see the raw response message by clicking on the Stream tab and the compression savings are displayed on the Content tab

<< Previous (7. Redirection)    Next >> (9. Chunked Encoding)