[英]How to enable the Gzip compression in jBoss EAP server
我正在使用 jBoss EAP 6.1 sevrer,我想在其中为我的 HTML、CSS 和 javaScript 文件启用 GZIP 压缩。
我对这种压缩技术完全陌生,任何人都可以向我推荐教程,或者可以直接给我一个步骤,以在 Jboss EAP 6.1 服务器上启用压缩。
除了这些,我还有以下疑问:
1)我是否需要压缩我工作区上的文件,或者如果我的 jboss 服务器将启用压缩,它会处理压缩,我只需要部署战争。
2) 当服务器响应我的请求时,我是否需要显式转换或解码或解压缩文件以使用它们或解释它们?
Web 资源的 GZIP 压缩是可选的,因此您不能压缩所有资源,然后希望每个 Web 客户端都能够处理它。 这就是为什么当客户端(可能是 Web 浏览器)使用Accept-Encoding: gzip, deflate
标头说“gzip 适合我”时,它通常在运行时启用。 见https://en.wikipedia.org/wiki/HTTP_compression
在服务器端,神奇的是由HTTP 过滤器处理,它拦截请求,记录标头,然后将请求发送到应用程序的其余部分,拦截响应并相应地压缩。
JBoss 有一些内置支持: 为 Jboss 启用 gzip 压缩
如果你想自己做,你需要写一个Filter
并在你的web.xml
配置它。
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
if (req instanceof HttpServletRequest) {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String ae = request.getHeader("accept-encoding");
if (ae != null && ae.indexOf("gzip") != -1) {
GZIPResponseWrapper wrappedResponse = new GZIPResponseWrapper(response);
chain.doFilter(req, wrappedResponse);
wrappedResponse.finishResponse();
return;
}
chain.doFilter(req, res);
}
}
或者您可以使用像WebUtilities这样的性能优化库来启用压缩,如此处所述https://github.com/rpatil26/webutilities/wiki/Enable-Compression
也可以看看:
在 Jboss EAP 7.0 中,这对我有用:
编辑:Standalone.xml
<subsystem xmlns="urn:jboss:domain:undertow:1.2"> <!-- SEARCH FOR THIS: urn:jboss:domain:undertow -->
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http"/>
<host name="default-host" alias="localhost">
(...)
<!-- ADD THIS FOR GZIP COMPRESSION -->
<filter-ref name="gzipFilter" predicate="exists['%{o,Content-Type}'] and regex[pattern='(?:application/javascript|text/css|text/html|text/xml|application/json)(;.*)?', value=%{o,Content-Type}, full-match=true]"/>
<!-- /GZIP COMPRESSION -->
</host>
</server>
(...)
<filters>
(...)
<!-- ADD THIS FOR GZIP COMPRESSION -->
<gzip name="gzipFilter"/>
<!-- /GZIP COMPRESSION -->
</filters>
</subsystem>
重启服务器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.