2011-12-12 16 views
6

Sto provando a gzip risposte dal server GAE, ma ricevo null in Content-Encoding.AppEngine compressione gzip

Ho il codice seguente:

connection = (HttpURLConnection)url.openConnection(); 
connection.setRequestMethod("POST"); 
connection.setRequestProperty("Content-Type", 
      "application/json; charset=utf-8"); //"application/json; charset=utf-8" 
connection.setRequestProperty("Accept-Encoding", "gzip"); 
connection.setRequestProperty("User-Agent", "gzip"); 
connection.setUseCaches (false); 
connection.setDoInput(true); 
connection.setDoOutput(true); 

//write 
//read 

System.out.println("Content-Encoding " + connection.getContentEncoding()); 

Ho letto che su server GAE non comprimendo automaticamente. Quindi quale può essere il problema?

+0

GAE non presta alcuna attenzione per chiedergli di comprimere o meno. Quanto è grande il file in questo caso? Per esperienza, qualsiasi cosa oltre 1 MB non viene mai compressa. – David

risposta

9

I server di frontend di App Engine si basano su una serie di fattori, tra cui le intestazioni Accept-Encoding e User-Agent per determinare se devono comprimere le risposte. Lo fanno perché ci sono un certo numero di agenti utente là fuori che pretendono di accettare risposte gzip, ma in realtà non riescono a capirli.

Provare a impostare il proprio agente utente su qualcosa di sensato (e non su 'gzip', che non è un vero agente utente), e vedere se questo fa alcuna differenza.

+6

https://developers.google.com/appengine/kb/general#compression states "Per forzare la pubblicazione del contenuto gzip, i client possono fornire" gzip "come valore sia delle intestazioni di richiesta Accept-Encoding che di User-Agent. ". Alcune persone segnalano che funziona, altri no. Fondamentalmente, nessuno sembra conoscere la vera risposta. – David

+0

Client modificato per l'invio di 'Accept-Encoding: gzip', ma App Engine ha ancora risposto non compresso. Poi aggiunto gzip a UA, 'User-Agent: Our Real UA String; gzip' e che (insieme a Accept-Encoding: gzip') hanno finalmente forzato App Engine a rispondere in modo compresso. –

+0

Possiamo farlo senza inviare Richiesta? come impostare questi valori all'interno del codice? –

Problemi correlati