He estado experimentando con tiempos de caducidad de caché aleatorios para evitar situaciones en las que una solicitud individual obliga a actualizar varias cosas a la vez. Por ejemplo, una página web puede incluir cinco componentes diferentes. Si cada uno está configurado para agotar el tiempo de espera en 30 minutos, el usuario tendrá un largo tiempo de espera cada 30 minutos. Por lo tanto, los establece a todos en un tiempo aleatorio entre 15 y 45 minutos para que sea probable que a lo sumo solo se vuelva a cargar un componente por cada carga de página dada.
Estoy tratando de encontrar alguna investigación o pautas sobre este tema, por ejemplo, parámetros de variación óptimos. Recuerdo haber visto un artículo sobre cómo Google (?) Usa esta técnica, pero no puede localizarla, y no parece haber mucho escrito sobre el tema.
fuente
Respuestas:
Algunos documentos:
fuente
Volviendo a responder mi propia pregunta, el principal problema aquí es cómo evitar que todo expire al mismo tiempo. Si se permite que eso suceda, el sistema se ralentizará y se congestionará mientras vuelve a llenar el caché.
La mayoría de las veces, esto realmente no es un problema en la práctica. Con el tiempo, todos los componentes tienden a derivar en términos del tiempo que caducan. Si hay varios componentes que se están reconstruyendo todos al mismo tiempo, es un olor a código porque probablemente deberían almacenarse en caché como un solo componente (por ejemplo, si tenía un encabezado, cuerpo y pie de página únicos almacenados en caché por separado, tal vez pueda solo almacena la página en caché).
Ciertamente, hay momentos en los que es necesario almacenar en caché muchas cosas al mismo tiempo, por ejemplo, después de iniciar un sistema, si borramos todo el caché o rotamos las claves del caché. En este caso, generalmente no es tan malo porque los componentes se llenan rápidamente y las caducidades se separan posteriormente.
En la medida en que esto sea un problema, hay un par de soluciones:
fuente