Digamos que, en términos teóricos, tengo una acción de página/controlador en mi sitio web que hace algunas cosas muy pesadas. Toma alrededor de 10 segundos completar su operación.ASP.NET (MVC) Outputcache y solicitudes concurrentes
Ahora, utilizo el mecanismo de caché de salida de .NET para almacenarlo en caché durante 15 minutos (por ejemplo, uso [OutputCache(Duration = 900)]
) ¿Qué ocurre si, después de 15 minutos, la memoria caché expira y 100 usuarios vuelven a solicitarla en esos 10 segundos? se necesita para hacer el procesamiento pesado?
- El material pesado se realiza sólo la primera vez, y hay algún mecanismo de bloqueo para que los otros 99 usuarios obtendrán el resultado caché
- El material pesado se hace 100 veces (y el servidor se ve mermada como puede tomar hasta 100 * 10 segundos)
Pregunta fácil tal vez, pero no estoy 100% seguro. Espero que sea el número uno, sin embargo :-)
¡Gracias!
Gracias, cielos Realmente, no tengo una solicitud que demore 10 segundos, pero exagero mucho para ilustrar un punto. Solo tenía curiosidad por saber qué sucedería en tal escenario. ¡Gracias! Puede considerar la implementación de controladores asíncronos. – Razzie
Ha pasado un tiempo ... simplemente hice una prueba y estoy seguro de que no se bloquea, como usted dijo. Gracias. – Razzie