Optimizar el almacenamiento en memoria caché BLOB para entornos WAN (SharePoint Server 2010)

 

Se aplica a: SharePoint Server 2010

Última modificación del tema: 2016-11-30

En este artículo, se describe cómo usar el almacenamiento en memoria caché en Productos de Microsoft SharePoint 2010 para entornos WAN.

El almacenamiento en memoria caché se aborda por lo general como una forma de mejorar el rendimiento en la canalización de representación (desde el momento en que se recibe la solicitud en el servidor hasta el momento en que se empieza a transmitir la respuesta al equipo cliente). Pese a que se trata de un aspecto importante del rendimiento global del sitio, esta sección se centra en el almacenamiento en memoria caché por su relación con lo siguiente:

  • El role de la configuración del servidor en el almacenamiento en memoria caché del cliente.

  • El control del tamaño de los elementos que se transmiten a través de la red desde el servidor al cliente.

Memoria caché BLOB

La memoria caché BLOB es un mecanismo que está disponible únicamente con las características de publicación de SharePoint Server 2010. Resulta, por tanto, un candidato idóneo para sitios de portal de empresa que se basan en la plantilla de sitios de portal de colaboración y para sitios de conexión a Internet que se basan en la plantilla de sitios de portal de publicación. Con la memoria caché BLOB, puede configurar directivas de almacenamiento en memoria caché que estén asociadas con elementos que se envían desde listas de sitios de publicación, por ejemplo, la biblioteca Pages e Imágenes de la colección de sitios. Cuando el explorador en el equipo cliente encuentra una directiva de almacenamiento en memoria caché, detecta que el elemento que va a recuperar se puede guardar localmente y no necesita que se vuelva a hacer la solicitud hasta que venza la directiva de almacenamiento en memoria caché. En entornos diseminados geográficamente, esto resulta importante porque reduce el número de elementos solicitados y enviados a través de la red.

Cuando se activa la memoria caché BLOB en SharePoint Server 2010, ocurren dos cosas diferentes. En primer lugar, cada vez que se solicita un elemento que se puede almacenar en memoria caché, SharePoint Server 2010 busca en la unidad de disco duro del servidor web que recibió la solicitud para comprobar si existe una copia local. En caso de ser así, el archivo se transmite directamente desde el disco local al usuario. Si no estuviera en el disco local, se crearía una copia del elemento desde la base de datos de SQL donde está almacenado y, a continuación, se enviaría el elemento al usuario que ha realizado la solicitud. Posteriormente, todas las solicitudes para el elemento se envían directamente desde el servidor web hasta que el valor sobre la capacidad de almacenamiento en memoria caché del elemento indica que este ha caducado. Esto supone un mejor rendimiento para la granja de servidores debido a que se reduce la contención en el servidor de bases de datos.

El otro aspecto de activar la memoria caché BLOB es que se anexa un encabezado de capacidad de almacenamiento en memoria caché al elemento cuando este se envía al cliente. Este encabezado indica al explorador el tiempo que debe el elemento estar almacenado en caché. Por ejemplo, si un dibujo tiene un valor de capacidad de almacenamiento en memoria caché de tres días, el explorador usa la copia de la imagen que tiene en su memoria caché local si se vuelve a solicitar el dibujo dentro de los próximos tres días; no lo vuelve a solicitar al servidor.

Usar Fiddler para recopilar datos sobre la memoria caché BLOB

