Skip To Content

Modalités d'utilisation du cache de carte par les clients

Lorsque vous utilisez des caches de carte dans différents clients (de type Web ou bureau), vous devez savoir comment l'application fonctionne avec les tuiles et si elle les stocke localement, puis connaître les conditions à remplir pour qu'elle superpose des caches.

Comment les applications accèdent au cache et l'utilisent

Lorsque vous définissez une structure de tuilage pour votre service de carte, il essaie immédiatement d'utiliser le cache. Toutes les applications ArcGIS capables d'afficher un service de carte utilisent le cache, même si la façon dont les tuiles sont récupérées et utilisées varie selon les applications.

Applications Web

Lorsque vous développez avec ArcGIS API for JavaScript, vous utilisez une classe spécifique pour indiquer que vous vous connectez à un service de carte tuilé (mis en cache). Par exemple, vous utilisez ArcGISTiledMapServiceLayer pour établir une connexion à un service mis en cache. Lorsque vous utilisez le service mis en cache, les tuiles sont récupérées du répertoire de cache par des appels REST vers le service de carte. La demande de tuiles prend la forme http://<map service URL>/tile/<level>/<row>/<column>.

Si vous affichez un seul service mis en cache dans une application Web et que vous effectuez un panoramique sur une zone qui ne contient aucune tuile, l'application n'affiche pas d'image dynamique et rien n'apparaît. Pour être certain de voir une carte lorsque vous effectuez un panoramique sur une zone non mise en cache, activez la mise en cache à la demande.

Astuce:

Si la carte apparaît plus lentement qu'elle ne le devrait, examinez les URL des images de la carte pour vérifier que l'application récupère des tuiles. Pour ce faire, ouvrez l'application dans Mozilla Firefox et cliquez sur Firefox > Développeur Web > Console Web. Lorsque la console apparaît, cliquez sur le bouton Suivant et effectuez un zoom ou un déplacement sur la carte.

  • Si les URL que vous voyez ressemblent à ceci, votre application réussit à obtenir des tuiles à partir de demandes REST :

    http://gisserver.domain.com:6080/arcgis/rest/services/myService/MapServer/tile/10/1723/3495.jpg

  • Si les URL que vous voyez suivent un autre format pour vos cartes de type image, votre application récupère la tuile d'une manière moins efficace ou le cache n'est pas utilisé.

ArcMap et ArcGIS Pro

Pour ajouter des services de carte mis en cache dans ArcMap et ArcGIS Pro, utilisez le bouton Ajouter des données tout comme vous le feriez pour n'importe quel autre service de carte. Vous pouvez afficher un cache de deux façons :

  • Accédez au cache par l'intermédiaire d'un service de carte : pour afficher un cache de cette façon, accédez au serveur SIG et au service de carte utilisé pour créer le cache. Dans ce scénario, une connexion initiale au serveur SIG est établie pour déterminer si le service possède un cache. Ensuite, les tuiles sont récupérées du répertoire de cache dans le système de fichiers du serveur.
  • Accédez au cache sous forme de jeu de données raster : pour afficher un cache de cette façon, accédez au répertoire qui contient les tuiles en cache et ajoutez le jeu de données. Le cache est représenté avec la même icône que celle utilisée pour ajouter tous les autres rasters à l'aide du bouton Ajouter des données. Un cache auquel vous avez accédé sous forme de raster est en lecture seule et ne peut pas être interrogé. L'avantage de ce type de cache est qu'il n'est pas lié à un service de carte et qu'il peut être affiché lorsqu'il est déconnecté du serveur, tant que vous pouvez encore accéder au répertoire de cache.

Lorsqu'une demande est effectuée pour une tuile à une échelle qui correspond exactement à un niveau d'échelle dans le cache, le service de carte renvoie directement la tuile. La plupart du temps, les demandes ne correspondent pas exactement aux niveaux d'échelle du cache. Dans ce cas, la tuile du niveau d'échelle suivant le plus proche est demandée et rééchantillonnée pour correspondre à l'échelle demandée. Ce rééchantillonnage est encore beaucoup plus rapide que la génération dynamique d'une tuile. Toutefois, l'image qui en résulte est différente de la tuile originale. En raison de ce rééchantillonnage, les étiquettes de carte mises en cache peuvent être difficiles à lire à certaines échelles. Pour optimiser les résultats, affichez la carte aux échelles (ou à des échelles proches) de celles à partir desquelles le cache a été créé.

ArcGlobe et ArcGIS Explorer

ArcGlobe et ArcGIS Explorer peuvent lire des caches 2D et les draper à la surface du globe. Vous obtiendrez des performances optimales si vous construisez le cache avec la structure de tuilage ArcGIS Online/Google Maps/Bing Maps. Si vous ne pouvez pas utiliser l'une de ces structures de tuilage, vous obtiendrez des performances optimales en faisant appel aux services de globe.

Vous pouvez par exemple ajouter un service de carte à ArcGlobe lorsque vous avez créé un cache de carte 2D et que vous souhaitez créer un cache de globe 3D identique à partir du cache 2D. Dans ce scénario, vous souhaitez simplement générer le cache et non pas accéder au globe.

Amélioration des performances d'affichage des services de carte mis en cache

Lorsque les clients envoient des demandes à ArcGIS for Server pour afficher un service de carte, la réponse du serveur est généralement mise en cache par le navigateur et réutilisée pendant un certain temps. Ce comportement aide ArcGIS for Server à optimiser les performances d'affichage pour votre service de carte. Toutefois, selon la manière dont votre service de carte et les données qui lui sont associées sont utilisés dans les applications, vous pouvez envisager d'ajuster la durée pendant laquelle le navigateur utilisera une réponse figurant dans son cache. Pour cela, il convient d'ajouter une propriété nommée cacheControlMaxAge dans le fichier JSON (JavaScript Object Notation) du service.

