2010-10-04 15 views
5

? Tenemos una aplicación Flex/Java que utiliza BlazeDS y estamos investigando la reducción del tamaño de las cargas entre nuestro servidor y el cliente.¿Vale la pena la compresión GZip con AMF

Como AMF es un formato binario y se supone que es bastante compacto, ¿hay algún beneficio al activar la compresión GZip? ¿Alguien más hizo esto antes y notó ganancias significativas al usar compresión?

ACTUALIZACIÓN

que acaba de realizar una prueba simple para determinar qué tipo de relaciones de compresión que podríamos esperar si tuviéramos que permitirá gzipping. Acabo de capturar las cargas útiles de AMF en algunos archivos y simplemente las compré usando la versión de línea de comandos de Linux. No especifiqué el nivel de compresión, solo el predeterminado, es decir, "normal". Parece que en promedio hay una reducción del 9% en el tamaño de la carga útil, y algunas cargas útiles llegan al 61%. ¿Alguien puede ver un error en este método y qué nivel de compresión se puede utilizar en HTTP gzipping?

+0

Quizás esta es una pregunta ridícula: ¿está aprovechando las opciones expuestas por su contenedor de servlet (es decir, tomcat) para activar la compresión? ¿O está utilizando un filtro de solicitud personalizado para hacer esto? He visto un código flotando que sugiere rodar tu propio filtro, pero no veo por qué no puedes simplemente habilitar la compresión en el conector tomcat. ¡Gracias! – tyler

Respuesta

5

Recientemente hemos cambiado algunas comunicaciones cliente-servidor de SOAP a AMF, y también comparamos el impacto de la compresión. Nos enfocamos en un servicio particular que devuelve algunas respuestas importantes. Estos fueron nuestros resultados, la devolución de los mismos datos (serializado con Xfire + auspicios para SOAP, y BlazeDS para AMF):

  • SOAP: sin comprimir: 1000KB comprimidos con gzip: 100KB (90% de reducción)
  • AMF: sin comprimir: 200 KB comprimidos: 30 KB (reducción del 85%)

Nuestra conclusión es que gzipping definitivamente vale la pena. El AMF binario se puede comprimir casi tan bien como XML (SOAP). Por supuesto, su millaje puede variar según el tipo de datos que está devolviendo.

+0

¿En qué tamaño supera la pena de rendimiento de compresión/descompresión el tráfico de red reducido? – splash

+3

@splash: no creo que dependa del tamaño. Para solicitudes más grandes, la desventaja (más tiempo de CPU) y la ventaja (respuestas más pequeñas) se escalan juntas. Depende de la cantidad de CPU y ancho de banda que su servidor y sus clientes tengan * de repuesto * (por lo que depende de cuánto tenga disponible y de cuán intensiva sea la CPU y el ancho de banda de la aplicación). –

+0

También sería útil leer la especificación AMF para comprender dónde funciona y dónde no. Por ejemplo, las cadenas no se comprimen en absoluto en AMF, por otro lado, si tiene un montón de números enteros, no verá una mejora significativa. –

4

Depende de los datos. Si tiene muchos datos altamente estructurados, normalmente solo utiliza una fracción de los bits de información real. Entonces la compresión tendrá sentido.

p. Ej. un registro con un campo de categoría que es una de 6 posibilidades podría tomar 32 bits si está codificado como un GUID, pero puede representarlo con 3 bits. La compresión verá estos patrones como muy frecuentes y los reducirá.

Similar para cadenas que no se repiten.

AMF tiene algunas optimizaciones para enteros pequeños y cadenas repetitivas, pero no realmente la compresión. Ver this discusion.

Haga algunos puntos de referencia y decida.

2

Puedes experimentar cómo activar y desactivar GZIP cambia los tamaños de transferencia usando mi Census RIA Benchmark. Pero, como otros han señalado, los resultados dependen en gran medida de los datos. Por lo tanto, hacer sus propias pruebas con sus propios datos es la mejor manera de decidir.

También tenga en cuenta que hay una sobrecarga en ambos lados de GZIP, por lo que a veces la sobrecarga vale la pena (conexiones más lentas) y otras no.