2012-03-18 99 views
1

而不是依靠服務器來gizip壓縮css和js文件,gzip文件是一個好的/壞主意,將它們存儲在服務器上並鏈接到html中的文件。gzip文件作爲html源代碼

而不是

<script src="../Scripts/compiled.js"></script> 

這樣:

<script src="../Scripts/compiled.js.gzip"></script> 

並與CSS一樣的嗎?

我試過了,但不起作用;這些文件似乎沒有解壓縮。我得到Resource interpreted as Stylesheet but transferred with MIME type application/x-gzip:這甚至可能嗎?

回答

3

你的Gzip文件應該有響應標題Content-Encoding: gzipContent-Type應該是text/javascript的JavaScript文件或text/css的CSS文件。

對於我來說,以下.htaccess規則不工作:

AddEncoding x-gzip .gz 

RewriteEngine On 

RewriteCond %{HTTP:Accept-encoding} gzip 
RewriteCond %{REQUEST_FILENAME}.gz -f 
RewriteRule ^(.*)$ $1.gz [QSA,L] 

<FilesMatch \.js\.gz$> 
    ForceType "text/javascript; charset=utf-8" 
    Header set Cache-control: private 
</FilesMatch> 

Header set Vary: Accept-Encoding可以用來代替Header set Cache-control: private,以防止返回Gzip壓縮的版本不支持Gzip壓縮,用戶代理。

.htaccess文件應放置在包含js的目錄中。

Gzipped和非壓縮版本應該並排放置(gzip版本的文件名包含.gz後綴)。 Gzip編碼版本在其URL請求明確提到的沒有Gzip的通常文件時透明地返回(如果.gz版本存在,並且瀏覽器支持請求頭負責的Gzip)。

P.S.啊,你使用的是ASP.net,因此它顯然是在IIS下運行的。那麼,最近版本的IIS有類似.htaccess的功能,AFAIK。

+0

是的,我正在使用asp.net – frenchie 2012-03-19 12:09:42

+0

Marat:爲什麼你有緩存控制:私人? – 2012-03-23 09:47:51

+0

Fenchie:我不認爲通過IIS上的預壓縮可以獲得太多的收益,因爲IIS在磁盤上存儲壓縮版本的文件 – 2012-03-23 09:49:40