activer/désactiver la compression GZIP des pages
Bonjour
voilà j'ai un big problem :arf:
Je génère une page que je transmet au navigateur web (en fait c un xml mais ça on s'en fout).
Sur mon ordi ça plante avec IE (6 sp1), ça marche avec Mozilla.
Sur d'autres ordi de la boîte ça marche avec IE.
(quand je dis ça marche pas, IE affiche une erreur xml invalide, et le code source c'est du binaire)
Donc je suppose que la compression peut ne pas être supportée par tous les postes de l'entreprise.
Le code de compression est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| // Définie le content type text/xml
response.setContentType("text/xml");
// Compression du document
response.setHeader("Content-Encoding", "gzip");
// Désactive la mise en cache
response.setHeader("Cache-Control", "public" );
...
// Convertisseur
StringWriter strWriter = new StringWriter();
try {
XMLSerializer serializer = new XMLSerializer(strWriter, new OutputFormat("xml","ISO-8859-1", false) );
serializer.serialize( xml.getFinalDocument() );
// Compression de la réponse
java.util.zip.GZIPOutputStream gzos = new java.util.zip.GZIPOutputStream(response.getOutputStream());
try {
gzos.write(strWriter.toString().getBytes());
}
finally {
gzos.close();
}
}
finally {
strWriter.close();
} |
Si je transforme en :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| PrintWriter out = response.getWriter();
// Définie le content type text/xml
response.setContentType("text/xml");
// Désactive la mise en cache
response.setHeader("Cache-Control", "public" );
...
// Convertisseur
StringWriter strWriter = new StringWriter();
XMLSerializer serializer = new XMLSerializer(strWriter, new OutputFormat("xml","ISO-8859-1", false) );
serializer.serialize( xml.getFinalDocument() );
out.println(strWriter.toString());
strWriter.close(); |
ça marche.
Mais le problème, c'est que le XML est très bavard et certains fichiers sont énoooOOÔOOooormes.
Donc je cherche soit à corriger le problème sur IE, y'a-t'il un header à envoyer ? parce qu'en général une page web habituelle peut être gzippée et marcher... du moins il me semble.
Ou alors en désespoir de cause, comment détecter que le navigateur n'accepte pas la compression ? et donc choisir l'un de ces 2 codes en fonction du résultat.