2009-09-05 33 views
7

Sucede que mis datos reales son 1/4 del tamaño del encabezado de solicitud HTTP en bytes.
¿Hay alguna forma de reducir el tamaño de los encabezados HTTP o cualquier otra forma relevante de manejar esta situación?
Estoy enviando datos desde un dispositivo móvil a través de GPRS al servidor y no quiero tener que cargar con enormes paquetes de solicitud que comerán en mi $$ y también en el ancho de banda.Compactar encabezados Http

+0

1 para una buena pregunta, en la configuración que describa – KLE

+1

¿Puede extenderse sobre "Estoy enviando datos desde un dispositivo móvil"? Parece que está utilizando alguna aplicación personalizada (también debido a las etiquetas * java * y * j2me *). Si es así, es posible que puedas deshacerte de los encabezados de solicitud como Aceptar-* e incluso Host, si estás seguro de que tus aplicaciones de servidor no los necesitarán. Puede usar el User-Agent para enviar información de la versión por si su servidor necesita más detalles en futuras versiones. Los encabezados de respuesta también pueden estar limitados. Entonces: ** ¿están el cliente y el servidor bajo su control? ** ¿Y cuán importantes son las especificaciones HTTP para usted? – Arjan

+0

@KLE, "en el entorno que describe" Disculpe, no entiendo esta afirmación. –

Respuesta

3

Nunca he tenido que optimizar el rendimiento del sitio cortando encabezados. Dicho esto, la mayoría de los problemas tenían que ver con:

  1. Un gran número de no deseados peticiones GET. Esto se debió a menudo a que el servidor no enviaba los encabezados de caducidad y caché apropiados al cliente. A veces es una aplicación mal escrita.
  2. Gran cantidad de conexiones TCP abiertas. El rendimiento mejora cuando puede mantener viva la conexión y reutilizarla para atender múltiples solicitudes. No estoy seguro de si la compatibilidad de los clientes móviles se mantendrá con vida.
  3. Uso de la compresión, o la falta de ella. Si hay algo que puede reducir los gastos, es el uso de la compresión. Sin embargo, no estoy tan seguro de que los clientes móviles puedan admitir la compresión. Por cierto, uno normalmente hace compresión para respuestas, y no para solicitudes (todos los navegadores que conozco, nunca comprimen la solicitud aunque la especificación HTTP lo permita).

Si aún necesita un mejor rendimiento después del n. ° 3, su aplicación necesita alguna forma de revisión del diseño del rendimiento.

5

Bueno, ¿qué está ocupando la mayor parte de sus encabezados? Por ejemplo, Stack Overflow recientemente movió la mayor parte del contenido estático a otro dominio para que las cookies SO no se incluyan en las solicitudes del contenido estático (que de todos modos no usaría las cookies).

Si, sin embargo, la mayoría de los encabezados son cosas que el navegador siempre enviará (agente de usuario, etc.), entonces no hay mucho que pueda hacer.

+0

que había hecho una pregunta aquí (http://stackoverflow.com/questions/1378476/http-get-request-packet-size-in-bytes/1378496#1378496) en el tamaño de encabezado de solicitud HTTP. ¡Y eso me sorprendió! Mi información sería mucho más baja que las cifras mencionadas en esa publicación –

+1

@Kevin, no hay nada sorprendente allí. La mayoría de los encabezados de solicitud en ese extracto de tcpdump son requeridos por el servidor, para decidir cómo se preparará la respuesta. –

+0

@Vineet, ¿hay alguna forma de salir de esto? o es el equipaje de cabecera inevitable. –

2

Considero los encabezados como "Arquitectura", es decir: "su contenido exacto varía de aplicación a aplicación según los requisitos".

Una vez que tenga la lista actual exacta, utilizando los enlaces proporcionados en this post,
se puede ver cuáles necesita, y evitar el envío de los otros.

Quién sabe si hace una diferencia significativa, pero al menos puede estar seguro de que hizo su mejor esfuerzo en ese tema.

2

Bueno, esto puede resultar impopular y/o no responder a su pregunta, pero ¿ha pensado en la granularidad de sus datos?

Una vez que haya reducido sus encabezados HTTP tanto como pueda, sospecho que aún querrá reducir la relación de encabezado/datos un poco más. La forma más obvia de hacerlo es enviar/recibir más de un elemento de datos en cada solicitud http.

Una capa adicional de lógica en el lado del cliente o del servidor (o un cambio en su modelo de datos) le permitiría solicitar datos en trozos más grandes, basados ​​en la medición de otros datos que probablemente necesitará cuando solicite un solo artículo.

El punto sería transferir más datos en cada solicitud con el fin de reducir el número de peticiones. El desperdicio de ancho de banda (y el almacenamiento del cliente), proveniente de la transferencia de datos que en realidad no necesitará, podría terminar siendo más aceptable que la huella del encabezado HTTP.

+1

No consideré la granularidad de los datos, gracias por llamar mi atención. Pero realmente un punto bien hecho! –

Cuestiones relacionadas