Mise en cache à la demande

ArcGIS Server vous permet de créer des tuiles de cache de carte à la demande au fur et à mesure que les utilisateurs y accèdent. Le premier utilisateur qui accède à une surface non mise en cache doit attendre que les tuiles correspondantes soient affichées par le serveur. Les tuiles sont ensuite ajoutées au dossier de cache du service et demeurent sur le serveur jusqu'à ce qu'elles soient mises à jour ou supprimées par l'administrateur du serveur. Cela signifie que les visiteurs suivants sur la surface n'auront pas à attendre que la tuile soit créée.

Lorsqu'elle est utilisée judicieusement, la mise en cache à la demande peut vous faire gagner beaucoup de temps et libérer de l'espace disque. La plupart des cartes affichent des surfaces stériles, inutilisables ou sans intérêt pour le public de la carte, en particulier à grande échelle (zoom avant). La mise en cache à la demande vous évite de créer et de stocker ces tuiles inutiles, mais laisse la possibilité à un utilisateur d'afficher la surface s'il le souhaite.

Bien que la mise en cache à la demande soit une fonction utile, elle peut réduire inutilement les performances si elle est utilisée à mauvais escient ou trop souvent. Cette rubrique contient des astuces pour utiliser la mise en cache à la demande de la façon la plus efficace possible.

Optimisation des performances

Un des avantages de la mise en cache de carte complète est qu'elle vous permet d'afficher des cartes magnifiques et complexes très rapidement, parce que le serveur distribue uniquement des images tuilées de la carte ; il n'affiche pas la carte à chaque demande. Toutefois, lorsque vous utilisez la mise en cache à la demande, le serveur doit afficher les tuiles dynamiquement lorsqu'un utilisateur accède à une zone non mise en cache. Cet affichage dynamique prend en fait plus de temps qu'une demande standard, car le serveur crée un groupe de tuiles à la fois. La taille du groupe de tuiles est de 2 048 x 2 048 pixels si l'anti-crénelage est utilisé et de 4 096 x 4 096 s'il ne l'est pas.

Pourquoi le serveur ne crée-t-il pas simplement une tuile à la fois ? S'il le faisait, de nombreuses étiquettes seraient dupliquées, car le moteur d'étiquetage n'a aucun moyen de savoir quelles étiquettes sont déjà présentes sur les tuiles adjacentes. Par conséquent, le serveur crée un groupe de tuiles à la fois, et vous devez préparer votre carte pour l'affichage de grandes surfaces à une vitesse acceptable. Cette section aborde différentes méthodes visant à limiter l'impact négatif sur les performances de la mise en cache à la demande.

Choix des cas d'utilisation de la mise en cache à la demande

L'élément le plus important à définir lors de la configuration de la mise en cache à la demande est de savoir quelles surfaces seront créées à la demande et quelles surfaces seront mises en cache au préalable. N'utilisez jamais la mise en cache à la demande pour créer l'intégralité du cache. Vous devez toujours créer au préalable des tuiles pour les surfaces de la carte susceptibles de recevoir le plus de trafic d'utilisateur. Cette précaution permet d'éviter qu'un utilisateur utilise les ressources du serveur en demandant une tuile à la demande.

Comment déterminer quelles surfaces de la carte seront les plus consultées ? Cela dépend pour une grande part de l'objectif et du public de votre carte. Dans un fond de carte général, les zones peuplées, les routes, les côtes, les parcs et autres points d'intérêt ont le plus de chances d'être consultés plus souvent que les autres zones. Microsoft Hotmap est une étude de cas intéressante qui montre des tuiles très utilisées dans un fond de carte en ligne à différentes échelles. Notez qu'à grande échelle, le pourcentage de tuiles inutilisées augmente.

Les cartes thématiques peuvent mettre en évidence différentes tendances d'endroits visités. Par exemple, une compagnie minière utilisera de façon plus intensive les endroits de la carte où la densité de mines est plus importante. Cela peut être le cas dans des zones non peuplées ou montagneuses, qui ne présenteraient aucun intérêt pour la population générale.

Pour connaître les surfaces à mettre en cache, portez votre attention sur les modèles d'utilisation de vos cartes actuelles, qu'elles soient en ligne ou sur l'ordinateur. Vous pouvez apprendre beaucoup en observant officieusement les endroits où les utilisateurs ont tendance à accéder et les entités qu'ils interrogent.

La disponibilité et la résolution des données sont également un facteur important. Si vos données sont peu nombreuses, voire inexistantes, dans certaines surfaces, vous pouvez ignorer la mise en cache de ces surfaces. Même si quelqu'un requiert une tuile à la demande, son affichage ne prendra que peu de temps s'il n'y a rien à afficher.

Vos données peuvent en outre être étroitement liées à l'objectif de la carte. Si, par exemple, vous travaillez avec un service de transport, vous devrez alors vous assurer que les surfaces avec une forte densité de routes et de voies ferrées sont mises en cache. Les outils d'analyse spatiale tels que Densité de noyau peuvent vous aider à déterminer quelles surfaces générales comptent une forte densité d'entités intéressantes.

Une fois que vous avez déterminé les endroits que les utilisateurs visiteront le plus souvent, vous devez créer une classe d'entités qui isole ces surfaces. Vous référencerez cette classe d'entités lors de l'exécution de l'outil Gérer le cache des tuiles du serveur de carte, pour vous assurer que les tuiles sont créées uniquement dans les limites de la classe d'entités.

