P: ¿Qué tipo de caché es un buen caché?
Un caché que resuelve un problema es un buen caché. Esta frase es simplemente un disparate, equivalente a gato blanco, gato negro y el que caza ratones es un buen gato.
Entonces, bajo la premisa de resolver el problema, ¿qué caché es el mejor caché? Mi respuesta a esta pregunta es: un caché con una alta tasa de aciertos es un buen caché.
Bajo la premisa de resolver el problema, un caché con una tasa de aciertos alta puede requerir menos inversión en hardware que un caché con una tasa de aciertos baja. Al mismo tiempo, la cantidad de cachés puede ser menor que la cantidad de cachés con una tasa de aciertos baja. De esta manera, la velocidad de direccionamiento será definitivamente más rápida. Por lo tanto, un caché con una alta tasa de aciertos es un buen caché.
Tasa de aciertos de caché
Después de que una entidad almacenada en caché se coloca en la caché, si no ha sido utilizada una vez por el mundo exterior mientras la entidad está almacenada en caché (durante el ciclo de vida de la entidad que se almacena en caché), la tasa de aciertos de la entidad almacenada en caché es 0. Cuantas más veces se solicite esta entidad, mayor será su tasa de aciertos de caché.
Lo que se menciona anteriormente es la tasa de aciertos de una entidad en el caché. Para el caché en su conjunto, su tasa de aciertos es el diagrama de distribución de la tasa de aciertos de cada individuo almacenado en caché arriba.
Para el almacenamiento en caché: normalmente los individuos más utilizados son una parte muy pequeña del total. Los menos utilizados constituyen una gran proporción del total.
Por eso a menudo vemos datos como este:
De los 10.000 elementos almacenados en caché, 100 se utilizan con frecuencia, casi cada minuto. 2000 datos, solicitados una vez por hora. Se solicitan 3000 datos una vez al día y los datos restantes no se han utilizado ni una sola vez después de ser arrojados al caché.
Hoy en día, el hardware se está desarrollando rápidamente. Si solo necesitamos almacenar en caché 10,000 datos, podemos arrojar completamente los 10,000 datos al caché independientemente de si se usan. De esta manera, siempre que busquemos datos, definitivamente los tendremos. datos en la caché. No es necesario realizar operaciones adicionales ni realizar solicitudes a la base de datos.
Sin embargo, el hardware evoluciona rápidamente, al igual que la cantidad de datos. Para un sitio web pequeño, si se almacenan en caché 10.000 datos, se almacenarán todos en caché. Sin embargo, los sitios web grandes tienen al menos millones de datos o datos de nivel T. Obviamente, todos estos datos no se pueden guardar en el caché. En este momento, es muy importante diseñar una solución de almacenamiento en caché razonable y mejorar la tasa de aciertos de la caché. Y es necesario.
Algunos métodos comunes para mejorar la tasa de aciertos de la caché
Desde una perspectiva puramente técnica, solo registramos la cantidad de solicitudes de usuarios por unidad de tiempo y almacenamos en caché los datos más utilizados en función de esta información.
Pero la mayoría de las veces, mejoramos la tasa de aciertos de la caché en función de la lógica empresarial. Por ejemplo: el año pasado y el blog publicado el año pasado, las solicitudes de navegación para este tipo de artículos solían ser al menos unas cuantas veces al día. Generalmente no se debe almacenar en caché en la memoria.
Por poner otro ejemplo, una publicación con muchas respuestas generalmente será vista por más personas que una publicación con menos respuestas.
Deberíamos utilizar la lógica anterior y proporcionar un algoritmo de almacenamiento en caché basado en nuestra lógica empresarial real para mejorar la tasa de aciertos de la caché. Almacenemos en caché los datos apropiados, en lugar de todos los datos, según lo permita nuestro hardware.
Un ejemplo negativo es: pase lo que pase, en un sitio de blogs grande, cuando un usuario solicita un artículo, se descubre que no está en la memoria caché, por lo que se lee de la base de datos y luego se arroja al caché.
Ya sabes, ahora hay muchos rastreadores. Además, en el caso de los sitios compatibles con los motores de búsqueda, como los blogs, la mayor parte de la presión de acceso proviene de los motores de búsqueda. Estas visitas suelen durar una hora o un día, con sólo unas pocas o incluso una solicitud de un determinado artículo, y luego nunca más. La tasa de aciertos del método de almacenamiento en caché anterior será muy baja.
Alguien puede preguntar aquí, Guo Hongjun, ya que no me recomienda almacenar en caché el contenido de estos blogs, pero ¿cómo puedo mejorar el rendimiento de mi sitio? Al menos debo asegurarme de que mi sitio de blogs no responda demasiado lentamente. a las solicitudes de los usuarios.
Hay muchas soluciones a este problema. Uno de los métodos más simples es convertir estos blogs en páginas HTML estáticas, que son el caché del sistema de archivos. Debido al disco duro, se puede entender simplemente que el sistema de archivos es infinitamente expandible. para que muchos contenidos con una tasa de aciertos baja se almacenen en caché.
Si su página requiere algún juicio de lógica dinámica, puede almacenar en caché los datos en archivos XML y luego el segmento del servidor integra estos archivos XML o incluye archivos. Este también es un buen enfoque.
Habiendo dicho tantas cuestiones sobre la tasa de aciertos de la caché, resumamos brevemente las opiniones sobre la tasa de aciertos de la caché:
Los sitios web pequeños pueden almacenar en caché todos los datos y, en general, la presión no será grande, por lo que se pueden ignorar los problemas de tasa de aciertos de la caché.
Los servicios grandes no pueden almacenar en caché todos los datos, sino solo una parte de los datos. En este momento, el arquitecto necesita diseñar un método de almacenamiento en caché adecuado para la lógica empresarial para mejorar la tasa de aciertos de la caché tanto como sea posible.
La mayoría de los métodos para mejorar la tasa de aciertos están vinculados a la lógica empresarial y requieren un análisis detallado de problemas específicos. Para los datos que no se pueden almacenar en caché, la forma más sencilla de mejorar el rendimiento es utilizar el almacenamiento en caché de archivos.
El almacenamiento en caché de archivos puede almacenar en caché todo el contenido en un archivo estático; también puede almacenar en caché un área de toda la página en un archivo y luego incluirla y serializar una entidad en un archivo XML para el almacenamiento en caché.
Veamos algunos otros aspectos menos importantes del almacenamiento en caché:
Actividades del ciclo de vida de la caché
El contenido que nunca caduca o cambia para siempre no debe colocarse en el caché. La caché es un almacenamiento temporal, no permanente, por lo que el ciclo de vida de la caché es limitado.
A su vez podrá realizar las siguientes actividades:
Ingrese al caché. (Al ingresar al caché, es posible que deba especificar su política de vencimiento futuro. Si no se especifica, debe usar la política de vencimiento predeterminada del sistema)
Consíguelo del caché. Tenga en cuenta que los problemas de seguridad de subprocesos deben abordarse en este momento.
Al actualizar el caché, tenga en cuenta que también debe considerar los problemas de seguridad de los subprocesos al salir del caché. Esto puede ser una solicitud externa o el caché puede borrarlo según la política de caducidad.
Política de caducidad de caché
En general, preguntaría: ¿qué estrategias de caducidad de caché ha encontrado en los cachés con los que ha entrado en contacto?
Las estrategias de vencimiento más comunes son las siguientes:
Si no se ha solicitado durante mucho tiempo, caducará. La más típica es la función de Sección proporcionada por ASP y ASP.net. De hecho, es un caché.
El caché que depende de los cambios de archivos caducará una vez que se modifique el archivo, generalmente el Web.config del sitio WEB. Una vez que el archivo cambie, no solo se reiniciará el caché, sino que el proceso de IIS también realizará una liberación.
En base a esto, es posible que vea políticas de caducidad de caché para muchas dependencias. Por ejemplo, política de caducidad de caché que depende de la base de datos.
Por supuesto, puede haber estrategias de caducidad más complejas en la lógica empresarial. En la nueva versión del foro del sistema de puntos CSDN, el caché de la lista de publicaciones se borrará a 550 datos cuando el caché de datos de la lista llegue a 600.
Otro ejemplo es que el caché de nuevas publicaciones del foro basadas en puntos caduca cuando ninguna lista hace referencia a la publicación, y la publicación caduca.
Problema de sincronización de caché
El uso de caché significa que pueden coexistir varias copias de los mismos datos. Si su código no considera una situación determinada, los dos datos serán inconsistentes. Aquí es cuando ocurrirán los problemas.
La solución es simple: piense detenidamente en la lógica de su negocio y en las situaciones que desencadenan el código, y no deje ningún área que no haya tocado fondo.
Los métodos simples pueden hacer que la lógica de su código sea muy compleja.
Es por eso que algunas personas recomiendan no utilizar el almacenamiento en caché cuando no sea necesario. Una vez que comience a usar el almacenamiento en caché, debe estar preparado para agregar una gran cantidad de código para manejar la sincronización de datos.
Inicializar y completar datos de caché
A veces, después de inicializar el caché, es necesario completar previamente algunos datos en el caché. Esta es la operación de inicialización de datos almacenados en caché.
Es necesario considerar las siguientes cuestiones durante la operación de inicialización de datos almacenados en caché:
¿Cuánto tiempo lleva la inicialización? Generalmente, si se trata de un sitio, podemos manejar este trabajo de inicialización en Application_OnStart de Global.asa. La inicialización generalmente no puede llevar mucho tiempo. En este momento, se prueba nuestra capacidad de optimización del código.
Durante la inicialización, los datos generalmente se importan en lotes, en lugar de procesarlos uno por uno durante el uso normal.
Resumir:
Este artículo presenta algunos de mis puntos de vista sobre el almacenamiento en caché sin profundizar en tecnologías de almacenamiento en caché específicas. Espero que a través de la descripción de este artículo, las personas que solo conocen el uso del almacenamiento en caché pero no comprenden la idea del almacenamiento en caché puedan tener una comprensión preliminar.
http://blog.csdn.net/ghj1976/archive/2007/09/01/1768676.aspx