Al trabajar con memorias caché de mapas de aplicaciones cliente, debe considerar cómo trabaja cada aplicación con las teselas, si almacena las teselas localmente, y qué condiciones requiere para las superposiciones de caché.
Cómo acceden y utilizan la caché las aplicaciones
Una vez que define un esquema de ordenamiento en teselas para el servicio de mapas, el servicio inmediatamente comienza a intentar utilizar la caché. Cualquier aplicación de ArcGIS que pueda mostrar un servicio de mapas utiliza la caché, aunque la manera en la que se recuperan y utilizan las teselas varía entre las aplicaciones.
Aplicaciones Web
Al desarrollar con ArcGIS API for JavaScript, utiliza una clase concreta para especificar que se está conectando a un servicio de mapas teselado (en caché). Por ejemplo, utiliza ArcGISTiledMapServiceLayer para conectarse a un servicio en caché. Cuando utiliza el servicio en caché, las teselas se recuperan del directorio de caché mediante las llamadas REST al servicio de mapas. La solicitud de tesela toma la forma https://<map service URL>/tile/<level>/<row>/<column>.
Si está viendo un servicio en caché simple en cualquier aplicación Web y realiza un desplazamiento panorámico en un área donde no existen teselas, la aplicación no muestra una imagen dinámica; por lo contrario, no ve nada. Una forma de asegurarse de ver un mapa cuando realiza un desplazamiento panorámico en un área que no está en caché es habilitar la caché según demanda.
Sugerencia:
Si el mapa aparece más lento de lo esperado, examine las direcciones URL de las imágenes de mapa para verificar que la aplicación esté recuperando las teselas. Una forma de hacer esto es abrir la aplicación en Mozilla Firefox y hacer clic en Firefox > Web Developer > Web Console. Cuando aparece la consola, haga clic en el botón Red y haga zoom o realice un desplazamiento panorámico en el mapa.
Si ve direcciones URL como esta, su aplicación está obteniendo las teselas correctamente de las solicitudes REST:
https://gisserver.domain.com:6443/arcgis/rest/services/myService/MapServer/tile/10/1723/3495.jpg
Si ve algún otro formato de dirección URL para sus imágenes de mapa, su aplicación está recuperando la tesela de una manera menos eficiente o la caché no se está usando.
ArcMap y ArcGIS Pro
Agrega servicios de mapas en caché a ArcMap y ArcGIS Pro mediante el botón Agregar datos de la misma manera que agrega cualquier otro servicio de mapas. Hay dos formas en las que puede ver una caché:
- Acceder a la caché a través de un servicio de mapas: para ver una caché de esta forma, examine el servidor SIG y el servicio de mapas que se utilizó para crear la caché. En este escenario, se realiza una conexión inicial al servidor SIG para determinar si el servicio tiene una caché. A continuación, se recuperan las teselas del directorio de caché en el sistema de archivos del servidor.
- Acceder a la caché como un dataset ráster: para ver una caché de esta forma, examine el directorio que contiene las teselas de caché y agregue el dataset. La caché se representa con el mismo icono que se utilizó para agregar todos los otros rásteres mediante el botón Agregar datos. Una caché a la que se accede como ráster es para visualizar solamente y no se puede consultar. La ventaja con este tipo de caché es que no está vinculada a un servicio de mapas y se puede visualizar cuando está desconectada del servidor, siempre y cuando pueda acceder al directorio de caché.
Cuando se realiza una solicitud de una tesela en una escala que coincide exactamente con un nivel de escala en la caché, el servicio de mapas devuelve la tesela directamente. Con mayor frecuencia, las solicitudes no coinciden exactamente con los niveles de escala en la caché. En esta situación, se solicita y remuestrea la tesela del nivel de escala más cercano para que coincida con la escala solicitada. Este remuestreo es aún más rápido que generar una tesela dinámicamente; sin embargo, da como resultado una imagen que tiene un aspecto diferente de la tesela original. Las etiquetas de mapa que se almacenaron en la caché pueden ser difíciles de leer en ciertas escalas debido a este remuestreo. Para obtener mejores resultados, visualice el mapa en o cerca de las escalas a partir de las cuales se creó la caché.
Imprimir mapas con contenido almacenado en la caché
Los estándares para las cachés de mapas y la impresión de mapas web se alinean en la necesidad de un rendimiento consistente a muchas escalas. Sin embargo, es posible que la resolución de un servicio de mapas almacenados en la caché no sea satisfactoria para la calidad de la impresión. Los mapas impresos suelen requerir una resolución de 200 puntos por pulgada (ppp) o superior, mientras que los cachés de mapas en ArcGIS suelen mostrarse a 96 ppp.
El servicio PrintingTools integrado en ArcGIS Server permite equilibrar los objetivos del almacenamiento en caché de mapas y la impresión de mapas. Para ello, utiliza capas dinámicas, habilitadas de forma predeterminada en los servicios de mapas.
El servicio tiene en cuenta si las capas dinámicas están habilitadas. Cuando un servicio de mapas (incluido un servicio WMS) con contenido en caché tiene activadas las capas dinámicas, el servicio consulta los datos de origen del servicio de mapas para exportar la extensión del mapa a una resolución superior. Se trata de una operación dinámica que evita la caché del mapa.
Si las capas dinámicas no están habilitadas en un servicio de mapas o en un servicio WMS con contenido en caché, el servicio PrintingTools exporta en su lugar la extensión del mapa desde la caché en el sitio del servidor. El resultado de esta operación será la resolución de 96 ppp de la caché del mapa, que puede no satisfacer las expectativas de un mapa impreso.
Para imprimir en alta calidad (en otras palabras, resolución de calidad de impresión) desde un servicio de mapas en caché utilizando el servicio PrintingTools, se recomienda tener activada la opción de capas dinámicas.
Mejorar el rendimiento en la visualización de servicios de mapas en caché
Cuando los clientes envían solicitudes a ArcGIS Server para mostrar un servicio de mapas, por lo general, la respuesta del servidor queda en caché en el navegador y se reutiliza durante cierto tiempo. Este comportamiento ayuda a ArcGIS Server a lograr el mejor rendimiento de visualización posible del servicio de mapas. No obstante, según cómo se utilicen el servicio de mapas y sus datos asociados en aplicaciones, es posible que deba ajustarse el tiempo durante el cual el navegador debe utilizar una respuesta del caché. Esto se puede lograr agregando una propiedad llamada cacheControlMaxAge a la Notación de objetos JavaScript (JSON) del servicio.
Cómo se utiliza la propiedad cacheControlMaxAge
Las respuestas de servicios de mapas de ArcGIS Server incluyen una etiqueta de entidad (ETag) y un encabezado Cache-Control. El valor del encabezado ETag es un identificador único de la respuesta. El encabezado Cache-Control tiene un valor max-age que proporciona información al navegador en relación con el tiempo máximo durante el cual se puede reutilizar la respuesta de la caché del navegador. Este valor se controla mediante la propiedad cacheControlMaxAge.
Si una solicitud se repite y no se ha superado la duración máxima de la caché, el navegador utiliza la respuesta de la caché sin enviar la solicitud al servidor. Si se ha superado la duración máxima del caché, el navegador debe enviar la solicitud al servidor y establecer un encabezado IF-NONE-MATCH con un valor de ETag asociado correspondiente a la respuesta en su caché. ArcGIS Server evalúa la solicitud y utiliza el valor de ETag para determinar si la respuesta ha cambiado. Si la respuesta del servidor es distinta de la copia que hay en el navegador, el servidor envía una respuesta totalmente nueva al navegador. Si la respuesta es idéntica a la copia que hay en el navegador, el servidor alerta al navegador para que continúe utilizando la respuesta que tiene en la caché.
Definir el valor de la propiedad cacheControlMaxAge
Para especificar durante cuánto tiempo se permite al navegador utilizar una respuesta que esté en la caché, defina la propiedad cacheControlMaxAge. Esta propiedad puede establecerse para cachés de servicios individuales. Puesto que se reduce la necesidad de que ArcGIS Server envíe respuestas completas, esto permite que la caché del navegador sea más eficiente, ayuda a optimizar las aplicaciones y ahorra ancho de banda.
En el caso de los servicios de mapas que no permiten que los clientes almacenen localmente teselas en la caché, el valor predeterminado es 0. Esto significa que el navegador siempre vuelve a enviar las solicitudes y que ArcGIS Server procesará las solicitudes y enviará respuestas completas al navegador si el contenido ha cambiado. Este valor funciona correctamente para la mayoría de aplicaciones.
En el caso de los servicios de mapas en caché que permiten a clientes almacenar teselas en caché local, el valor predeterminado es 86.400 segundos (1 día). Esto significa que si una solicitud se repite en un plazo de 1 día, el navegador volverá a utilizar la respuesta de su caché.
Más información sobre el almacenamiento en caché local
En el caso de los servicios de imágenes en caché en los que el mapa o los datos no cambian con frecuencia, se recomienda aumentar el valor predeterminado hasta 30 días (2.592.000 segundos) o más para minimizar el tráfico de la red.
Para agregar la propiedad cacheControlMaxAge a un servicio y especificar su valor predeterminado, se hace así:
- En un navegador web, abra el Directorio del administrador de ArcGIS Server e inicie sesión con un usuario que tenga privilegios de administración. La dirección URL tiene el formato https://gisserver.domain.com:6443/arcgis/admin.
- Haga clic en servicios y seleccione el servicio de mapas que desee modificar en la lista Servicios. Si no ve el servicio en la lista, es posible que se encuentre en un directorio debajo de la carpeta raíz.
- En la página Service - <service name> (<service type>), desplácese a la parte inferior y haga clic en editar.
- En el cuadro de diálogo Propiedades del servicio, busque la sección de propiedades del JSON del servicio.
- Agregue la propiedad cacheControlMaxAge a la sección y especifique el valor (en segundos) de la propiedad. Por ejemplo:
"properties": { "cacheControlMaxAge": "2592000",
- Haga clic en Guardar cambios.
- En la página Service - <nombre servicio> (<tipo servicio>), compruebe que la propiedad cacheControlMaxAge y el valor especificado aparezcan en la sección Propiedades.
Superponer cachés
Al diseñar cachés de mapa que se superpondrán con otras cachés de mapa, las aplicaciones requieren que haga coincidir el sistema de coordenadas y el tamaño de teselas. También es una buena práctica hacer coincidir la mayor cantidad de escalas posible.
La forma más sencilla de hacer esto es hacer coincidir los esquemas de ordenamiento en teselas para las dos cachés y, a continuación, crear solamente las teselas en las escalas que tienen sentido para cada caché. De esta manera, puede asegurarse de que hizo coincidir el sistema de coordenadas y el tamaño de teselas y de que el software reconoce que las dos cachés tienen escalas en común.