使用gzip压缩组件 - Java EE

时间:2010-03-02 10:25:00

标签: java java-ee struts gzip yslow

我希望改善应用程序的前端性能,所以我在Firefox中使用了YSlow工具。当我为我的应用程序运行此工具时,在YSlow等级选项卡中,它出现了“使用gzip压缩组件F级”的问题。似乎是我们需要在从服务器发送到客户端时压缩文件(js,css)以增加服务器响应时间。

我的应用是一个Struts Java应用程序。任何人都可以让我知道如何从服务器压缩和发送前端UI文件(JS,CSS),以便响应时间增加,我的页面很快?在服务器上用Java压缩这些文件需要做些什么?

5 个答案:

答案 0 :(得分:6)

我建议使用Servlet Filter(自servlet 2.3规范以来)

gzip过滤器已有详细记录,因此无需重新发明轮子:

另外,一些servlet容器可以动态执行gzip。看看this related question

答案 1 :(得分:2)

为了提高Java EE Web应用程序的客户端性能, WebUtilities java库可能会有所帮助。

  

这是链接:: https://github.com/rpatil26/webutilities

它也是available through maven central

从版本0.0.4起,它有助于遵循以下性能实践。

  1. 最小化HTTP请求 - 可以在一个请求中提供多个JS / CSS文件
  2. 客户端缓存 - 添加适当的Cache-Control,Expires标头
  3. 动态JS / CSS缩小 - 使用YUICompressor
  4. 压缩 - 支持gzip / deflate / compress编码的双向压缩
  5. 服务器的响应缓存 - 避免重新处理未更改的资源
  6. 添加字符编码 - 让浏览器提前知道

答案 2 :(得分:1)

我建议使用Granule Tag lib http://code.google.com/p/granule/

它gzip并组合由g:compress标签包装的javascripts

代码示例是:

<g:compress>
  <script type="text/javascript" src="common.js"/>
  <script type="text/javascript" src="closure/goog/base.js"/>
  <script>
       goog.require('goog.dom');
       goog.require('goog.date');
       goog.require('goog.ui.DatePicker');
  </script>
  <script type="text/javascript">
      var dp = new goog.ui.DatePicker();
      dp.render(document.getElementById('datepicker'));
  </script>
</g:compress>
...

答案 3 :(得分:0)

您通常在appserver / servletcontainer级别配置它。我不知道你正在使用哪一个,所以这里只是一个Tomcat目标示例。在/conf/server.xml配置<Connector>组件,如下所示:

<Connector compression="on">

这就是全部。只需添加compression="on"即可。其他服务器提供类似的设置。请参阅其文档了解详细信息它们通常完全相同,因为它们是建立在Tomcat之上的。

有关Java EE webapplication透视图中的更多YSlow提示,您可能会发现此blog article更有用。

答案 4 :(得分:0)

您确定要尝试压缩JS和CSS而不是尝试缩小它吗?通常,首次访问后,浏览器会缓存JS和CSS,前提是您的Web服务器正确设置了缓存标头。在实践中,我发现缩小JS和CSS通常足以满足浏览器的初始下载。

有许多JS minifiers。例如,一个位于here