Lorsque vous utilisez des caches de carte dans des applications clientes, vous devez savoir comment chaque 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 https://<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.
Conseil :
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 > Web Developer (Développeur Web) > Web Console (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 :
https://gisserver.domain.com:6443/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é.
ArcGIS Pro
Pour ajouter des services de carte mis en cache dans ArcGIS Pro, utilisez le bouton Add Data (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éé.
Impression de cartes avec du contenu mis en cache
Les performances des caches de carte et de l’impression de cartes Web doivent être cohérentes à de nombreuses échelles. Il peut toutefois arriver que la résolution d’un service de carte en cache ne soit pas satisfaisante pour la qualité d’impression. Les cartes imprimées nécessitent souvent une résolution de 200 points par pouce (ppp) ou plus, tandis que les caches de carte dans ArcGIS s’affichent généralement à 96 ppp.
Le service PrintingTools intégré à ArcGIS Server vous permet d’équilibrer les objectifs de la mise en cache et de l’impression des cartes. Pour ce faire, il utilise des couches dynamiques, qui sont activées par défaut dans les services de carte.
Le service tient compte du fait que les couches dynamiques sont activées ou non. Lorsque des couches dynamiques sont activées dans un service de carte (y compris un service WMS) avec du contenu mis en cache, le service interroge les données source afin que le service de carte exporte l’étendue de la carte à une résolution supérieure. Cette opération dynamique permet de contourner le cache de carte.
Si les couches dynamiques ne sont pas activées dans un service de carte ou service WMS avec du contenu mis en cache, le service PrintingTools exporte l’étendue de la carte à partir du cache sur le site du serveur. La carte obtenue à partir de cette opération sera dans la résolution de 96 ppp du cache de carte, ce qui risque de ne pas être satisfaisant pour une carte imprimée.
Pour imprimer une sortie haute qualité (en d’autres termes, une résolution de qualité d’impression) à partir d’un service de carte mis en cache à l’aide du service PrintingTools, il est recommandé d’activer l’option des couches dynamiques.
Améliorer les performances d’affichage des services de carte mis en cache
Lorsque des clients envoient des demandes d’affichage d’un service de carte à ArcGIS Server, 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 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 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 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éfinir 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 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 0. Cela signifie que le navigateur renverra toujours une demande et que 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.
En savoir plus sur le stockage de cache local
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 (259,2000 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 :
- Dans un navigateur Web, ouvrez le répertoire d’administrateur ArcGIS Server et connectez-vous avec un compte d’utilisateur doté des privilèges d’administrateur. L’URL est au format https://gisserver.domain.com:6443/arcgis/admin.
- 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.
- Dans la page Service - <nom du service> (<type de service>), faites défiler l'affichage vers le bas et cliquez sur modifier.
- Dans la boîte de dialogue Service Properties (Propriétés du service), recherchez la section properties (propriétés) du fichier JSON du service.
- Ajoutez la propriété cacheControlMaxAge dans la section et spécifiez sa valeur (en secondes). Par exemple :
"properties": { "cacheControlMaxAge": "2592000",
- Cliquez sur Enregistrer les mises à jour.
- Dans la page Service - <service name> (<service type>) (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 Properties (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.
Vous avez un commentaire à formuler concernant cette rubrique ?