2012-03-06 38 views
2

我需要Apache來提供預壓縮字體(不使用deflate)。Apache .htaccess:提供預壓縮的@ font-face字體

我在/ path_to /字體/文件夾的.htaccess樣子

RewriteEngine On 
RewriteBase /path_to/fonts/ 
RewriteCond %{HTTP:Accept-Encoding} .*gzip.* 


RewriteRule (.*)\.ttf $1.ttf.gz 


AddEncoding x-gzip gz 

RemoveType application/x-gzip .gz 

響應頭:

Accept-Ranges bytes 
Connection Keep-Alive 
Content-Encoding **gzip** 
Content-Length **31709** 
Content-Type **text/plain** 
Date Tue, 06 Mar 2012 18:14:51 GMT 
Etag "7200000008e241-7bdd-4ba954a7395a8" 
Keep-Alive timeout=5, max=99 
Last-Modified Tue, 06 Mar 2012 16:11:08 GMT 
Server Apache/2.2.11 (Win32) PHP/5.2.9 
Vary Accept-Encoding 

內容長度說31709,這將是壓縮後的大小,但我無法下載它。

你能給個提示嗎?

+0

text/plain的似乎是錯誤的MIME類型。但你爲什麼要自己處理這個問題呢?你需要保存服務器上的CPU使用情況嗎? – Gerben 2012-03-06 18:38:23

+0

你會用什麼MIME類型呢? pre-gzipping是客戶的必備條件。 – Paco 2012-03-07 13:29:43

+0

可以使用'font/ttf'或'application/x-font-ttf'。預壓縮看起來似乎是一個愚蠢的必要條件,可能由那些在某個地方讀到它會對[insert-buzzword-here]有好處的人造成:-P。看看你花了多少時間試圖弄清楚這件事情。看起來非常浪費。只是我2美分。 – Gerben 2012-03-07 15:56:15

回答

0

這是我的解決方案。它主要有更多的波蘭。

它不會設置類型和編碼,除非客戶端支持gzip。如果不是所有的模塊都支持,那麼也聲明所使用的模塊,因此什麼都不會發生。

文件夾結構:

fonts/ 
    Shanti-Regular.ttf.gz 
    Federo-Regular.ttf.gz 
    Shanti-Regular.ttf 
    Federo-Regular.ttf 
    .htaccess 

隨後的.htaccess包含:

# Rewrite URLs to add gzipped version of font when it exits. 
<IfModule mod_rewrite.c> 
<IfModule mod_mime.c> 
    RewriteEngine on 

    #Serve gzip compressed TTF files if they exist and the client accepts gzip. 
    RewriteCond %{HTTP:Accept-encoding} gzip 
    RewriteCond %{REQUEST_FILENAME}\.gz -s 
    RewriteRule ^(.*)\.ttf $1\.ttf\.gz [QSA] 

    # update the response header of compressed file 
    # makes browser think mod_gzip did it. 
    <FilesMatch "\.ttf\.gz$"> 
    AddEncoding gzip .gz 
    ForceType "application/x-font-ttf" 
    </FilesMatch> 

</IfModule> 
</IfModule>