Pregunta

Siempre tuve la idea de que hacer un HEAD solicitar en lugar de un GET La solicitud fue más rápida (sin importar el tamaño del recurso) y, por lo tanto, tuvo ventajas en ciertas soluciones.

Sin embargo, mientras hace un HEAD Solicitud en Python (a un recurso dinámico generado por más de 5 MB) me di cuenta de que tomó el mismo tiempo que hacer un GET Solicitar (casi 27 segundos en lugar de los 'menos de 2 segundos' que esperaba).

Usó algunas soluciones de Urllib2 para hacer un HEAD Solicitud encontrada aquí e incluso utilizada pycurl (ajuste headers y nobody a True). Ambos tomaron el mismo tiempo.

¿Me estoy perdiendo algo conceptualmente? ¿Es posible, usar python, hacer un 'rápido'? HEAD ¿solicitud?

¿Fue útil?

Solución

El servidor está tomando la mayor parte del tiempo, no su solicitante o la red. Si se trata de un recurso dinámico, es probable que el servidor no conozca toda la información del encabezado, en particular, longitud de contenido, hasta que la cree. Por lo tanto, tiene que construir todo si está haciendo la cabeza o obteniendo.

Otros consejos

El tiempo de respuesta está dominado por el servidor, no por su solicitud. La solicitud principal devuelve menos datos (solo los encabezados), por lo que conceptualmente debería ser más rápido, pero en la práctica, muchos recursos estáticos se almacenan en caché, por lo que casi no hay diferencia medible (justo el tiempo para que los paquetes adicionales bajen por el cable).

Lo más probable es que la mayor parte de ese tiempo de solicitud sea en realidad cualquier proceso que genera la respuesta de 5+MB en el servidor en lugar del tiempo para transferirlo a usted.

En muchos casos, una aplicación web seguirá ejecutando el script completo cuando responda a una solicitud principal; simplemente no devolverá el cuerpo completo al solicitante.

Si tiene acceso al código que está procesando esa solicitud, es posible que pueda agregar una condición allí para que maneje la solicitud de manera diferente dependiendo del método, lo que podría acelerar drásticamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top