Clojure 如何在Jetty中以编程方式设置gzip?
我正在使用Noir和clojure(使用Jetty)编写一个web应用程序。Jetty有两种使用gzip的方法,一种用于静态,另一种用于动态,如中所述。我想同时启用静态和动态gzip,但我们的项目不使用web.xml文件,也不想启动Clojure 如何在Jetty中以编程方式设置gzip?,clojure,jetty,embedded-jetty,Clojure,Jetty,Embedded Jetty,我正在使用Noir和clojure(使用Jetty)编写一个web应用程序。Jetty有两种使用gzip的方法,一种用于静态,另一种用于动态,如中所述。我想同时启用静态和动态gzip,但我们的项目不使用web.xml文件,也不想启动 如何通过编程将jetty设置为使用gzip(即没有web.xml)?请参见此处的startServer方法: jetty广泛用于测试,因此人们需要的大多数嵌入式场景已经存在于单元测试中的某个地方,当然找到它们可能有点问题:)在我正在开发的一个Compojure应用
如何通过编程将jetty设置为使用gzip(即没有web.xml)?请参见此处的startServer方法:
jetty广泛用于测试,因此人们需要的大多数嵌入式场景已经存在于单元测试中的某个地方,当然找到它们可能有点问题:)在我正在开发的一个Compojure应用程序中,我有一个环形/jetty适配器,根据该适配器以编程方式配置jetty以动态使用to-gzip内容
(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.)))))))
此函数获取一个实例和我的环处理程序,并使用一些处理程序对其进行设置。请注意,gzip处理程序
是一个HandlerWrapper
,因此它接受我的(代理的)环处理程序并委托给它。我还添加了一个日志处理程序,它将在(gzip包装的)环处理程序之后执行
看看这本书