Vous avez sans doute déjà vu si vous utilisez PageSpeed la recommandation suivante :
Serve static content from a cookieless domain
Cela signifie que vos images se trouvant sur le même nom de sous-domaine que votre site, le navigateur transmet à chaque appel d’image dans les entêtes les cookies du site, en cas de besoin.
Une solution simple consiste à ajouter ceci dans le htaccess
| 1 | <IfModule mod_headers.c> |
| 2 | <FilesMatch "\\.(js|css|jpg|png|jpeg|gif|css)$"> |
| 3 | RequestHeader unset Cookie |
| 4 | Header unset Set-Cookie |
| 5 | Header set Cache-Control "max-age=86400" |
| 6 | </FilesMatch> |
| 7 | </IfModule> |
De cette manière, pour chaque appel de fichier média, les cookies ne seront pas traités.
Il est intéressant d’aller plus loin. Si vous pouvez-faire en sorte de rediriger un sous-domaine sur le même nom de domaine que le www, vous pouvez créer un sous-domaine spécifique pour les médias.
Ainsi, il vous suffit par exemple sur Apache d’éditer la configuration et de rajouter une ligne comme suit dans la configuration de votre nom de domaine (la plupart du temps dans le fichier /etc/apache2/sites-available/nomDuSite)
| 1 | ServerAlias media.monsite.com |
il faut ensuite redémarrer apache pour prise en compte (commande ssh)
| 1 | /etc/init.d/apache2 restart |
Ceci aura pour effet de diriger le sous-domaine « media » vers le même emplacement que le domaine principal (« www ») et du coup, vous pourrez appeler vos images anciennement pointant vers www.monsite.com/image.jpg via media.monsite.com/image.jpg
Si vous définissez vos cookies au niveau du sous-domaine (ex pour PHP : 5e argument de la fonction setcookie), ils ne seront alors pas transmis lors des appels vers le sous-domaine « media ».
Le htaccess défini plus haut sera par ailleurs pris en compte, ce qui permettra de ne pas prendre en compte tout cookie envoyé de toute façon.