Publié vendredi 30 septembre 2011 23:00 par Arnault Nouvel

[SharePoint 2010] Site internet et performances : le BlobCache

Un nouveau site internet réalisé en SharePoint 2010, et développé par Winwise, vient d’apparaitre sur la toile : http://www.ca-ifcam.fr.
Pour introduire brièvement ce projet, ce site a pour vocation principale d’exposer un catalogue de formation aux salariés du groupe Crédit Agricole. Les plus curieux trouveront la partie la plus intéressante via la recherche catalogue. Passons maintenant au retour d’expérience !

De bonnes performances sont essentielles au succès d’un site internet. Pour les obtenir, nous verrons dans une série de billets qu’il est possible d’intervenir à plusieurs niveaux. L’administrateur, le développeur, et même les auteurs de contenu ont un rôle à jouer. Commençons par le BlobCache, qui peut être activé par l’administrateur.

Disponible nativement dans SharePoint, le BlobCache est un mécanisme de cache de ressources qui s’avère particulièrement efficace dans le cadre d'un site internet. Il permet de mettre en place à la fois du cache serveur et du cache client. Dans ce billet nous allons voir en quoi consiste le BlobCache, puis comment le configurer.

Le cache serveur

Par défaut (sans BlobCache) lorsqu'un fichier de ressource stocké dans une bibliothèque SharePoint est demandé, le serveur frontal récupère systématiquement le fichier en base de données et le renvoie au client. Prenons par exemple le cas d’un logo affiché sur plusieurs les pages d’un site, ou d’une feuille de style CSS référencée dans toutes les pages. Ces ressources étant demandées très fréquemment et n’étant pas amenées à changer souvent, il est dommage de solliciter le serveur SQL pour les récupérer à chaque fois qu’un utilisateur les demande.

Une fois activé, le BlobCache permet de résoudre ce problème : après avoir récupéré une ressource en base de données, le serveur frontal conserve le fichier sur son disque dur. Ce fichier est ensuite servi aux utilisateurs lors des requêtes suivantes directement depuis le disque dur, sans avoir à refaire un aller-retour avec le serveur SQL. Cela permet de limiter considérablement le nombre de connexions entre les serveurs frontaux et le serveur SQL. En terme de performances, on gagne donc en charge sur le serveur SQL, et en temps de réponse pour récupérer les ressources si elles sont déjà en cache.

Le cache client

L'activation du BlobCache a un 2ème intérêt, moins connu mais tout aussi important en terme de gain de performances puisqu'il permet de limiter les aller-retours entre le navigateur client et le serveur frontal.

Nous allons mettre en évidence le gain de performances avec un de mes outils préférés, HTTP Watch Professionnal. Pour ce faire, nous allons requêter 2 fois de suite une image située dans une bibliothèque SharePoint, et analyser les entêtes HTTP des requêtes et des réponses. Sur chaque capture d’écran on peut voir à gauche la requête, et à droite la réponse.

Sans BlobCache

clip_image001

Lors du premier appel, la réponse indique Cache-Control : private,max-age=0. Cela indique au navigateur qu’il ne peut pas mettre cette image en cache. L’image sera toutefois conservée dans les fichiers internet temporaires.

sans-blob-cache-2

Lors du 2ème appel, le navigateur demande l'image en précisant qu'il en dispose déjà d’une version dans ses fichiers temporaires, en passant la date de celle-ci (champ if-modified-since) dans le header de la requête HTTP. Le serveur constatant que l'image n’a pas été modifiée depuis cette date, il renvoie une réponse 304 qui indique au navigateur que l’image n’a pas besoin d’être re téléchargée. L’image stockée dans les fichiers temporaires va donc être réutilisée.

L’image n’est pas re-téléchargée lors du 2ème appel, mais il y a tout de même eu un aller-retour serveur qui a un cout en terme de performances.

Avec BlobCache

clip_image003

Lors du premier appel, la réponse indique Cache-Control : public,max-age=86400. Cela indique au navigateur qu’il peut conserver la ressource en cache et la réutiliser pendant 86400 secondes (24 heures).

clip_image004

Lors du 2ème appel, aucune requête n'est effectuée vers le serveur. En effet puisqu’elle a été mise en cache il y a moins de 24 heures, le navigateur sait qu'il peut réutiliser l'image sans se poser de question, et surtout sans en poser au serveur Sourire

Le BlobCache nous permet donc d’économiser un aller-retour serveur à chaque fois qu’une ressource est redemandée !

Voyons maintenant comment l’activer. 

Activation du BlobCache

Le BlobCache peut être activé par un administrateur de la ferme en modifiant le web.config de l'application sur chaque serveur frontal de la ferme.

Il se configure au niveau de l'élément <BlobCache /> qui est présent par défaut :

<BlobCache location="C:\BlobCache\14" 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" />

Les attributs sont les suivants :

  • L'attribut Location permet de définir le répertoire dans lequel seront conservés les fichiers sur le serveur.
  • L'attribut maxSize permet de définir, en Go, l'espace disque que peut occuper le BlobCache.
  • L'attribut path permet de définir les extensions des fichiers que doit prendre en charge le BlobCache. On peut ici ajouter d’autres extensions.
  • L'attribut enabled permet d'activer ou de désactiver le BlobCache.
  • Enfin, on peut ajouter un attribut max-age qui n'est pas présent par défaut. On y donne une valeur en seconde de la durée de mise en cache.

Pour activer le BlobCache sur une application web, il faut donc de modifier la valeur de l'attribut enabled dans les web.config de chaque frontal de la ferme.

Exemple :

<BlobCache location="C:\BlobCache\14" 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="true" max-age="592200" />

Conclusion

Dans ce billet nous avons vu comment améliorer les performances d'une application SharePoint en mettant en place le BlobCache.

Celui-ci permet de réduire la charge sur le serveur SQL et sur le serveur Frontal, tout en limitant le nombre de requête effectuée par le navigateur, améliorant donc l'expérience utilisateur. Dans le cadre d'un site internet hébergé sous SharePoint 2010, le BlobCache est incontournable.

Nous verrons dans le prochain billet comment améliorer encore les performances grâce au cache de sortie.

Arnault Nouvel – Winwise

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01