2010-03-02 30 views
2

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

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

+0

什么servlet容器您使用? - 你可以例如配置Tomcat以即时执行gzip。 – nos 2010-03-02 10:37:24

回答

0

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

<Connector compression="on"> 

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

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

+0

我已经尝试在这篇文章中提到http://balusc.blogspot.com/2009/02/fileservlet-supporting-resume-and.html。但YSlow仍然显示文件(JS,CSS)不是以压缩模式从服务器发送的。任何想法/建议表示赞赏。谢谢 – 2010-03-03 06:37:01

+0

难道你不把压缩和缩小混淆? – BalusC 2010-03-03 11:12:25

+0

是的,我认为在这里我们需要压缩js,css文件并将其从服务器发送到客户端。如果我的理解错误,请指出我的意思。 – 2010-03-03 13:08:26

0

你确定你想压缩JS和CSS而不是试图缩小它吗?一般情况下,如果您的Web服务器正确设置了缓存标头,则首次访问后,浏览器会缓存JS和CSS。在实践中,我发现缩小JS和CSS通常足以让浏览器初次下载。

有许多JS minifiers。例如位于here

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. 压缩 - 支持2路压缩的gzip /缩小/压缩编码在服务器
  5. 响应缓存 - 为了避免不变资源的再加工
  6. 添加字符编码 - 让浏览器预先知道
1

我建议使用颗粒标记库的http://code.google.com/p/granule/

它gzip和联合JavaScript的由G包:压缩标签

代码示例是:

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