Vous pouvez associer plusieurs outils dans un modèle ou script pour obtenir cette classe d'entités d'endroits visités. Le modèle peut contenir différentes saisies d'entités qui seront sans doute très visitées, mettre en zone tampon les entités ou déterminer leur densité, et enfin effectuer le post-traitement du résultat pour vérifier que la classe d'entités obtenue convient au modèle de mise en cache. Par exemple, la classe d'entités dont la mise en cache doit respecter les limites doit contenir peu d'entités de petites tailles. L'outil Agréger des polygones permet d'éliminer les petits trous et polygones, et l'outil Fusionner permet de créer une entité multi-parties à partir de plusieurs entités.

Plus vous isolez de surfaces visitées sur votre carte, plus vous pouvez satisfaire de demandes avec les tuiles mises en cache au préalable au lieu de créer des tuiles à la demande. Par exemple, à très grande échelle, vous pouvez observer que vous ne devez mettre en cache qu'une petite partie de votre carte pour prendre en compte 99 pour cent des demandes d'utilisateur. Vous pouvez décider d'utiliser l'espace disque libéré pour mettre en cache de façon stratégique des niveaux d'échelle supplémentaires.

Test et optimisation de la carte

Beaucoup d'organisations possèdent des cartes complexes (MXD) préparées à l'origine pour des opérations de SIG bureautique. Ces cartes ont souvent besoin d'être adaptées aux temps de réponse rapides attendus par les utilisateurs Web.

Avant de modifier votre carte, vous pouvez créer un cache de test sur une petite surface pour vous donner quelques chiffres de base. Choisissez une surface représentative de la géographie représentée dans votre carte, par exemple, une zone urbaine et rurale, plate et montagneuse, et ainsi de suite. Notez le temps que prend la création du cache de test. Activez ensuite la mise en cache à la demande et effectuez un zoom sur une zone non mise en cache. Notez le temps que prend l'affichage des tuiles à différentes échelles. Si les performances sont acceptables à ce stade, vous pouvez juger préférable de ne pas apporter de modifications.

Si vous souhaitez améliorer les performances de création des tuiles à la demande ou même la vitesse globale de création du cache, utilisez la barre d'outils Publication de services de carte d'ArcMap pour identifier et résoudre les ralentissements des performances sur votre carte. Utilisez la barre d'outils pour enregistrer un fichier de définition du service de carte (MSD), que vous utiliserez comme document source pour publier votre service de carte. Pour un grand nombre de services de carte, l'utilisation d'un fichier MSD au lieu d'un fichier MXD comme document source permet d'améliorer considérablement les performances.

Si vous souhaitez une détection plus avancée des couches inefficaces dans votre service de carte, définissez le niveau de consignation d'ArcGIS Server sur Infos:Détaillées. Emettez une demande d'affichage auprès du service de carte, par exemple un zoom sur un géosignet dans ArcMap. Examinez ensuite la demande ExportMapImage dans les journaux et notez le temps d'affichage de chaque couche. Vous serez rapidement en mesure de dire quelles couches prennent le plus de temps. Il est conseillé de répéter cet exercice à différentes échelles mises en cache sur des surfaces aléatoires de la carte. N'oubliez pas de redéfinir le niveau de consignation sur Normal lorsque vous avez terminé, car Infos:Détaillées consigne plus d'informations dans le journal que vous n'en avez besoin en règle générale.

Une fois que vous avez optimisé votre carte, réalisez un autre cache de test et notez la durée de création d'une tuile à la demande. Si les performances ne vous conviennent toujours pas, vous pouvez effectuer l'une des opérations suivantes :

  • Mettez en cache une plus grande surface. Cette méthode permet de réduire les chances de rencontrer une tuile à la demande. Vous pouvez essayer de limiter la mise en cache à la demande aux surfaces les plus stériles et aux plus grandes échelles uniquement, en vous assurant ainsi que peu d'entités devront être affichées simultanément.
  • Réalisez un cache total. En mettant en cache toutes les tuiles, vous n'aurez pas à créer de tuiles à la demande. Cette mesure peut constituer la meilleure option si vous disposez du temps et de l'espace appropriés pour créer un cache total et qu'il ne sera pas souvent mis à jour. Si vous pensez que le serveur risque de connaître une défaillance pendant la mise en cache, vous pouvez programmer les tâches de mise en cache au cours des nuits et des week-ends pour créer de façon constante votre cache jusqu'à ce qu'il soit complet. Vous pouvez par ailleurs choisir de consacrer une seule instance de service à la mise en cache tandis que d'autres instances gèrent les demandes des utilisateurs.
  • Utilisez un service dynamique. Si la création d'un cache total n'est pas faisable et si les performances sont acceptables avec un service dynamique, vous pouvez décider d'ignorer entièrement la phase de mise en cache. Bien que cette possibilité n'offre pas les meilleures performances, vos données seront toujours actuelles.

Mise à jour de tuiles

Lorsque vous modifiez votre base de données source, vous devez mettre à jour le cache pour que les utilisateurs voient les changements. Si vous suivez la recommandation de mise en cache d'une surface en fonction d'une classe d'entités et de remplissage du reste de votre cache à la demande, vous devez faire attention que les mises à jour incluent toutes les surfaces nécessaires.

Vous pouvez suivre deux stratégies pour mettre à jour votre cache lorsque vous avez créé des tuiles à la demande :

Rubriques associées


3/6/2012