Skip to content

rm-hull/ring-gzip-middleware

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ring-gzip-middleware Build Status

Gzips Ring responses for user agents which can handle it.

Usage

Apply the Ring middleware function ring.middleware.gzip/wrap-gzip to your Ring handler, typically at the top level (i.e. as the last bit of middleware in a -> form).

Installation

Add [rm-hull/ring-gzip-middleware "0.1.7"] to your Leingingen dependencies.

Compression of seq bodies

In JDK versions <=6, java.util.zip.GZIPOutputStream.flush() does not actually flush data compressed so far, which means that every gzip response must be complete before any bytes hit the wire. While of marginal importance when compressing static files and other resources that are consumed in an all-or-nothing manner (i.e. virtually everything that is sent in a Ring response), lazy sequences are impacted negatively by this. In particular, long-polling or server-sent event responses backed by lazy sequences, when gzipped under <=JDK6, must be fully consumed before the client receives any data at all.

So, this middleware does not gzip-compress Ring seq response bodies unless the JDK in use is 7+, in which case it takes advantage of the new flush-ability of GZIPOutputStream there.

License

Copyright (C) 2010 Michael Stephens and other contributors.

Distributed under an MIT-style license (see LICENSE for details).

Bitdeli Badge

About

Ring gzip encoding middleware

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Clojure 100.0%