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.
« Trop de chefs ! pas assez d’indiens »
Voilà un commentaire que me suggère ton dessin. Pour le problème en question, je ne vois même pas de quoi il s’agit ^^. Désolé !
Pourrais-tu préciser où placer les lignes :
BrowserMatch MSIE no-gzip
et
BrowserMatch bMSIEs(7|8) !no-gzip !gzip-only-text/html
histoire que je ne meurs pas idiots ?
Kéké
Arf, ça devient technique…
C’est à placer dans le fichier de configuration du serveur Apache, dans la section « location ».
Et, rassure toi, il y a plus d’indiens que de « chef » : http://news.netcraft.com/archives/2…
Effectivement IE6 était buggé à ce niveau là, mais c’était censé être corrigé, avec SP2 pour XP.
De toute façon on sait tous qu’en entreprise, les mises à jour sont rares !
Mon IE6, qui est à jour, plantait aussi.
Tiens, d’ailleurs, j’ai eu un problème similaire hier : mes 2 blogs sous Dotclear ont planté à cause… de la compression de IIS. Le cache avait mis de mauvaises données en mémoire. Etonnant, non ?! Va falloir que je creuse ce bug…
J’ai testé cette technique, le résultat est que la premier methode
« BrowserMatch MSIE no-gzip »
marche
par contre
« BrowserMatch bMSIEs(7|8) !no-gzip !gzip-only-text/html »
ne marche pas
Merci a vous…
Sur quel système as tu testé ? Parce que de mon côté, j’ai testé sur un IIS 6 avec Apache 2.x d’installé et ça marche nickel.
Est-ce que tu étais sous un autre système ?!