Voilà une combinaison qui pourrait faire craquer n’importe quel développeur !

Et c’est justement cette combinaison qui m’a fait perdre pas mal de temps. Donc, je vous livre ici l’astuce pour faire en sorte que vous ne perdiez pas trop de temps (hormis celui de lire cet article).

Le problème

En fait, j’avais un site à réaliser avec un joli javascript en haut de page. Une chouette animation (pas très utile, mais que voulez-vous, le client est roi). Sur le serveur de production, pas de problème, le site fonctionne bien sous IE6, Firefox, Safari, Opéra et même sur iPod.

Le même site sur le serveur de production faisait planter lamentablement IE6 (et le client est sur IE6… Normal…).

Au début, j’ai crû que le javascript n’était pas au point. Problème de latence (chargement en tâche de fond d’images) ou un truc du genre. Je ne voyais pas la différence entre le serveur de développement et le serveur de production jusqu’au moment où je me suis rappeler que le serveur de production était sous Apache et celui de développement sous IIS.

Il y avait bien une différence profonde : sur le serveur de production, j’avais activer la compression avec mod_deflate. Pas sur le serveur de développement (si si, c’est possible sur un serveur IIS…).

Mais voilà, IE6 n’apprécie vraiment pas cette compression. D’où le plantage.

La solution

La solution est simple : désactiver mod_deflate. Bon… Ok, c’est un peu nul. Alors il est possible de désactiver cette compression juste pour IE :

BrowserMatch MSIE no-gzip

Ce n’est pas une solution idéale car Internet Explorer 7 ou 8 sont également visé. Ce qui va encore faire croire que les sites sont plus rapides sous Firefox que sous Internet Explorer alors que ce n’est qu’un mauvais réglage du serveur…

Bon, donc, changeons un peu ça :

BrowserMatch bMSIEs(7|8) !no-gzip !gzip-only-text/html

Et voilà voilà.

Internet Explorer ne plante plus, le site reste rapide sur les autres navigateurs et le concours du mois de mai va bientôt se terminer, alors dépêchez-vous si vous voulez gagner un emplacement publicitaire sur ce blog pendant un mois !

Et si vous avez d’autres solutions, n’hésitez pas à partager.