Accéder au contenu principal

SharePoint : Optimisation des performances de sites sous MOSS – Les ASPMenus

 Lorsqu’on met en place un site SharePoint MOSS 2007 basé sur le modèle de publishing on obtient un site de base avec deux menus à plusieurs niveaux :

image

Ainsi un site vide avec peu de niveaux de profondeur n’aura pas de grand soucis lors de l’affichage de ces deux menus.

En revanche, lorsque la structure des données commence à devenir conséquente :

  • Plusieurs niveaux hiérarchiques (Départements, Services, Unités, Localités, …)
  • Plusieurs pages par niveaux

Ces deux menus commencent à devenir conséquent.

Imaginons par exemple une structure simple de hiérarchisation :

  • 4 niveaux
  • 6 items par niveaux

On obtient un arbre sous la forme :

  • Niveau 0
    • Niveau 1 - 1
      • Niveau 2 - 1
        • Niveau 3 - 1
          • Niveau 4 - 1
            • Item 1
            • Item 2
          • Niveau 4 – 1

Le calcul du nombre d’items est donc :

  • 6 * 6 * 6 * 6 = 1296 items

Cela devient rapidement un nombre conséquent, qu’il faut maintenant rapprocher avec le volume pris dans le fichier HTML pour chaque Item, car cela ne vient pas que d’un ensemble d’UL et de LI comme le pensent souvent des designer HTML.

En effet, chaque Item possède dans le rendu HTML :

  • Sa définition propre de type tableau
    • <td style="white-space:nowrap;"><a class="zz1_GlobalNav_1 topNavItem zz1_GlobalNav_3" href="http://blogs.developpeur.org/xxxxxxx/Pages/default.aspx" style="border-style:none;font-size:1em;">MyItem</a></td>
  • La conservation de son état de base dans le ViewState

De ce fait, si on fait un calcul “à la louche”, en considérant que chaque Item prendra 0.5KB (peu importe la valeur), il suffit de faire cette simple multiplication pour comprendre l’importance de la profondeur à définir.

Si on veut afficher les 4 niveaux dans le menu horizontal, le poids sera donc :

  • 6 * 6 * 6 * 6 * 0.5 = 648 KB

Ce qui ne tient pas compte du menu de gauche (vertical).

Si on réduit simplement d’un cran cette profondeur d’affichage, le calcul sera donc

  • 6 * 6 * 6 * 0.5 = 108 KB

Comment effectuer cette modification ?

Pour définir le niveau de profondeur des menus (verticaux ou horizontaux), il faut, comme pour la précédente astuce du ViewState, éditer la MasterPage et chercher l’objet ASPNET “SharePoint:AspMenu”.

On trouve dans cet objet un paramètre :

  • MaximumDynamicDisplayLevels

Celui-ci correspond au nombre de niveaux sous le niveau latéral de base. Ainsi pour afficher les 4 niveaux précités, cette valeur sera assignée à 3 et pour redescendre à 3 niveaux, on choisira 2.


Exemple avec un cas concrèt

Nous allons prendre une page de contenu light avec l’affichage à 4 niveaux

image

On obtient dans cet exemple, un poids du fichier HTML chargé par l’utilisateur de plus de 1.800KB :

image

Si on réduit ce niveau d’un cran (donc 3 niveaux affichés), en changeant donc uniquement la valeur “MaximumDynamicDisplayLevels” du ASPMenu horizontal de 3 vers 2 :

image

On obtient alors un poids du rendu HTML de moins de 600KB :

image

Cela revient donc dans notre exemple à diviser par 3 la taille de la page HTML qui sera transféré à chaque utilisateur lors du chargement de celle-ci.


Conclusion

Même s’il est tentant de penser que l’affichage de tous ces niveaux de menu va rendre service aux utilisateurs, dites-vous qu’au dessus de 2 niveaux, les utilisateurs ne savent plus où cliquer. Quand on ajoute trop de dynamisme, le rapport entre le poids occupé, le temps de chargement et l’utilisation est à étudier.

Pensez toujours que vous n’êtes pas l’utilisateur standard du site puisque vous le concevez. L’utilisateur basique doit pouvoir comprendre simplement et rapidement comment trouver l’information qu’il veut sans avoir à chercher 3 Heures.

Romelard Fabrice [MVP]

Commentaires

Posts les plus consultés de ce blog

Série de vidéos sur le montage d'une serre horticole ACD

 Episode 1: Préparation du terrain Episode 2: Montage de la serre en elle même Episode 3: Finalisation avec le montage électrique alimentant la serre Bon visionnage Fab

Présentation des outils utiles pour l'entretien de ses haies vives

Afin de gérer les haies vives, il est nécessaire d'avoir recourt à un matériel adapté. Les solutions à batteries sont bien adaptées pour un usage personnel avec des dimensions raisonnables. Ainsi dans mon cas précis, j'utilise les outils suivants de la Gamme Ryobi 18V ONE+ électroportatif: Petit taille-haies simple mais efficace -  RYOBI OHT1855R Un modèle plus puissant qui fonctionne très bien -  RYOBI RY18HTX60A Pour les parties hautes de vos haies, voici un outil très utile -  RYOBI OPT1845 Enfin lorsque vous devez élaguer certains arbres ou certaines partie hautes de vos haies, ce dernier outil est très utile -  RYOBI OPP1820 Ces outils font parti maintenant de mon arsenal de base pour maintenir notre maison chaque saison de taille. Fab

Série de Videos sur Home Assistant intégrant la production Photovoltaïque

 Un certain nombre de vidéos sont en ligne pour intégrer sa production photovoltaïque dans Home Assistant en partant de la base. Installation de Home Assistant: On peut ensuite intégrer les composant des Micro-Onduleurs Enphase, mais aussi les batteries Enphase: Ou encore le composant de contrôle Ecojoko: Ce qui permet alors de faire des comparaisons entre les valeurs capturées: Des videos seront encore publiés dans les prochaines semaines sur différents aspects de cette solution. Fab