Almacenamiento en caché de mapa según demanda

ArcGIS Server le ofrece la opción de crear teselas de memoria caché de mapa según demanda a medida que los usuarios las visitan. El primer usuario que navegue por un área que no está en caché debe esperar mientras el servidor dibuja las teselas correspondientes. Después las teselas se agregan a la carpeta de caché del servicio y permanecen en el servidor hasta que el administrador del servidor las actualiza o elimina. Esto significa que los visitantes siguientes del área no tendrán que esperar a que se cree la tesela.

Si lo usa inteligentemente, el almacenamiento en caché según demanda puede ayudarle a ahorrar mucho tiempo y espacio en disco. La mayoría de los mapas muestran algún área que es árida, inutilizable o poco interesante para la audiencia del mapa, especialmente en grandes escalas (acercadas). El almacenamiento en caché según demanda lo alivia de la carga de crear y almacenar estas teselas innecesarias pero deja la posibilidad de que un usuario aún pueda ver el área si lo necesita.

Aunque el almacenamiento en caché según demanda es una característica útil, puede afectar el rendimiento cuando se utiliza mal o se utiliza demasiado. Este tema contiene sugerencias para utilizar el almacenamiento en memoria caché según demanda de la manera más efectiva.

Lograr el mejor rendimiento

Un beneficio del almacenamiento en memoria caché del mapa completo es que puede servir rápidamente mapas hermosos y complejos porque el servidor distribuye imágenes del mapa teseladas; no dibuja el mapa en cada solicitud. Sin embargo, cuando utiliza el almacenamiento en memoria caché según demanda, el servidor no tiene que dibujar las teselas dinámicamente cuando el usuario navega por un área que no está en caché. Este dibujo dinámico en realidad toma más tiempo que una solicitud regular porque el servidor crea un grupo de teselas a la vez. Este grupo de teselas tiene una dimensión de 2048 x 2048 píxeles si se utiliza antialiasing y una dimensión de 4096 x 4096 si no se utiliza antialiasing.

¿Por qué el servidor no crea una tesela a la vez? Si lo hiciera, vería varias etiquetas duplicadas, porque no hay forma de que el motor de etiquetado determine qué etiquetas existen en las teselas adyacentes. Por lo tanto, el servidor crea un grupo de teselas a la vez, y debe preparar su mapa para que dibuje grandes áreas a una velocidad aceptable. Esta sección discute varias formas de reducir el coste de rendimiento en el almacenamiento en memoria caché según demanda.

Determinar dónde almacenará en memoria caché según demanda

Lo más importante que determinará cuando configure el almacenamiento en memoria caché según demanda es qué áreas se crearán según demanda y qué áreas almacenará previamente en memoria caché. Nunca utilice el almacenamiento en memoria caché según demanda para crear su memoria caché completa. Siempre debe crear previamente algunas teselas en las áreas del mapa que espera que tengan el mayor tráfico de usuario, y así minimizar la posibilidad de que un usuario consuma los recursos del servidor al solicitar una tesela según demanda.

¿Cómo determina qué áreas de su mapa serán más popular? En gran parte, esto depende del propósito y audiencia de su mapa. En un mapa base general, los lugares poblados, carreteras, líneas de costa, parques y otros puntos de interés tienen el potencial de que los visiten con mayor frecuencia que otras áreas. Microsoft Hotmap es un estudio de caso interesante que muestra teselas populares en un mapa base online en varias escalas. Observe que en escalas más grandes, el porcentaje de teselas que no se utilizan aumenta.

Los mapas temáticos pueden mostrar tendencias de lugares populares muy similares. Por ejemplo, los mapas que utiliza una compañía minera pueden tener un uso más alto en áreas donde hay mayor densidad de minas. Esto puede ocurrir en áreas despobladas o montañosas que serían poco interesantes para el público en general.

Para determinar qué áreas debe almacenar previamente en memoria caché, examine los patrones de uso de sus mapas actuales, ya sea online o en el escritorio. Puede aprender mucho a través de las observaciones informales de dónde tienden a navegar los usuarios y qué entidades consultan.

También es importante la disponibilidad y resolución de sus datos. Si sus datos son pobres o no existen en ciertas áreas, puede omitir almacenar en memoria caché esas áreas. Aún si alguien solicita una tesela según demanda, no tomará mucho tiempo dibujarla si no hay nada para mostrar.

Sus datos también pueden estar muy vinculados con el propósito del mapa. Por ejemplo, si trabaja con un departamento de transporte, deseará asegurarse de que las áreas con alta densidad de carreteras y carriles se almacenen previamente en memoria caché. Las herramientas de análisis espacial como Densidad kernel pueden ayudarlo a determinar qué áreas generales son gruesas con entidades interesantes.

Después de determinar los lugares que visitarán con mayor frecuencia los usuarios, debe crear una clase de entidad que aísle estas áreas. Hará referencia a esta clase de entidad cuando ejecute la herramienta Administrar teselas de memoria caché de servidor de mapas, para asegurarse de que las teselas se creen solamente dentro de los límites de la clase de entidad.

