繁体   English   中英

如何在 jBoss EAP 服务器中启用 Gzip 压缩

[英]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配置它。

Java2s 有一个实现

  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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM