Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Blog Technique de Romelard Fabrice

Les dernières Actualités de Romelard Fabrice (Alias fabrice69 ou F___) principalement autour des technologies Microsoft

Actualités

  • Toutes les actualités et informations sur les technologies Microsoft principalement autour de .NET et SQL Server

Archives

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]

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 :
Posted: jeudi 5 août 2010 16:03 par ROMELARD Fabrice

Commentaires

Nicolas a dit :

Pour diminuer la taille de l'html, on peut aussi utiliser les CSS Friendly Control Adapters (http://www.asp.net/cssadapters/). Ça permet d'avoir des balises

<li> au lieu des <table>/<tr>/<td>...

# août 5, 2010 17:05

ROMELARD Fabrice a dit :

Oui, ceci est aussi à intégrer dans une réflexion de redesign.

Mais cela ne change pas du tout la problématique du poids de page.

# août 5, 2010 17:37

dummy1 a dit :

Le problème est que que tes utilisateurs perdent des fonctionalités (même si tu gagnes en performance).

Pas évident de trouver le point d'équilibre...

# août 9, 2010 08:41

ROMELARD Fabrice a dit :

Je suis bien d'accord avec la notion d'équilibre entre les fonctionnalités apportées et la performance à maintenir.

Le fait est que la notion de navigation à plusieurs niveaux pose plus de soucis aux utilisateurs lambda qui à chaque fois survolent juste à coté de là où ils le souhaitent et donc reperdent le menu, ...

Dans ce cas précis, bien souvent le retour n'est pas vraiment positif alors que les performances sont réellement impactées.

Voila pourquoi il est mieux de conserver de la simplicité pour cette fonctionnalité précise en diminuant le nombre de niveaux.

Romelard Fabrice [MVP]

# août 9, 2010 15:24
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- 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

- SharePoint Online: Script PowerShell pour supprimer une colonne dans tous les sites d’une collection par Blog Technique de Romelard Fabrice le 11-27-2018, 18:01