Utilisation de la propriété cacheControlMaxAge

Les réponses des services de carte ArcGIS for Server incluent un en-tête ETag (balise d'entité) et Cache-Control. La valeur de l'en-tête ETag identifie de façon unique la réponse. L'en-tête Cache-Control possède une valeur d'âge maximal qui informe le navigateur de la durée maximale pendant laquelle il peut réutiliser une réponse à partir du cache du navigateur. Cette valeur est contrôlée par la propriété cacheControlMaxAge.

Lorsqu'une demande est répétée et que l'âge maximal du cache n'a pas encore expiré, le navigateur utilise la réponse mise en cache sans envoyer la demande au serveur. Si l'âge maximal a expiré, le navigateur doit envoyer la demande au serveur et définir un en-tête IF-NONE-MATCH avec une valeur ETag associée correspondant à la réponse présente dans le cache. ArcGIS for Server évalue la demande et utilise la valeur ETag pour déterminer si la réponse a changé. Si la réponse du serveur diffère de la copie stockée dans le navigateur, le serveur envoie une réponse entièrement nouvelle au navigateur. Si la réponse est identique à la copie du navigateur, le serveur avertit le navigateur de continuer à utiliser la réponse présente dans son cache.

Définition de la valeur de la propriété cacheControlMaxAge

Pour spécifier la durée pendant laquelle un navigateur est autorisé à utiliser une réponse mise en cache, définissez la propriété cacheControlMaxAge. Cette propriété peut être définie pour chaque cache de service. Le fait de réduire les éventualités où ArcGIS for Server doit envoyer une réponse complète permet d'améliorer l'efficacité du cache de votre navigateur, de favoriser l'optimisation de vos applications et d'économiser la bande passante de votre réseau.

Pour les services de carte mis en cache qui n'autorisent pas les clients à mettre les tuiles dans le cache local, la valeur par défaut est de 0. Cela signifie que le navigateur renverra toujours une demande et qu'ArcGIS Server traitera cette demande et enverra une réponse complète au navigateur si le contenu a changé. Cette valeur fonctionne correctement pour la plupart des applications.

Pour les services de carte mis en cache qui autorisent les clients à mettre les tuiles dans le cache local, la valeur par défaut est de 86 400 secondes (1 jour). Cela signifie que si une demande est répétée dans un délai d'un jour, le navigateur utilisera la réponse présente dans son cache.

Pour les services de carte mis en cache dans lesquels la carte ou les données ne changent pas fréquemment, il est recommandé d'augmenter la valeur par défaut à 30 jours (2 592 000 secondes) ou plus pour réduire au maximum le trafic réseau.

Pour ajouter la propriété cacheControlMaxAge à votre service et spécifier sa valeur par défaut, procédez comme suit :

  1. Dans un navigateur Web, ouvrez le répertoire d'administrateur d'ArcGIS for Server et connectez-vous avec un utilisateur doté des privilèges d'administrateur. L'URL est formatée comme suit http://gisserver.domain.com:6080/arcgis/admin.
  2. Cliquez sur services et sélectionnez le service de carte à modifier dans la liste Services. Si votre service n'apparaît pas dans cette liste, il est peut-être dans un répertoire sous le dossier racine.
  3. Dans la page Service - <nom du service> (<type de service>), faites défiler l'affichage vers le bas et cliquez sur modifier.
  4. Dans la boîte de dialogue Propriétés du service, recherchez la section properties (propriétés) du fichier JSON du service.
  5. Ajoutez la propriété cacheControlMaxAge dans la section et spécifiez sa valeur (en secondes). Par exemple :
    "properties": {
      "cacheControlMaxAge": "2592000",
  6. Cliquez sur Enregistrer les mises à jour.
  7. Sur la page Service - <nom du service> (<type de service>), vérifiez que la propriété cacheControlMaxAge et la valeur que vous lui avez attribuée figurent dans la section Propriétés.

Superposition de caches

Lorsque vous concevez des caches de carte qui seront superposés à d'autres caches de carte, les applications exigent que vous appariez le système de coordonnées et la taille des tuiles. Il est également recommandé de faire correspondre autant d'échelles que possible.

La méthode la plus simple pour parvenir à ce résultat est de faire correspondre les structures de tuilage pour les deux caches, puis de créer uniquement les tuiles aux échelles appropriées à chaque cache. De cette façon, vous vous assurez que vous avez fait correspondre le système de coordonnées et la taille des tuiles et que le logiciel reconnaît que les deux caches ont des échelles en commun.

Forcer un affichage dynamique

Si vous remarquez que vos tuiles sont de qualité médiocre en raison d'un rééchantillonnage ou si vous voulez voir les données dynamiques à certaines échelles, vous pouvez forcer le service à ignorer le cache et afficher la carte dynamiquement. Vous pouvez procéder ainsi pour des niveaux précis de la carte.

Par exemple, imaginons que vous souhaitez afficher les données temps réel à de grandes échelles. La carte dont vous disposez est mise en cache aux niveaux de zoom 0 à 15, mais doit s'afficher dynamiquement aux niveaux 16 à 19. La solution consiste alors à activer les couches dynamiques sur les niveaux 16 à 19 et à préciser dans vos demandes de carte que vous souhaitez utiliser les couches dynamiques à ces niveaux. Dans le cas contraire, le service renverra une carte créée à partir des tuiles disponibles, laquelle sera vide dans les zones dépourvues de tuiles.