Cuando se comprueba el sitio para ver los elementos que están almacenados en memoria caché y cómo, puede usar una aplicación gratuita de depuración denominada Fiddler (http://www.fiddlertool.com). La captura de pantalla siguiente muestra una imagen de Fiddler en un sitio de SharePoint sencillo que se utiliza para la publicación. El sitio se creó con una plantilla para sitios de portal de colaboración. Se añadió contenido de texto adicional a la página, así como también se agregaron diversas imágenes a la página maestra.

Resultados de la herramienta Fiddler

En la aplicación Fiddler se incluye diversa información importante.

  • El número de columna a la izquierda indica que se realizaron un total de 44 solicitudes HTTP desde el explorador al servidor para representar la página.

  • La columna Result (Resultado) muestra el código de resultado HTTP que se devolvió desde la solicitud para el elemento; si el resultado es 200, indica que el elemento se recuperó correctamente.

  • La columna URL indica que se solicitó un elemento específico.

  • La columna Body (Cuerpo) indica el tamaño de cada elemento.

  • La columna Catching (Almacenamiento en memoria caché) muestra la directiva de almacenamiento en memoria caché asociada a cada elemento. Los datos en esta columna muestran que existen varios elementos con una directiva de almacenamiento en memoria caché asociada; es decir, tienen un atributo max-age superior a 0. Las directivas de almacenamiento en memoria caché se expresan en segundos, lo cual quiere decir que, en la página de la ilustración, hay diversos elementos configurados para que se almacenen en memoria caché durante 365 días (60 segundos en un minuto, 60 minutos en una hora, 24 horas en un día = 60x60x24 = 86.400x365 = 31.536.000).

Tenga en cuenta que los elementos con esa directiva de memoria caché se encuentran todos en el directorio _layouts. La razón por la que tienen esta configuración de memoria caché es por la forma en que está configurado el directorio virtual _layotus/images en IIS. Cuando se crea una aplicación web nueva, SharePoint Server 2010 crea automáticamente diversos directorios virtuales que se asignan a carpetas en los discos físicos del servidor web. Cuando se crea el directorio virtual _layouts/images, se agrega una directiva de almacenamiento en memoria caché que se aplica a la totalidad del directorio. En la siguiente captura de pantalla, se muestra la configuración para el directorio en el complemento del Administrador de IIS.

Cuadro de diálogo Establecer encabezados de respuesta HTTP personalizados

Debido a que estos elementos tienen asociada una directiva de almacenamiento en caché con un valor distinto a cero, la próxima vez que se solicite la página, el explorador usará la copia del elemento de la memoria caché del explorador local en lugar de solicitarla de nuevo al servidor. La captura de pantalla siguiente muestra una instantánea de Fiddler cuando se solicita la página por segunda vez.

Resultados de la herramienta Fiddler

Según muestran los datos de Fiddler, el número de elementos solicitado se reduce de forma significativa (de 44 a 11). Es importante resaltar que el número de solicitudes realizadas puede variar en función de cómo se realiza la solitud de la página. Si usa el botón Actualizar del explorador, seguramente, todos los elementos se volverán a solicitar, independientemente de que exista o no una versión almacenada en memoria caché del elemento.

El otro aspecto que aparece en los datos de Fiddler es que el explorador realiza una solicitud al servidor de las otras imágenes en la página maestra que ya tiene en su memoria caché local; esto es lo que indica el código de respuesta 304, lo cual quiere decir que el explorador ha realizado una solicitud condicional de un elemento. La respuesta 304 se refiere a que la versión en el servidor no se ha modificado con respecto a la versión en el cliente, de forma que no tiene que descargase de nuevo. Pese a que el archivo no se ha descargo a través de la red, ha realizado igualmente un recorrido de ida y vuelta hasta el servidor para determinar si la copia local es actual. En los entornos diseminados geográficamente, los viajes de ida y vuelta del servidor son costosos. Con lo cual, el objetivo es reducirlos el máximo posible. Esto se puede lograr si se agrega una directiva de almacenamiento en memoria caché que no tenga un valor cero para cada uno de los elementos restantes (excepto la página, que siempre la devuelve el servidor). La característica de memoria caché BLOB agrega esta directiva de almacenamiento en memoria caché.

Configurar la memoria caché BLOB mediante web.config

La memoria caché BLOB se configura mediante el archivo web.config para la aplicación web en la que se usará la memoria caché. Abra el archivo web.config en un editor de texto como el Bloc de notas y busque la entrada BlobCache. De forma predeterminada será:

<BlobCache location="" path="\.(gif|jpg|jpeg|jpe|jfif|bmp|dib|tif|tiff|ico|png|wdp|hdp|css|js|asf|avi|flv|m4v|mov|mp3|mp4|mpeg|mpg|rm|rmvb|wma|wmv)$" maxSize="10" enabled="false" />

Los atributos que se usan en el elemento BlobCache tienen los significados siguientes:

  • location    Se refiere a la ubicación en la unidad del disco duro del servidor web donde se van a almacenar los elementos almacenados en la memoria caché.

  • path   Una expresión regex para los tipos de archivos que se deben almacenar en memoria caché.

  • maxSize **   **El tamaño en GB que puede usar la memoria caché.

  • enabled    Se establece en true para habilitar la memoria caché BLOB.

El siguiente atributo adicional (no se incluye de forma predeterminada) resulta necesario para establecer el valor de caducidad de almacenamiento en la memoria caché en elementos individuales:

  • max-age   El tiempo en segundos que deben permanecer almacenados en memoria caché los elementos en el equipo cliente.

Al establecer el atributo max-age en un valor que no sea cero, los elementos con capacidad para almacenarse en memoria caché tendrán un valor de caducidad de memoria caché asociado, de forma que ya no es necesario que un explorador descargue el elemento ni incluso comprobar que se dispone de la versión más reciente. Por ejemplo, supongamos que se quiere habilitar el almacenamiento en memoria caché y asignar hasta 100 MB al servidor web para almacenar elementos. Deben caducar una vez al día y, además de los tipos predefinidos en memoria caché, también se deben almacenar en memoria caché los archivos .htc. Para poder aceptar estos requisitos, especifique los siguientes atributos de BlobCache:

<BlobCache location="C:\blobcache" path="\.(gif|jpg|png|css|js|htc)$ " maxSize="100" max-age="86400" enabled="true"/>

Tenga en cuenta que este cambio en el archivo web.config debe realizarse en todos los servidores web de la granja. En la mayoría de los casos, la memoria caché BLOB comenzará a funcionar inmediatamente, pero es más seguro utilizar el comando iisreset cuando se implementen los cambios. La siguiente captura de pantalla presenta los datos de Fiddler para la misma solicitud de página que se mostró anteriormente, pero con la memoria caché BLOB habilitada como se indicó.

Resultados de la herramienta Fiddler

Tenga en cuenta que todos los elementos en la biblioteca /SiteCollectionImages tienen ahora un código de estado HTTP de 200, lo que indica que se descargaron correctamente. Además, ahora tienen todos una directiva de almacenamiento en caché asociada que especifica que no van a caducar durante un día (86.400 segundos). Si la página se vuelve a solicitar, Fiddler mostrará que ninguna de las imágenes se vuelve a solicitar; el número total de solicitudes a enviar a esa página se ha reducido de 44 a 3 y dos de las tres solicitudes restantes son meramente una negociación de autenticación NTLM que se produce entre el servidor web y la aplicación cliente. En la ilustración siguiente, se muestran datos de Fiddler cuando la página se vuelve a solicitar.

Resultados de la herramienta Fiddler

Consideraciones adicionales en el uso de la memoria caché BLOB

Por otra parte, se debe considerar lo siguiente cuando se trabaja con la memoria caché BLOB:

  • Es necesario un esfuerzo adicional a la hora de la configuración porque se tiene que actualizar el archivo web.config en cada servidor web. Sin embargo, las ventajas merecen el esfuerzo.

  • Investigue los contenidos del sitio y determine si hay otros tipos de archivo que se deban enviar desde la memoria caché. Un buen ejemplo son los archivos .htc; dado que se utilizan en la mayoría de los sitios de publicación, debe agregar ese tipo de archivo a la lista de tipos de archivos que se van a almacenar en memoria caché.

  • La memoria caché BLOB solo trabaja con elementos que están almacenados en bibliotecas SharePoint; no se puede utilizar para almacenar en caché contenido de otros orígenes.

  • De forma predeterminada, algunas listas no funcionan con usuarios anónimos. Si hay usuarios anónimos que van a obtener acceso al sitio, los permisos se deben configurar manualmente para las listas siguientes con el fin de que sus elementos se almacenen en caché:

    • Galería de páginas maestras

    • Biblioteca de estilos

Existen otras dos opciones de configuración a tener en cuenta cuando se trabaja con la memoria caché BLOB. La primera tiene que ver con el vaciado de la memoria caché BLOB. Si se tiene que vaciar la memoria caché para un sitio determinado, vaya a esa colección de sitios y, a continuación, haga clic en el menú Acciones del sitio...Configuración del sitio...Modificar toda la configuración del sitio. En la lista de tareas de Administración de la colección de sitios, haga clic en Vínculo a la memoria caché del objeto de la colección de sitios. En la sección Restablecimiento de caché basada en disco, active la casilla de verificación Forzar a este servidor a restablecer su caché basada en disco y, a continuación, haga clic en Aceptar.