Een favicon met houdbaarheidsdatum
// July 28th, 2010 // No Comments » // Work
De laatste weken heb ik me op het werk meer dan anders bezig mogen houden met de kleine dingen die een website sneller zouden moeten maken. Eentje daarvan was het inschakelen van mod_expires in Apache om voor bepaalde afbeeldingen automatisch enkele headers mee te sturen die invloed hebben op de caching ervan. Dat bleek echter niet zomaar te werken voor het favicon icoon…
mod_expires
Om van mod_expires gebruik te kunnen maken, moet de module eerst ingeladen worden in httpd.conf. Over het algemeen staat ze standaard al uit commentaar, is dat niet het geval, dan volstaat het om het hekje (#) van voor de volgende regel te halen.
LoadModule expires_module modules/mod_expires.so
De afbeeldingen worden, op basis van de plaats waar ze gebruikt worden op onze website, bewaard in verschillende folders. Elk van die folders moet een eigen set aan regels hebben om de ‘houdbaarheidsdatum’ van de afbeeldingen erin te bepalen. Dat gebeurt door middel van enkele regels in het .htaccess bestand van elke folder:
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/png “access plus 1 weeks”
ExpiresByType image/gif “access plus 1 weeks”
ExpiresByType image/jpg “access plus 1 weeks”
ExpiresByType image/jpeg “access plus 1 weeks”
</IfModule>
Het probleem met ico
Afgelopen weekend viel het me op dat het favicon icoon geen expires header mee kreeg. Ik dacht dat even snel op te lossen door in de .htaccess van de root een regel op te nemen voor het type ‘image/ico’… maar dat bleek niet te bestaan
Even Googlen bracht me echter snel de oplossing: een type toevoegen aan de Apache config en die vervolgens gebruiken in de .htaccess.
Het MIME-type image/x-icon toevoegen aan httpd.conf:
AddType image/x-icon .ico
En in de .htaccess van de root volgende code gebruiken:
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/x-icon “access plus 1 years”
</IfModule>
Goed of slecht?
Wikipedia vertelde me later dat het gekozen type eigenlijk niet correct was, maar aangezien het nu werkt en de favicon een expires header van een jaar meekrijgt, laat ik het (voorlopig althans) maar even zo…
