我正在使用Jetty GzipHandler
,它的工作方式似乎很奇怪:它只压缩已经压缩的文件。
我的整个计划是
GzipHandler gzipHandler = new GzipHandler();
gzipHandler.setHandler(myHandler);
server.setHandler(gzipHandler);
浏览器(铬)总是发送一个包含
Accept-Encoding:gzip,deflate,sdch
所以根据文件
GZIP这个处理程序将gzip响应的内容,如果:
这对两个人都有好处。我只是不确定path
部分,但是没有指定任何部分,我希望两者都能工作,或者两者都不起作用。
我用window.location.reload(true)
来强制重新装填。标题相当长,所以我要链接它们:css和png。
我试过设置一些属性,但没有成功。如果我找到jetty-servlets-9.1.3.v20140225-sources.jar
,我将调试它。问题是:为什么GzipHandler
决定只压缩压缩的文件?它是完全确定的:jpg
和png
被压缩(不管有多小),没有其他文件可以压缩。
更新
通过setMimeTypes
,我可以排除这些图像。我调试了它,我仍然不知道为什么其他静态资源从未被压缩。我再次检查了myHandler
是否一致地对待它们(它们都直接从预先计算的Map<String, byte[]>
中得到服务)。
发布于 2014-08-05 04:34:59
我们可以使用GzipFilter并实现这一结果。GzipFilter的Jetty文档提供了许多细节支持的参数列表。若要以编程方式启用它,请使用把这个问题提出来。
GzipFilter基本上是一个服务器端过滤器,在处理压缩需求方面非常有效。
样本滤波器配置
<filter>
<filter-name>GZipFilter</filter-name>
<display-name>Jetty's GZip Filter</display-name>
<description>Filter that zips all the content on-the-fly</description>
<filter-class>org.mortbay.servlet.GzipFilter</filter-class>
<init-param>
<param-name>mimeTypes</param-name>
<param-value>text/html</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>GZipFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
发布于 2016-03-08 07:13:15
下面是如何在Jetty9.3.7中配置GzipHandler:
GzipHandler gzipHandler = new GzipHandler();
gzipHandler.setIncludedMimeTypes("text/html", "text/plain", "text/xml",
"text/css", "application/javascript", "text/javascript");
gzipHandler.setHandler(myHandler);
handlerList.addHandler(gzipHandler);
在这种情况下,myHandler
是ResourceHandler
的一个实例。默认情况下,Gzip Handler只使用200范围内的响应代码对GET
请求进行Gzip响应。
发布于 2018-12-16 18:27:24
对于下一个用户,下面是如何启用请求解压缩,其中handler
是扩展org.eclipse.jetty.server.handler.AbstractHandler
的一个类。请求解压缩的重要部分是includeMethods
(默认为GET
)和inflateBuffer
(需要大于0,但默认为0)。“守则”:
//create server using given threadpool
Server server = new Server(8080);
GzipHandler gzipHandler = new GzipHandler();
gzipHandler.setIncludedMethods("PUT", "POST", "GET");
gzipHandler.setInflateBufferSize(2048);
gzipHandler.setHandler(handler);
server.setHandler(gzipHandler);
server.start();
server.join();
https://stackoverflow.com/questions/24521426
复制