http no persistente
¿Cuáles son las desventajas de usar la canalización HTTP? (1)
Errores de implementación
Para que la canalización funcione, las respuestas deben volver en el orden en que se solicitaron. Una implementación de servidor ingenua podría enviar la respuesta tan pronto como se haya calculado. Si se envían varias solicitudes en paralelo, y la primera solicitud demora más en procesarse (por ejemplo, procesando una imagen más grande), las respuestas estarán fuera de orden.
Este es un problema para el cliente ya que HTTP es un protocolo sin estado, el cliente no tiene forma de hacer coincidir las solicitudes con las respuestas. Depende del orden en que regresaron las respuestas.
- Safari aparentemente usó la canalización HTTP para las imágenes al menos. Esto da como resultado un problema en el que las imágenes se intercambian .
- AFNetworking solía usar tuberías, pero se retiró después de un problema reportado .
- Todos los navegadores principales (aparte de Opera) tienen la canalización HTTP deshabilitada o no implementada.
Problemas de desempeño
Incluso si el servidor admite correctamente la canalización, pueden surgir problemas de rendimiento porque todas las solicitudes posteriores tienen que esperar a que se complete la primera (bloqueo de jefe de línea).
Este artículo , habla sobre la pérdida de rendimiento en algunas circunstancias y un potencial ataque de denegación de servicio.
Este artículo también sugiere que la canalización no es una victoria masiva.
WWDC 2015 - La conexión en red con NSURLSession explica muy bien el bloqueo del jefe de línea. (La solución es cambiar a HTTP 2, que admite prioridades)
Entonces, en resumen, los problemas con la canalización de HTTP son:
- Algunos servidores y la mayoría de los servidores proxy no lo admiten. (Quizás debido a problemas de seguridad / confiabilidad o rendimiento)
- Algunos servidores lo admiten incorrectamente y esto puede provocar errores en los clientes.
- No es necesariamente una victoria de rendimiento.
- Susceptible al bloqueo de cabecera de línea.
La sesión 706 de la WWDC 2012: las mejores prácticas de redes explica la canalización HTTP .
- Por defecto está deshabilitado en iOS
- En la charla se describe como una gran victoria de rendimiento.
¿Por qué no quieres usarlo?