2010-03-02 73 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> 
...