Question

I'm trying to set it up so that the browser will cache the webfonts for a long period and also attempting to gzip them for a faster download.

From what I can understand you can do this via your httpd.conf file in Apache or via .htaccess.

I'm not sure how to tell if gzip is enabled though, I read something about searching your httpd.conf file for DEFLATE; I did that, but found nothing - so not sure if it's enabled or not!?

Anyway, I have put this code below into the .htaccess file, partially because I didn't know where to put it in the httpd.conf file and partially because it's easier to make changes in .htaccess file without bothering my host continually.

Here is the code..

# Add correct content-type for fonts
AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType font/x-woff .woff
AddType image/svg+xml .svg

# Compress compressible fonts
AddOutputFilterByType DEFLATE font/ttf font/otf image/svg+xml

# Add a far future Expires header for fonts
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/otf "access plus 1 year"
ExpiresByType font/x-woff "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"

Now, I'm wondering if this is correct or not as I also seen this similar, but different code for the expiry..

ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"

Does it matter where you place it in the .htaccess file or can it go anywhere?

Was it helpful?

Solution

ExpiresByType can go in your httpd.conf, virtualhost config or htaccess, as shown in the apache documentation overview box at the top of each directive entry:

Apache Documentation screenshot

http://httpd.apache.org/docs/2.2/mod/mod_expires.html#expiresbytype

The Context listing is how you can tell which configuration files you can put your various Apache directive types into.

Assuming you are using PHP, your phpinfo details should tell you if gzip is enabled.

PHPInfo Screenshot

Edit

In response to your question about correct way MIME type for your fonts, in terms of their file association with the Apache Server, my mime.types file (found in apache conf folder where your httpd.conf lives) tells me that

application/x-font-(extension)

would be the association to use with ExpiresByType. I would suggest getting the fonts working first, and then checking the headers for the font url to see if its giving proper expiration date.

enter image description here

As for the browsers receiving the web fonts, this article seems to indicate that MIME types aren't considered and thus don't matter. But yet this one seems to contradict that. As I understand it, there is no official font/ MIME type so any browser implementation is outside the MIME specifications.

Related questions:

Proper MIME type for fonts

Correct Apache AddType directives for font MIME types

I've not seen anything specifying placement requirements in .htaccess so you should be safe putting these rules wherever you see fit, although if you do AddTypes you need to do so above any further directives that reference that declared Type. It's probably best to put these near the top above your rewrite rules.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top