Mejorando el rendimiento de nuestras aplicaciones web de forma sencilla con la directiva OutputCache.

A lo largo de los años que llevo trabajando, he aprendido que para que los clientes/usuarios queden satisfechos, toda aplicación debe cumplir los siguientes requisitos:

  1. Que haga lo que tiene que hacer, es decir, que haga las funciones para las que ha sido pensada.
  2. Que sea rápida.
  3. Que sea bonita y usable.

Si una aplicación cumple estos tres requisitos, habremos hecho bien nuestro trabajo y el cliente/usuario seguro que va a estar contento.

Hoy vamos a centrarnos en el requisito 2, es decir, en el performance o rendimiento de las aplicaciones y como mejorarlo.

Mejorando el performance o rendimiento de nuestras aplicaciones Web.

Uno de los factores más importantes para que el performance o rendimiento de la aplicación sea bueno, es la capacidad para almacenar elementos en memoria en el momento que se solicitan.

Estos elementos, se pueden almacenar en varios sitios (cache de hardware y software, en un navegador web, en un proxy etc…), pero hoy nos vamos a centrar en la cache.

ASP.NET, nos permite dos tipos de almacenamiento en cache:

  • Almacenamiento en caché de resultados (páginas dinámicas y respuestas a controles de usuario).
  • Almacenamiento de datos de la aplicación (nos permite almacenar en la memoria del servidor objetos [los datos de la aplicación] programáticamente).

Para cachear resultados, podemos usar dos técnicas:

  • Cacheo a nivel de página (Output Caching)
  • Cacheo de partes de la página (Partial-Page Output Caching)

Mejorando el rendimiento de nuestras aplicaciones web de forma sencilla con la directiva OutputCache.

Para cachear resultados a nivel de página o control, ASP.NET, nos proporciona la directiva OutputCache de manera que con incluirla con el resto de directivas de la página, ya vamos a tener implementada una cache de una forma muy sencilla.

Esto funciona de manera que tras la primera petición http la página o control ya no se ejecuta y se sirve el OutputCache.

La directiva OutputCache, tiene dos atributos obligatorios:

  • Duration: Establece la duración en segundos e indica el tiempo que la página o control va a estar almacenado en la memoria.
  • VaryByParam / VaryByControl: Se requiere uno de los dos y como valores por efecto puede usarse none o *.
    • VaryByParam: Lista de cadenas separadas por punto y coma que representan los atributos (GET o POST) con los que se modificara el alamacenamiento de la página.
    • VaryByControl: Lista de cadenas, separadas por punto y coma, que se utilizan para modificar el almacenamiento en la caché de resultados de un control de usuario. Estas cadenas representan los valores de la propiedad ID de los controles de servidor ASP.NET declarados en el control de usuario.

La directiva OutputCache, tiene el siguiente aspecto:

<%@Outputcache Duration="10" VaryByParam="None" %>

Y si queremos hacerlo programáticamente (es decir, sin usar la directiva) sería de la siguiente manera:

Response.Cache.SetExpires(DateTime.Now.AddSeconds(10));

Si en nuestra página o control, tenemos una parte que cambia con frecuencia, podemos usar un control que nos proporciona ASP.NET que nos va a permitir que estando la página o control en la cache, cierta información si que la procese.

Este control es el Substitution, y lo tenemos que usar de la siguiente forma:

<asp:Substitution ID="sbsDate" runat="server" MethodName="GetCurrentDate"/>

Con el atributo MethodName, le indicamos el método que nos devuelve la información. La firma (e implementación en este caso) es la siguiente:

public static string GetCurrentDate(HttpContext context)
{
return DateTime.Now.ToString();
}

Como veis es muy simple de utilizar esta cache y puede ser tremendamente efectiva siempre y cuando tengas mucho tráfico (en el último proyecto que he estado ha sido en  uno de los portales fuertes del país y tenían una media de 90 peticiones por segundo) si no la verdad es que no os va a ser muy útil. Aun así es una de esas cosas que con muy poco esfuerzo podemos tener unos buenos resultados y no está mal ponerlo en algunos sitios.

Descargas / Downloads

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s