La codifica gzip è compatibile con JSON?
Domanda
Sto cercando di limitare alcune stranezze in corso con le mie chiamate AJAX. I miei script PHP hanno questo all'inizio:
ob_start("ob_gzhandler");
Funziona alla grande con HTML. Ma ci sono problemi nel farlo con i dati application / json? Qualche problema del browser di cui qualcuno è a conoscenza?
Soluzione
Non credo ... Ho usato file statici memorizzati come JSON compressi in precedenza e ha funzionato perfettamente con AJAX.
modifica: ho controllato il mio script php e l'unica cosa speciale che ho fatto è stato includere queste intestazioni:
Content-Encoding: gzip
Content-Type: text/plain
Se ricordo bene, ogni volta che ho provato a cambiare il Content-Type in qualcosa che indicasse JSON, il client ha avuto problemi.
Altri suggerimenti
Alcuni browser meno recenti, come alcune versioni di IE6, rovinano i contenuti compressi con gzip, in particolare i contenuti js.
Controlla solo che il tuo server invii un'intestazione di codifica del contenuto corretta, ovvero
Content-Encoding: gzip
Dovresti anche controllare le intestazioni inviate dal browser per la corretta intestazione di accettazione della codifica prima di inviare contenuti compressi con gzip ... ovvero,
Accept-Encoding: gzip,deflate
Puoi distribuire contenuti compressi con gzip ogni volta che il browser specifica gzip
nell'intestazione della richiesta Accept-Encoding
. In tal caso, non esiste alcuna differenza tra JSON e HTML e nessun problema sarà causato in alcun modo.
Invece di abilitare la compressione in PHP, abiliterei la compressione in Apache (usando mod_deflate) in modo da poter verificare la presenza di vari browser incompatibili e inviare solo dati compressi per i browser che lo accettano e gestirli correttamente.