Class HttpStaticFileServerHandler

java.lang.Object
org.jboss.netty.channel.SimpleChannelUpstreamHandler
org.jboss.netty.example.http.file.HttpStaticFileServerHandler
All Implemented Interfaces:
ChannelHandler, ChannelUpstreamHandler

public class HttpStaticFileServerHandler extends SimpleChannelUpstreamHandler
A simple handler that serves incoming HTTP requests to send their respective HTTP responses. It also implements 'If-Modified-Since' header to take advantage of browser cache, as described in RFC 2616.

How Browser Caching Works

Web browser caching works with HTTP headers as illustrated by the following sample:
  1. Request #1 returns the content of /file1.txt.
  2. Contents of /file1.txt is cached by the browser.
  3. Request #2 for /file1.txt does return the contents of the file again. Rather, a 304 Not Modified is returned. This tells the browser to use the contents stored in its cache.
  4. The server knows the file has not been modified because the If-Modified-Since date is the same as the file's last modified date.
 Request #1 Headers
 ===================
 GET /file1.txt HTTP/1.1

 Response #1 Headers
 ===================
 HTTP/1.1 200 OK
 Date:               Tue, 01 Mar 2011 22:44:26 GMT
 Last-Modified:      Wed, 30 Jun 2010 21:36:48 GMT
 Expires:            Tue, 01 Mar 2012 22:44:26 GMT
 Cache-Control:      private, max-age=31536000

 Request #2 Headers
 ===================
 GET /file1.txt HTTP/1.1
 If-Modified-Since:  Wed, 30 Jun 2010 21:36:48 GMT

 Response #2 Headers
 ===================
 HTTP/1.1 304 Not Modified
 Date:               Tue, 01 Mar 2011 22:44:28 GMT