Dans la continuité des modifications permettant d’améliorer les performances d’une ferme SharePoint, nous allons voir le cas particulier de l’entête HTTP ETag :
Ce paramètre ajouté directement par le serveur WEB permet d’avoir une “datation” du flux envoyé par celui-ci.
L’idée est donc de permettre au client WEB la possibilité de comparer directement la date de chargement de deux objets. Si on trouve une différence entre ces deux objets, un rechargement est fait, sinon le cache du navigateur est utilisé.
On trouve une explication de ce mécanisme avec Internet Explorer :
- You may experience poor Web performance when you use Internet Explorer 6 to try to access a Web application that is hosted on Internet Information Services 6.0
- High Performance Web Sites: Rule 13 – Configure ETags
- IIS7 Deployments calls for ETag Usage Review if using
Problème en cas de clustering
Dans le cas d’une ferme SharePoint, on peut avoir plusieurs Web Front End qui vont donc répartir la charge WEB entre chaque machine (que ce soit via NLB, BigIP ou autre).
La valeur Etag peut être spécifique à un serveur et host, ce qui fait que, suivant la machine qui nous répond, la valeur de cet Etag pour un même objet ne sera pas la même et donc Internet Explorer effectuera un rechargement de l’objet.
A ce moment on comprend que le cache coté utilisateur n’est plus utilisé de manière optimale à cause de ce test et de cette différence de valeur qui n’a aucun rapport avec la fraicheur du contenu côté serveur
Solution
La solution alternative est donc de bloquer cette option sur chaque application WEB de chaque serveur placé dans le cluster WEB. Pour faire simple, on va forcer la valeur de cet entête à vide.
Pour cela, il faut se connecter sur chacun des serveurs Web Front End de la ferme et ouvrir IIS Manager, on va cliquer avec le bouton droit sur une des Applications Web de la ferme et choisir “Properties” :
On va alors sélectionner la rubrique “HTTP Headers” et cliquer sur “Add” dans la partie “Custom HTTP headers” :
On va donc remplir les champs :
- Custom header name: Etag
- Custom header value: [vide]
On valide par OK et on applique la modification, qui va nous demander si on applique celle-ci sur tous les répertoires virtuels ou non :
on clique sur OK et on confirme ce changement.
Conclusion
Une fois appliquée sur toutes les Web Applications de tous les serveurs WEB de la ferme SharePoint, l’option Etag ne sera plus utilisée par le navigateur et vous éviterez des rechargements inutiles d’objet gérés par IIS.
Attention:
Cette modification ne sera prise en compte que pour les objets gérés par IIS. En effet, SharePoint gère aussi un flag HTTP Header ETag, comme on peut le voir sur la capture suivante :
La valeur est alors sous un format spécifique géré par SharePoint et non plus IIS et sera la même pour chaque objet provenant de n’importe quel Web Front End.
Romelard Fabrice [MVP]
Commentaires
Enregistrer un commentaire