Skip To Content

Comment les applications accèdent au cache du service d'imagerie

Dans cette rubrique

Un service d'imagerie en cache peut être de type statique ou dynamique. En règle générale, compte tenu de sa structure tuilée et de sa nature statique, un tel service se révèle plus rapide qu'un service sans mise en cache (ou accessible en tant que service dynamique). Lorsque vous accédez à un service d'imagerie en cache, son comportement par défaut est statique et vous disposez d'un accès limité à ses propriétés. En d'autres termes, vous ne pouvez pas modifier la méthode de mosaïquage, ni la compression de transmission.

Toutes les applications Web capables d'afficher un service d'imagerie utilisent le cache, même si la méthode de récupération et d'utilisation des tuiles varie selon les applications.

ArcMap et ArcGIS Pro

Lorsque vous affichez un service d'imagerie qui a été mis en cache, il présente des fonctionnalités de service d'imagerie limitées. Par exemple, vous ne pouvez pas modifier la méthode de mosaïquage ou de compression de transmission. Vous pouvez toutefois modifier la symbologie et procéder à des améliorations, identifier les pixels ou encore interroger les données.

Si vous devez utiliser le service d'imagerie de façon dynamique et utiliser des fonctionnalités, telles que la méthode de mosaïquage, vous pouvez modifier le mode de la couche. Pour modifier le mode, cliquez avec le bouton droit sur la couche du service d'imagerie, puis désélectionnez l'option Activer le mode d'affichage du cache. Pour utiliser le service d'imagerie en tant que service en cache, sélectionnez de nouveau cette option.

Applications ArcGIS API for JavaScript

En cas de développement avec ArcGIS API for JavaScript, utilisez la classe ArcGISTiledMapServiceLayer pour vous connecter à un service d'imagerie mis en cache. Lorsque vous utilisez le service d'imagerie en cache, les tuiles sont récupérées à partir du répertoire de cache par des appels REST à destination du service d'imagerie. La demande de tuiles prend la forme http://<image service URL>/tile/<level>/<row>/<column>.

  • 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/ImageServer/tile/10/1723/3495

  • Si les URL que vous voyez présentent un autre format pour votre service d'imagerie, votre application récupère la tuile d'une manière moins efficace ou le cache n'est pas utilisé.

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.

Astuce:

Si le service d'imagerie apparaît plus lentement que prévu, examinez les URL du service d'imagerie pour vérifier que l'application récupère des tuiles. Pour ce faire, ouvrez l'application dans Mozilla Firefox 4 et cliquez sur Firefox > Développeur Web > Console Web. Lorsque la console apparaît, cliquez sur le bouton Net, puis effectuez un zoom sur votre service d'imagerie ou déplacez-le.

Astuce:

Veillez à ce que la source de données à mettre en cache figure dans la même projection que les autres données utilisées dans l'application Web. Si ce n'est pas le cas, vous risquez de ne pas voir les données, puisque la plupart des applications Web ne peuvent pas reprojeter les données. Veillez également à ce que la structure de tuilage soit identique pour le service d'imagerie en cache et les autres couches en cache de l'application Web, sinon toutes les couches ne seront pas visibles.

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

Lorsque les clients envoient des demandes à ArcGIS for Server pour afficher un service d'imagerie, 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 d'imagerie. Toutefois, selon la manière dont votre service d'imagerie 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é appelée cacheControlMaxAge dans le fichier JSON (JavaScript Object Notation) du service.

Utilisation de la propriété cacheControlMaxAge

Les réponses des services d'imagerie 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

En tant qu'administrateur ArcGIS for Server, vous pouvez définir la propriété cacheControlMaxAge afin de spécifier la durée pendant laquelle un navigateur est autorisé à utiliser une réponse mise en cache. 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 d'imagerie mis en cache qui n'autorisent pas les clients à mettre les tuiles dans le cache local, la valeur par défaut est 0. Cela signifie que le navigateur renverra toujours une demande et qu'ArcGIS for Server traitera cette demande et enverra une réponse complète au navigateur si le contenu a changé.

Pour les services d'imagerie mis en cache qui autorisent les clients à mettre les tuiles dans le cache local, la valeur par défaut est de 12 heures (43 200 secondes). Cela signifie que si une demande est répétée dans un délai de 12 heures, le navigateur utilisera la réponse présente dans son cache. Cette valeur fonctionne correctement pour la plupart des applications.

Pour les services d'imagerie 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 au format suivant : http://gisserver.domain.com:6080/arcgis/admin.
  2. Cliquez sur services et sélectionnez le service d'imagerie à 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. Dans 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 dans des applications Web

Comme nous l'avons indiqué ci-dessus, lorsque vous concevez des caches de service d'imagerie qui se superposeront à d'autres services en cache, vous devez prendre en compte certains facteurs importants. Pour les applications Web conçues avec ArcGIS API for JavaScript, le système de coordonnées et la taille des tuiles doivent correspondre lorsque vous superposez des caches. 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.

La structure de tuilage recommandée est celle d'ArcGIS Online/Google Maps/Bing Maps.

OGC WMTS

La spécification WMTS (Web Map Tile Service) de l'OGC (Open Geospatial Consortium, Inc.) est une spécification internationale de diffusion de cartes numériques sur le Web à l'aide de tuiles d'images mises en cache. Lorsque vous créez un service d'imagerie ou de carte en cache à l'aide d'ArcGIS Server, le service et ses tuiles sont automatiquement accessibles via la spécification WMTS.

L'URL de connexion à un service d'imagerie en cache à l'aide du protocole WMTS utilise le schéma suivant :

http://gisserver.domain.com:6080/arcgis/rest/services/folder/service/ImageServer/WMTS

Pour en savoir plus sur WMTS