design - que - http cache
Estrategias para el almacenamiento en caché en la Web? (8)
¿Qué preocupaciones, procesos y preguntas tiene en cuenta al decidir cuándo y cómo almacenar en caché? ¿Es siempre una situación sin victoria?
Esto presupone que está atascado con una base de código que se ha optimizado.
¿Qué tipo de almacenamiento en caché? ¿Caché del lado del servidor? ¿Caché del lado del cliente?
El almacenamiento en memoria caché del lado del cliente es una obviedad con ciertas cosas, como HTML estático, archivos SWF e imágenes. Determine con qué frecuencia los activos pueden cambiar y configure los encabezados de "Vencimiento" según corresponda. (2 días, 2 semanas, 2 meses?)
Las páginas dinámicas, por definición, son un poco más difíciles de almacenar en caché. Se han realizado algunas exploraciones en el almacenamiento en caché de ciertos fragmentos utilizando Javascript (y degradando a IFrames si JS no está disponible). Sin embargo, esto podría ser un poco más difícil de adaptar a un sitio existente.
DB y el almacenamiento en caché a nivel de aplicación pueden, o no, funcionar, según su situación. Eso realmente depende de dónde están tus cuellos de botella. Averiguar dónde pasa su aplicación la mayor parte del tiempo en la representación de la página es, probablemente, la prioridad 1, entonces puede comenzar a buscar dónde y cómo almacenar en caché.
Donde esté disponible, busque el almacenamiento en memoria caché de todo el objeto. En ASPNET, se trata de una función integrada en la que puede colocar sus objetos lógicos de negocio en la aplicación IIS y acceder a ellos desde allí.
Esto significa que puede almacenar todo lo que necesita para generar una página en la memoria (escritura persistente en la base de datos) y generar una página sin CUALQUIER IO de base de datos.
Aún necesita usar la lógica de creación de páginas para generar la página, pero ahorra mucho tiempo en obtener los datos.
Otras técnicas incluyen el almacenamiento en caché de resultados localizados, donde se captura la salida antes de enviar y se guarda en el archivo. Esto es ideal para secciones estáticas (como la navegación en ciertas páginas o cuerpos de texto) e incluirlas cuando se soliciten. La mayoría de las implementaciones depuran objetos en caché como este cuando ocurre una escritura o después de un cierto período de tiempo.
Luego está el menos "preciso": el almacenamiento en caché de toda la página. Es el más exitoso, pero es bastante inútil a menos que tengas páginas muy simples.
En primer lugar, si su código está optimizado como lo dijo, solo verá beneficios notables de rendimiento cuando el sitio reciba muchas solicitudes.
Sin embargo, es más rápido extraer recursos de la RAM que del disco, por lo que su servidor web podrá gestionar más solicitudes si tiene una estrategia de almacenamiento en caché.
En cuanto a saber cuándo va a necesitar almacenamiento en caché, tenga en cuenta que incluso los servidores web modernos de gama baja pueden manejar cientos de solicitudes por segundo, así que a menos que espere una cantidad decente de tráfico, el almacenamiento en caché probablemente sea algo que puede saltarse.
Además, si extraes contenido de tu base de datos (por ejemplo, probablemente lo haga), el almacenamiento en caché puede ser muy útil porque las operaciones de la base de datos son relativamente costosas y pueden ser un gran cuello de botella en situaciones de gran volumen.
En cuanto a un escenario en el que no es apropiado almacenar en caché o cuando el almacenamiento en caché se vuelve difícil ... Si intenta almacenar en caché una página dinámica que, por ejemplo, muestra la fecha y hora actuales, siempre verá una fecha / hora anterior a menos que obtenga un poco más involucrado con su estrategia de almacenamiento en caché. Entonces eso es algo en que pensar.
He estado trabajando con DotNetNuke más recientemente para aplicaciones web y hay una serie de cosas que considero cada vez que implemento soluciones de almacenamiento en caché.
- ¿Todos los usuarios necesitan ver el contenido en caché?
- ¿Con qué frecuencia cambia cada bit de contenido?
- ¿Puedo guardar en caché toda la página?
- ¿Necesito una forma manual para purgar el caché?
- ¿Puedo usar un solo mecanismo de caché para todo el sitio, o necesito soluciones múltiples?
- ¿Qué impactos ocurren si la información está de alguna manera desactualizada?
Puede almacenar en caché por tiempo. Esto es útil para datos que cambian rápidamente. Puede establecer el tiempo durante 30 segundos o 1 minuto. Por supuesto, esto requiere algo de tráfico. Más tráfico que tiene, más puede jugar con el tiempo porque si tiene 1 visita cada hora, esta visita completará el caché y no lo usará ...
Puede almacenar en caché por evento ... si cambian sus datos, actualiza el caché ... esto es muy útil si los datos deben ser precisos para el usuario muy rápido.
Puede almacenar en caché el contenido estático que usted sabe que no cambiará. Si tiene un top 10 del día que se actualiza todos los días, entonces puede almacenar todo en el caché y actualizar todos los días.
Qué idioma estás usando? Con ASP, tiene un muy fácil almacenamiento en caché con solo agregar alguna etiqueta de propiedad sobre el método y el valor se almacena en caché dependiendo de la hora.
Si desea más control sobre la memoria caché, puede utilizar algún sistema popular como MemCached y tener un control con tiempo o por evento.
Vería cada característica de su sitio web / aplicación para cada función:
- ¿Debería ser almacenado en caché?
- ¿Cuánto tiempo debería estar en la memoria caché?
- ¿Cuándo debería eliminarse el caché?
Yo personalmente iría en contra del almacenamiento en caché de páginas enteras a favor de las secciones de caché del sitio web / aplicación.
Yahoo, por ejemplo, "versiones" de su JavaScript, por lo que su navegador descarga code-1.2.3.js y cuando aparece una nueva versión, hacen referencia a esa versión. Al hacer esto, pueden hacer que su código JavaScript sea almacenable en caché durante mucho tiempo.
En cuanto a la respuesta general, creo que depende de sus datos, de la frecuencia con la que cambia. Por ejemplo, las imágenes no cambian muy a menudo, pero las páginas html sí. La página "Acerca de nosotros" no cambia con demasiada frecuencia, pero sí la sección de noticias.