En una aplicación Compojure en la que estoy trabajando, tengo un adaptador Ring/Jetty basado en ring-jetty-adapter que configura programáticamente Jetty para usar un GzipHandler para gzip contenido dinámicamente.
(defn- configurator [server ring-handler]
(.setHandler server
(doto (new HandlerCollection)
(.addHandler (doto (new GzipHandler)
(.setHandler (proxy-handler ring-handler))
(.setMimeTypes "text/html,text/plain,text/xml,application/xhtml+xml,text/css,application/javascript,text/javascript,image/svg+xml")))
(.addHandler (doto (new RequestLogHandler) (.setRequestLog (NCSARequestLog.)))))))
Esta función toma una instancia Server y mi manejador de anillo y lo pone al día con algunos controladores. Tenga en cuenta que el GzipHandler
es un HandlerWrapper
, por lo que toma mi controlador de anillo (proxy) y lo delega. También agrego un controlador de registro que se ejecutará después del controlador de timbre (empaquetado gzip).
Echa un vistazo a complete working version.