metodos clustering algoritmos agrupamiento optimization web httprequest latency

optimization - metodos - algoritmos de agrupamiento clustering



Costo de la solicitud http frente al tamaƱo del archivo, regla general (2)

Este tipo de pregunta se ha realizado antes de las solicitudes HTTP frente al tamaño del archivo. , pero espero una mejor respuesta. En esa pregunta vinculada, el contestador pareció hacer un buen trabajo respondiendo la pregunta con la ingeniosa fórmula de latencia + tiempo de transferencia con una latencia estimada de 80 ms y una velocidad de transferencia de 5Mb / s. Pero parece un defecto en al menos un aspecto. ¿Las múltiples solicitudes y transferencias no ocurren simultáneamente en una experiencia de navegación normal? Así es como se ve cuando examino la pestaña Red en Chrome. ¿No significa esto que la latencia de solicitud no es algo tan terrible?

¿Hay alguna otra cosa que considerar? Obviamente, la latencia y el ancho de banda variarán, pero ¿es buena regla general 80ms y 5Mb / sa? Pensé en una analogía y me pregunto si es correcta. Imagínese una estación de tren con solo una pista y una pista (o tal vez una para ambos). Las solicitudes de Http son como enviar un motor para obtener un montón de autos en otra estación. Regresan tirando de un largo tren de vagones, que representa el archivo solicitado que se descarga. Entonces podrías enviar un motor y hacer que recupere una carga masiva. O podría enviar múltiples motores y cada uno podría traer cargas más pequeñas, por supuesto, todos tendrían que esperar su turno para regresar a la estación. Y algunos motores no pudieron ser enviados hasta que otros entraron. ¿Es esta una analogía defectuosa?

Supongo que la gran pregunta es cómo puedes predecir cuánta superposición habrá en las solicitudes http para que puedas saber, por ejemplo, si generalmente vale la pena tener dos grandes archivos PNG en tu página o en su lugar tener una imagen web. , además de los archivos Websjs js y swf para navegadores incompatibles. Eso duplica la cantidad de solicitudes, pero más que reduce a la mitad el tamaño total del archivo (digamos 200kB de ahorro).


Este es el tipo de respuesta que estoy buscando. Hice algunas pruebas simplistas para tener una idea de la velocidad de muchos archivos pequeños frente a uno de gran tamaño.

Creé páginas html que cargaron un montón de imágenes de tamaño aleatorio de placekitten.com. Los cargué en Chrome con la pestaña Red abierta.

Aquí hay algunos resultados:

# of imgs Total Size (KB) Time (ms) 1 465 4000, 550 1 307 3000, 800, 350, 550, 400 30 192 1200, 900, 800, 900 30 529 7000, 5000, 6500, 7500

Entonces, una cosa importante a tener en cuenta es que los archivos individuales se vuelven mucho más rápidos después de haber sido cargados una vez. (La lista de veces separada por comas son recargas de página). Hice la actualización normal y también Empty Cache y Hard Reload. Extrañamente, no pareció hacer mucha diferencia en la forma en que me refresqué.

Mi conexión tenía una latencia o tiempo de retorno o lo que sea de alrededor de 120 a 130 ms y mi velocidad de descarga variaba entre 4 y 8 Mbps. Chrome parecía hacer alrededor de 6 solicitudes a la vez.

Al observar estas pocas pruebas, parece que, al menos en este rango de tamaños de archivos, obviamente es mejor tener menos solicitudes cuando los tamaños de los archivos son iguales, pero si puede reducir el tamaño del archivo a la mitad, incluso a expensas de aumentar el número de solicitudes http por 30, valdría la pena, al menos para una carga de página nueva.

Cualquier comentario o mejor respuesta sería apreciado.


Tu analogía no está mal en términos generales. Obviamente, si quieres ser realmente preciso en todos los aspectos, hay cosas que son demasiado simplistas o incorrectas (pero eso ocurre con casi todas las analogías).

Su estimación de 80ms y 5mb / s puede parecer lógica, pero aunque a la mayoría de nosotros nos gusta la teoría, deberíamos manejar este tipo de problemas de otra manera.

Para hacer buenas estimaciones , debe medir para obtener algunos datos y analizarlos. Toda estimación depende de algún contexto y no debes ignorarla .

Piense en no tener la misma latencia de estimación y ancho de banda para una conexión 3G, una conexión ADSL en Japón o una conexión ADSL en un país menos desarrollado por la tecnología. ¿Los clientes acceden desde el otro extremo del mundo o en el mismo país? Al igual que su buena observación de las conexiones simultáneas en el cliente, hay millones de posibles preguntas que debe hacerse y muy pocas respuestas de buena calidad sin tomar alguna medida.

Sé que no estoy respondiendo exactamente su pregunta, porque creo que no se puede responder sin tantos detalles sobre el dominio (más restricciones, y mucho, etc.).

Parece que tiene algunas ideas sobre cómo diseñar su solución. Mi mejor consejo es implementar cada uno de ellos y perfilarlos. Haga mediciones, intente identificar cuáles son sus cuellos de botella y vea si tiene algún control sobre ellos.

En algunos problemas, este tipo de preguntas podría tener una solución óptima, pero la diferencia entre óptimo y subóptimo podría ser insignificante en la práctica .