2012-07-14 118 views
6

我正在使用YUI compressor plugin在我的Java EE應用程序中壓縮和gzip JS和CSS文件。在HTML/JSP中引用gzip壓縮的CSS和JS

但是,我不清楚如何在我的HTML/JSP文件中引用它們。

如果我只是用.GZIP參考,瀏覽器顯然笙歌說 -

Resource interpreted as Script but transferred with MIME type application/x-gzip

當前參考看起來是這樣的(會拋出上述錯誤):

<script type="text/javascript" src="/scripts/home.js.gz"></script> 
+0

壓縮是一種HTTP功能,[你的服務器應該爲你做](http://sourceforge.net/projects/mod-gzip/),你不需要預先壓縮你的文件。 – robertc 2012-07-14 21:12:51

回答

1

你使用普通的.js和.css擴展名引用它們,並通過檢查通過螢火蟲或開發人員工具檢查CSS和JS文件上的響應標頭來檢查gzip是否正在工作。

Gzipping通常在Web服務器級別完成。

如果您使用的是tomcat,您可以打開Tomcat安裝的conf/server.xml,並將以下內容添加到Connector定義中。

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

對於Apache查找mod_gzip的或mod_deflate模塊

這正好在你的根.htaccess文件,但如果你要訪問的httpd.conf是更好的。

<ifModule mod_deflate.c> 
<filesMatch "\.(js|css)$"> 
SetOutputFilter DEFLATE 
</filesMatch> 
</ifModule> 
+0

我會試試這個,然後回去... – Saket 2012-07-19 08:02:32

2

您所看到的是瀏覽器中的警告,只要您解釋數據的方式不同於返回的內容類型,就會顯示此警告。

你真正想要做的是這樣的:

Content-Type: text/javascript 
Content-Encoding: gzip 

這將刪除瀏覽器中的錯誤,同時也讓瀏覽器認識到,這個文件在使用前必須解壓縮。

0

雖然可以配置Tomcat來完成所有的gzip你,我建議手動壓縮你的靜態資源,如jscss文件,並在服務器上保存爲或js.gz,那麼你可以使用一個servlet來發送這些靜態和預先壓縮的文件到客戶端,當請求進來時。

請參閱https://gist.github.com/suprememoocow/1570654的servlet實現。

如果你的服務器有一個內置的gzip文件的機制,那麼你可以使用它。據我所知,tomcat(7)還沒有這個功能。