genero dinámicamente gráfico en mi controlador:Symfony - imagen en respuesta - velocidad, optimización
si no existe el archivo (nombre de archivo único) a continuación, generar gráficos y guardarlo
retorno RedirectResponse ($ url)
(3. he intentado también:
$fp = fopen($url, "rb");
$str = stream_get_contents($fp);
fclose($fp);
$response = new Response($str, 200);
$response->headers->set('Content-Type', 'image/png');
return $response;
)
Lo necesito para generar dinámicamente barras de usuarios para los usuarios [en este gráfico, algunos textos se actualizarán automáticamente si se realizarán algunos cambios en mis sitios web].
Así que es importante para mí que este script funcione rápido y no mate mi servidor/conmutador de banda. Para lograr eso, hice un caché donde se almacenan todos los gráficos generados. Pero tengo un problema con la velocidad, las soluciones que he descrito arriba son bastante lentas, cuando lo he probado en Chrome con la herramienta de desarrollador (F12), entonces me muestra que ambas soluciones (2. y 3.) aproximadamente ~ 1s (cuando los mismos gráficos [sin controladores, etc. solo dirigen url a .png] cargan 44ms).
Así que si solo para mí toma aproximadamente ~ 1s por gráfico, entonces si, por ejemplo, 1000 usuarios generarán al mismo tiempo este gráfico, puede ralentizar mi sitio web, creo.
Por favor, ayuda, ¿conoces alguna forma más rápida de hacerlo?
PS. Redirigir no es lo más deseado para mí, porque preferiría dejar la URL tal como está, por ejemplo smth/username/userbar/insted of smth/img/userbars/cache/blabla.png. Pero si va a ser mucho más rápido, entonces puedo soportarlo :).
EDITAR: Para ser claros: no estoy buscando una solución a las imágenes de caché, mi problema es que devolver imágenes a través del controlador (imágenes ya generadas, solo desde ftp) toma aproximadamente 1s, cuando normalmente si lo hace por ejemplo
<img src="direct_url_to_png">
toma aproximadamente 44ms.
"es utilizar HTML/CSS para mostrar los gráficos" ¿qué quieres decir? No lo veo porque primero necesito obtener algunas estadísticas de la base de datos, por lo que preferiría pasarlo por Controller. Creo que hay un problema al devolver esta imagen (usando stream_get_contents o redirección que toma aproximadamente 800ms). Por cierto, ¿tal vez estoy totalmente equivocado y mi solución no es tan mala? ¿Si solo afecta la carga de la imagen para el usuario y no ralentizará el servidor de lo que creo que podría ser? Como veo, se centró en almacenar imágenes generadas, pero un problema real es devolver esta imagen :). –
Este tiempo que he anotado anteriormente se refiere a la carga de imágenes desde el caché. Cargar la imagen ya generada desde ftp a través del controlador toma aproximadamente 1s y me gustaría mejorarla. –
Gracias por su asesoramiento, lo he probado y en general no es tan malo. Cuando genero el gráfico por separado, solo carga unos 150 ms (no importa si lo hago mediante redirect o stream_get_contents), así que no es tan malo, creo. Cargarlo directamente lleva unos 32 ms, pero verifico si el archivo existe, obtengo información de la base de datos y obtengo un gráfico, por lo que parece ser bueno. –