gpt4 book ai didi

clojure - 如何以编程方式在 Jetty 中设置 gzip?

转载 作者:行者123 更新时间:2023-12-04 15:14:22 26 4
gpt4 key购买 nike

我正在使用 Noir 和 clojure 编写一个使用 Jetty 的网络应用程序。 Jetty 有两种使用 gzip 的方式,一种是静态的,一种是动态的,它们在 https://stackoverflow.com/a/9113129/104021 中有描述。 .我想同时打开静态和动态 gzipping,但是我们的项目不使用 web.xml 文件,并且不想启动。

如何以编程方式设置 jetty 以使用 gzip(即没有 web.xml)?

最佳答案

在我正在开发的 Compojure 应用程序中,我有一个基于 ring-jetty-adapter 的 Ring/Jetty 适配器它以编程方式将 Jetty 配置为使用 GzipHandler动态压缩内容。

(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.)))))))

这个函数需要一个 Server实例和我的 Ring 处理程序,并使用一些处理程序对其进行设置。请注意 GzipHandlerHandlerWrapper ,所以它需要我的(代理的)环处理程序并委托(delegate)给它。我还添加了一个日志处理程序,它将在(gzip 包装的)环处理程序之后执行。

查看 complete working version .

关于clojure - 如何以编程方式在 Jetty 中设置 gzip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10145891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com