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

如何在jBoss EAP服务器中启用Gzip压缩,jboss,compression,jboss-eap-6,http-compression,Jboss,Compression,Jboss Eap 6,Http Compression,我使用的是jBoss EAP 6.1服务器,我想为我的HTML、CSS和javaScript文件启用GZIP压缩 我对这种压缩技术是完全陌生的,有谁能给我推荐一个教程,或者直接给我一个在Jboss EAP 6.1服务器上实现压缩的步骤 除此之外,我还有以下疑问: 1) 我是否需要压缩工作区中的文件,或者如果我的jboss服务器将启用压缩功能,它将负责压缩,我只需要部署war 2) 当服务器响应我的请求时,我是否需要显式地转换、解码或解压缩文件以使用它们或解释它们 GZIP对web资源的压缩是可选

我使用的是jBoss EAP 6.1服务器,我想为我的HTML、CSS和javaScript文件启用GZIP压缩

我对这种压缩技术是完全陌生的,有谁能给我推荐一个教程,或者直接给我一个在Jboss EAP 6.1服务器上实现压缩的步骤

除此之外,我还有以下疑问:

1) 我是否需要压缩工作区中的文件,或者如果我的jboss服务器将启用压缩功能,它将负责压缩,我只需要部署war


2) 当服务器响应我的请求时,我是否需要显式地转换、解码或解压缩文件以使用它们或解释它们

GZIP对web资源的压缩是可选的,因此您不能压缩所有资源,然后希望每个web客户端都能处理它。这就是为什么当客户端(可能是一个web浏览器)用
Accept-Encoding:gzip,deflate
标题说“gzip适合我”时,它通常在运行时启用的原因。看

在服务器端,神奇的是由一个代理处理,它截取请求,记录头,然后将请求发送到应用程序的其余部分,截取响应并进行相应压缩

JBoss有一些内置的支持:

如果您想自己做,您需要编写一个
过滤器
,并在
web.xml
中进行配置

:

或者,您也可以使用性能优化库,如本文所述启用压缩

另见:


GZIP对web资源的压缩是可选的,因此您不能压缩所有资源,然后希望每个web客户端都能处理它。这就是为什么当客户端(可能是一个web浏览器)用
Accept-Encoding:gzip,deflate
标题说“gzip适合我”时,它通常在运行时启用的原因。看

在服务器端,神奇的是由一个代理处理,它截取请求,记录头,然后将请求发送到应用程序的其余部分,截取响应并进行相应压缩

JBoss有一些内置的支持:

如果您想自己做,您需要编写一个
过滤器
,并在
web.xml
中进行配置

:

或者,您也可以使用性能优化库,如本文所述启用压缩

另见:


在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>

(...)
(...)  
(...)  

在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>

(...)
(...)  
(...)  

重新启动服务器

Hello@Aaron Digulla我已经在我的jBoss EAP 6.1上实现了这段代码,当我在本地服务器上工作时,它工作正常。但当我移动到实际的服务器环境时,这些变化并没有得到反映。我的服务器是JBossServerEAP6.1,正在Linux操作系统上工作。请参考我的新问题。你好@Aaron Digulla我已经在我的jBoss EAP 6.1上实现了这段代码,当我在本地服务器上工作时,它工作得很好。但当我移动到实际的服务器环境时,这些变化并没有得到反映。我的服务器是JBossServerEAP6.1,正在Linux操作系统上工作。请参考我的新问题。值得注意的是,在JBoss的更高版本中,方括号会引起一个警告:
Predicate not min content size[2048]使用老式的方括号来定义谓词,这将在将来的版本中删除。谓词[value]应更改为谓词(value)
。我在这个替代谓词中看到了很好的结果,它捕获了许多类型的文本内容类型:
predicate=“exists”(“{o,content-type}”)和regex(pattern=”(?:text | javascript | json | html | multipart | xml),value=%{o,content-type},full-match=false)
值得注意的是,在JBoss的更高版本中,方括号会引起一个警告:
Predicate not min content size[2048]使用老式的方括号来定义谓词,这将在将来的版本中删除。谓词[value]应更改为谓词(value)
。我在这个替代谓词中看到了很好的结果,它捕获了许多类型的文本内容类型:
predicate=“exists(“%$o,content-type}”)和regex(pattern=”(?:text | javascript | json | html | multipart | xml),value=%%o,content-type},full-match=false)