¿La codificación gzip es compatible con JSON?
Pregunta
Estoy tratando de reducir algunas rarezas con mis llamadas AJAX. Mis scripts PHP tienen esto al principio:
ob_start("ob_gzhandler");
Funciona muy bien con HTML. ¿Pero hay algún problema al hacerlo con datos de aplicación / json? ¿Algún problema con el navegador que alguien conozca?
Solución
No lo creo ... He usado archivos estáticos almacenados como JSON comprimido anteriormente, y funcionó bien con AJAX.
editar: revisé mi script php y lo único que hice fue incluir estos encabezados:
Content-Encoding: gzip
Content-Type: text/plain
Si no recuerdo mal, cada vez que intentaba cambiar el tipo de contenido a algo que indicara JSON, el cliente tenía problemas.
Otros consejos
Algunos navegadores antiguos, como ciertas versiones de IE6, arruinan el contenido comprimido, especialmente el contenido js.
Simplemente verifique que su servidor envíe el encabezado de codificación de contenido adecuado, es decir
Content-Encoding: gzip
También debe verificar los encabezados enviados por el navegador para el encabezado apropiado de codificación de aceptación antes de enviar contenido comprimido ... es decir,
Accept-Encoding: gzip,deflate
Puede proporcionar contenido comprimido cada vez que el navegador especifique gzip
en el encabezado de solicitud Accept-Encoding
. En ese caso, no hay diferencia entre JSON y HTML y no se causarán problemas de ningún tipo.
En lugar de habilitar la compresión en PHP, habilitaría la compresión en Apache (usando mod_deflate) para que pueda verificar varios navegadores incompatibles y solo enviar datos comprimidos para los navegadores que lo aceptan y lo manejan correctamente.