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 :
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
- …
- Niveau 4 - 1
- Niveau 3 - 1
- Niveau 2 - 1
- Niveau 1 - 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
On obtient dans cet exemple, un poids du fichier HTML chargé par l’utilisateur de plus de 1.800KB :
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 :
On obtient alors un poids du rendu HTML de moins de 600KB :
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
Enregistrer un commentaire