jsf东西的gzip压缩

Posted

技术标签:

【中文标题】jsf东西的gzip压缩【英文标题】:gzip compression for jsf stuff 【发布时间】:2012-06-09 07:43:01 【问题描述】:

我有一个在 tomcat 6 上运行的 jsf 应用程序(mojarra 2.1.8,primefaces 3.3)。在使用 google page-speed 在 firebug 中分析页面时,我意识到我可以通过 gzip 压缩来优化一些东西。

Compressing the following resources with gzip could reduce their transfer size by 371,1KiB (74% reduction).

 Compressing http://localhost:8080/someApp/javax.faces.resource/jquery/jquery.js.jsf?ln=primefaces could save 72,5KiB (74% reduction).
 Compressing http://localhost:8080/someApp/javax.faces.resource/theme.css.jsf?ln=primefaces-aristo could save 53,4KiB (71% reduction).
 Compressing http://localhost:8080/someApp/javax.faces.resource/jsf.js.jsf?ln=javax.faces could save 49,6KiB (78% reduction). 
 ...

我已经在 server.xml 中打开了压缩

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"
      compression="on" 
      noCompressionUserAgents="gozilla, traviata"
      compressableMimeType="text/html,text/xml,text/plain,application/javascript,application/json,text/javascript"/>

但它不会压缩上面列出的文件。

我还需要做什么才能使压缩工作?

强尼

【问题讨论】:

您的 .js.jsf 和 .css.jsf 资源的 MIME 类型是什么?您使用什么客户端进行测试? 您好 Christoper,感谢您的回复。这些资源由 Primefaces 即时提供/添加。 .js.jsf 有 application/javascript(在 compressableMimeType 中列出),而 .css.jsf 有 text/css(好的,没有在 compressableMimeType 中列出)。我的客户:WinXP 上最新的 Chrome 浏览器。强尼 从服务器请求这些资源时,您是否在响应中获得了正确的 Content-Type 标头?您是否还获得了 Content-Length 标头? 嗨,克里斯托弗,感谢您帮助我。我得到了正确的内容类型和内容长度。强尼 【参考方案1】:

您的server.xml 一切正常。您的具体问题很可能是您编辑了错误的server.xml 文件。在像 Eclipse 这样的 IDE 中,原始的 Tomcat 服务器安装默认保持不变。相反,Eclipse 在 Servers 项目中创建其所有配置文件的副本,并使用工作区元数据来部署 web 应用程序,最终仅使用 Tomcat 安装中的 Tomcat 服务器引擎。

确保您正在编辑正确的 server.xml 文件,即 Servers 项目中的那个:

Tomcat 自己的/conf/server.xml 文件仅在您在 Eclipse 之外启动它时使用,或者当您告诉 Eclipse 完全控制 Tomcat 安装时使用。要做到这一点, 在 Servers 视图中双击 Tomcat 服务器条目并相应地更改 Server Locations

【讨论】:

您好 BalusC,感谢您提供详细信息。我正在我的服务器项目中编辑正确的 server.xml。 text/html 是 gzip 的,但不是 css 和 js 的东西。让我发狂 :)。强尼 您的compressableMimeType 列表中没有text/css。你确定你正在寻找正确的回应吗?对缓存验证请求的响应,如 304“未修改”响应当然不会压缩。 嗨 BalusC,我已经添加了 text/css-compressableMimeType。但是您在评论的第二部分回答了我的问题。我清空了我的缓存,现在它“工作”了。感谢一百万 BalusC 不客气。您也可以只使用 Ctrl+F5 或 Ctrl+R 来强制进行硬刷新,具体取决于浏览器的品牌。

以上是关于jsf东西的gzip压缩的主要内容,如果未能解决你的问题,请参考以下文章

gzip压缩实践

怎么让.NET支持gzip压缩页面的功能

gzip压缩

gzip压缩命令

Linux 压缩和解压缩命令-gzip/gunzip

nginx 开启gzip压缩