Puede encadenar varias herramientas en un modelo o secuencia de comandos para obtener esta clase de entidad de lugares populares. El modelo puede contener varias entradas de entidades que se anticipa que van a ser populares, crear opcionalmente zonas de influencia en las entidades o determinar su densidad, y finalmente realizar el procesamiento posterior en la salida para asegurarse de que la clase de entidad resultante sea adecuada para una plantilla de almacenamiento en memoria caché. Por ejemplo, la clase de entidad cuyos límites almacena en memoria caché no debe contener numerosas entidades pequeñas. La herramienta Agregar polígonos puede eliminar pequeños agujeros y polígonos, y la herramienta Disolver puede crear una entidad multiparte a partir de numerosas entidades.

Cuanto más pueda aislar áreas populares de su mapa, más solicitudes puede cumplir con las teselas almacenadas previamente en memoria caché en lugar de crear teselas según demanda. Por ejemplo, puede descubrir que en un nivel de gran escala, sólo debe almacenar en memoria caché una pequeña fracción del área de su mapa para acomodar el 99 por ciento de las solicitudes del usuario. Puede decidir utilizar el espacio en disco que ahorra para almacenar en memoria caché de manera estratégica niveles de escala adicionales.

Probar y optimizar el mapa

Varias organizaciones tienen documentos de mapa complejos (MSD) que se prepararon originalmente para propósitos SIG de escritorio. Estos mapas a menudo necesitan ajustes para cumplir con los tiempos de respuesta rápida que esperan los usuarios Web.

Antes de cambiar su mapa, es posible que desee crear una caché de prueba de una pequeña área para que le brinde algunas figuras de línea base. Elija un área que contenga una buena mezcla de geografía representada en su mapa, por ejemplo, urbana o rural, plana o montañosa, y así sucesivamente. Observe el tiempo que lleva crear la caché de prueba. A continuación, habilite el almacenamiento en memoria caché según demanda y acerque un área que no está en caché. Observe cuánto tiempo demoran las teselas en aparecer en varias escalas. Si el rendimiento es aceptable en este punto, puede elegir no hacer ningún ajuste.

Si desea mejorar el rendimiento de la creación de teselas según demanda o la velocidad de creación de la caché en general, debe utilizar la barra de herramientas Publicación de servicio de mapas en ArcMap para identificar y solucionar los embotellamientos de rendimiento en su mapa. Utilice la barra de herramientas para guardar un archivo de definición del servicio de mapas (MSD), que debe utilizar como el documento fuente cuando publique su servicio de mapas. Para varios servicios de mapas, utilizar un MSD en lugar de un MXD como el documento fuente da como resultado una enorme mejora del rendimiento.

Para una detección más avanzada de capas ineficientes en su servicio de mapas, establezca el nivel de inicio de sesión de ArcGIS Server en Info: Detallado. Realice una solicitud de dibujo al servicio de mapas, como acercar un marcador en ArcMap. Después, examine la solicitud ExportMapImage en los registros y observe el tiempo de dibujo para cada capa. Rápidamente podrá decir qué capas llevan más tiempo. Es una buena idea repetir este ejercicio en las diferentes escalas de caché en áreas aleatorias del mapa. Recuerde volver a establecer el nivel de inicio de sesión en Normal cuando finalice, ya que Info: Detallado escribe más información de registro de lo que normalmente necesita.

Una vez que haya optimizado su mapa, haga otra caché de prueba y anote cuánto tiempo demora en crear una tesela según demanda. Si el rendimiento todavía no es aceptable, puede optar por hacer una de estas cosas:

  • Almacenar previamente en memoria caché un área más grande. De esta manera se disminuye la posibilidad de encontrar una tesela según demanda. Puede intentar limitar el almacenamiento en memoria caché según demanda solamente a las áreas más áridas en las escalas más grandes, y así asegurar que no se tengan que dibujar varias entidades a la vez.
  • Hacer una memoria caché completa. Al almacenar previamente en memoria caché todas las teselas, no tendrá que crear teselas según demanda. Esta puede ser la mejor opción si tiene el tiempo y el espacio para crear una memoria caché completa y no se actualizará a menudo. Si el tiempo de inactividad del servidor mientras se almacena en memoria caché es un problema, puede programar que los trabajos de almacenamiento en memoria caché se realicen a la noche o los fines de semana para crear sin problemas su caché hasta que esté completa. También puede elegir dedicar sólo una instancia del servicio al almacenamiento en memoria caché mientras otras instancias manejan las solicitudes del usuario.
  • Usar un servicio dinámico. Si no es factible crear una memoria caché completa y el rendimiento es aceptable con un servicio dinámico, puede elegir omitir por completo el almacenamiento en memoria caché. Aunque esta opción no brinda el mejor rendimiento, sus datos siempre estarán actualizados.

Actualizar teselas

Cuando edita su base de datos de origen, debe actualizar la memoria caché antes de que los usuarios puedan ver los cambios. Si sigue la recomendación de almacenar previamente en memoria caché un área basado en una clase de entidad y completar el resto de su caché según demanda, deberá tener cuidado de que las actualizaciones incluyan todas las áreas necesarias.

Hay dos estrategias que puede seguir para actualizar su memoria caché cuando haya estado creando teselas según demanda:

Temas relacionados


7/11/2012