Чтобы обеспечить одинаковый уровень производительности для пользователей, которые обращаются к сервису, важно понимать, что существуют различные методы оптимизации, в зависимости от типа геопространственного сервиса. Доступные опции могут зависеть от того, какой источник данных имеется на сервере или какой шаблон развертывания программного обеспечения используется. Понимание различных типов кэширования и разбиения на листы, наряду с другими формами оптимизации, является важной частью обеспечения положительного пользовательского опыта. В этом разделе кратко рассматриваются различные методы оптимизации производительности на различных уровнях архитектуры ArcGIS.
Проектирование сети, в которой развернуты компоненты ArcGIS, является ключевым фактором производительности (как хорошей, так и низкой). Корпоративные системы часто являются глобальными по своей природе, обслуживая пользователей в широком спектре сетевых условий и возможностей подключения, и существуют важные различия между компонентами ArcGIS и рабочими процессами с точки зрения их зависимости от сетевого подключения. Область применения сетевых аспектов для рабочих процессов ArcGIS шире, чем эта тема, но некоторые первоначальные рекомендации и соображения включают следующее:
Веб-приложения доставляются с веб-сервера, который часто является либо SaaS-сервисом ArcGIS Online, веб-сервером, на котором размещается ArcGIS Web Adaptor, либо веб-сервером, выделенным для размещения пользовательских веб-приложений. Ниже описаны методы размещения оптимизированных веб-приложений.
Перед развертыванием приложения для уменьшения размера и сложности статических ресурсов приложения, таких как файлы JavaScript, CSS и HTML, или удаления ненужной информации из этих файлов может быть использован процесс сборки (также включающий в себя или известный как минимизация или пакетирование). Хотя существует множество допустимых подходов к созданию успешного и подходящего процесса сборки, эти процессы часто тесно связаны с прикладной средой, используемой для создания веб-приложения.
Другим методом, используемым для оптимизации производительности веб-приложения, является включение кэширования HTTP-ответов для статических ресурсов веб-приложения. Эта конфигурация предоставляет конечному клиенту заголовок ответа от веб-сервера, указывающий, что статический ресурс может быть кэширован на клиенте, а также продолжительность его кэширования. Это позволяет клиентскому браузеру избежать полного запроса на повторную загрузку приложения, поскольку содержимое этого файла уже хранится локально на клиентском компьютере и повторно используется как есть до истечения срока действия кэша. Кэширование HTTP-ответов можно выборочно включить для определенных типов файлов либо через веб-сервер, либо через другой обратный прокси-сервер или на уровне программного обеспечения для ускорения приложений.
Веб-приложения, размещенные в ArcGIS Online, уже используют эти два шаблона оптимизации, поскольку они создаются до развертывания и размещаются в среде SaaS, которая использует кэширование статических ответов приложений в сети доставки ресурсов (CDN).
CDN также можно использовать с ArcGIS Enterprise, но будьте внимательны и проводите различие между статическими ресурсами, которые подходят для кэширования в CDN, такими как файлы HTML, CSS и JavaScript, и динамическими ответами REST API, которые не следует кэшировать, чтобы избежать непредвиденного поведения пользователя. Также будьте особенно внимательны при рассмотрении вопроса об использовании CDN в связи с обновлениями, поскольку кэш CDN должен быть принудительно аннулирован при обновлении программного обеспечения или изменении приложения, чтобы пользователи не получали устаревшую информацию.
Существует множество различных типов веб-сервисов, которые можно использовать в среде ArcGIS, некоторые будут отображать данные или реагировать на них на основе динамических источников данных. Не существует универсального подхода к кэшированию и оптимизации этих сервисов, но вместо этого существует множество шаблонов, которые следует использовать обдуманно и спланированно. Распространенные методы оптимизации веб-сервисов включают:
Оба метода берут входные данные (из любого источника), доступ к которым в противном случае можно было бы получить динамически через картографический сервис, сервис объектов или изображений, и кэшируют их в листы. Эти листы представляют собой предопределенные пакеты данных, организованные в стандартную многоуровневую сетку. Кэшированные листы позволяют клиентам одновременно запрашивать несколько предопределенных листов для заданного масштаба, которые «предварительно визуализируются» в виде листов, поэтому нет запроса к серверным данным и динамического отображения символов или объектов.
Сопутствующие ресурсы:
Кэширование растровых листов является эффективным методом, используемым при доставке относительно статичных данных, которые должны просматриваться в одном основном картографическом представлении. Хотя растровые листы могут быть высокопроизводительными, они не предоставляют пользователю возможности запрашивать атрибуты, идентифицировать объекты или изменять символы, отключать слои с надписями и так далее.
Хотя растровые листы использовались в течение многих лет для предоставления базовых карт, сегодня эти сервисы чаще всего используют векторные базовые карты по ряду причин, связанных с производительностью, качеством карт и гибкостью. Растровые листы по-прежнему используются для отображения многих базовых карт изображений или сервисов, основанных на спутниковой или ортофотосъемке, поскольку эти сервисы нацелены на представление единого, тщательно сбалансированного слоя изображений в качестве фона для приложений или инструментов.
Кэширование векторных листов — это новый, но широко поддерживаемый метод кэширования данных, когда растровые листы могут быть ограничены или не подходят по другим причинам. Векторные листы могут создаваться быстрее и иметь меньший размер, что дает преимущества как для хранения набора листов, так и для скорости их передачи клиенту через сетевое соединение.
Векторные листы также позволяют выполнять динамическую визуализацию с помощью стиля векторного листа, который может быть настроен или полностью обновлен в клиенте, например в браузере или в собственном приложении, и могут динамически отображать или скрывать различные слои, проводить фильтрацию на основе атрибутов и отображать несколько картографических версий одних и тех же данных, и все это с использованием одного и того же слоя векторных листов.
Кэширование как растровых, так и векторных листов имеет широкий спектр конфигураций, опций и вариантов выбора, которые необходимо сделать во время оптимизации сервиса. Обратитесь к документации Esri, ресурсам и материалам конференций для получения дополнительных рекомендаций в этих областях.
Другой связанный с этим подход к оптимизации – это новая возможность ArcGIS, называемая листами объектов. Листы объектов не создаются заранее в ходе запланированного процесса (как векторные или растровые листы), а создаются поддерживающими функциональность клиентами, которые запрашивают стандартизированные экстенты данных для стандартных уровней масштабирования. Поскольку эти запросы идентичны у разных клиентов, объекты могут кэшироваться промежуточным CDN или прокси-сервером и повторно использоваться или повторно отправляться разным клиентам. Эта функциональность доступна только для клиентов, которые предназначены для ее использования, в первую очередь через ArcGIS Maps SDK for JavaScript, но также через ArcGIS Pro и собственные приложения, созданные с помощью ArcGIS Maps SDK. Использование листов объектов основано на нескольких ключевых допущениях:
Размещенные сервисы объектов в ArcGIS Online включают опцию включения оптимизированной прорисовки слоев, которая может генерировать данные с пониженным разрешением в базе данных, используемые в меньших или более мелких масштабах просмотра. Эти данные с уменьшенным разрешением автоматически запрашиваются в процессе создания листов объектов при использовании этих масштабов, что, в свою очередь, повышает скорость отклика.
Помимо оптимизации приложений и сервисов, не менее важной областью для повышения производительности является хранение и характеристики данных, лежащих в основе конкретного сервиса. Большинство данных, используемых в веб-сервисах, носят табличный характер (за исключением сервисов изображений) и чаще всего включают в себя:
Как геометрия, так и атрибуты могут быть оптимизированы для повышения производительности сервиса. Дополнительные сведения по этим областям доступны в документации ArcGIS Pro по настройкам, влияющим на производительность доступа к данным.
Оптимизировать использование атрибутов можно за счет сокращения их количества. Проще говоря, это влечет за собой процесс удаления или скрытия столбцов или атрибутов, которые могут существовать в таблице, но не нужны для вашего приложения или сценария использования. Этого можно добиться, удалив столбцы, когда они не нужны, или сняв отметку у опции их отображения на карте при создании для публикации, например, для слоев изображений карты.
Еще одним важным моментом является индексация атрибутов, особенно когда столбцы будут использоваться для фильтрации или запросов в приложении. Индексирование позволяет выполнять более быстрые и эффективные запросы, когда фильтры запросов основаны на известном атрибуте или запрашивают текстовый, числовой или основанный на дате атрибут, а добавление индексов атрибутов является отличным способом использования уже встроенной технологии оптимизации в реляционных базах данных.
Столбцы геометрии также можно оптимизировать несколькими важными способами — в зависимости от варианта использования и требований к данным. Одним из вариантов является пространственная генерализация, часто также называемая упрощением, которая представляет собой процесс упрощения, сглаживания или снижения уровня детализации геометрического представления, такого как линия или полигон, для уменьшения размера объекта и требований к хранению и обработке. Этот процесс может быть выполнен на постоянной основе, если исходные данные слишком точны или слишком подробны с точки зрения включенных вершин, или может быть выполнен на копии данных, доступной только для чтения, которая используется для визуализации, при этом сохраняется полная детализация исходных данных.
С этим тесно связана идея снижения пространственной точности в отношении к геометрическому или географическому типу данных, который обычно хранит десятичное значение для фактических координат каждой вершины объекта, например, 124999.24541512. Это значение представляет собой линейную единицу измерения, меняющуюся в зависимости от системы координат набора данных, она может быть как большой, например, десятичные градусы, так и малой, например, футы или метры. В любом случае, обеспечение того, чтобы полученная пространственная точность отражала фактический сценарий использования данных, может быть важным как по функциональным соображениям, так и по соображениям производительности.
Для данных в системе координат с линейными единицами измерения на основе метра геометрия, хранящаяся как (123456.789101112, 234567.891011121), имеет 9 десятичных знаков точности, эквивалентной точности на нанометровом уровне. Если данные фиксируются устройством GPS с точностью до 1 м (в среднем), то эта точность значительно превышает фактическую точность измерения. Уменьшение пространственной точности набора данных за счет удаления десятичной части не только повышает точность, но и уменьшает размер геометрии при ее передаче в сетевом запросе на 50%, что помогает во всем, от процессов сериализации до ограничений пропускной способности. Использование соответствующей пространственной точности особенно важно при работе с высокодетализированными полигональными объектами, так как количество вершин может быстро достигать тысяч записей, и в результате это оказывает значительное влияние на производительность сервиса.
Помимо корректировки атрибутов и геометрии, оптимизировать производительность могут другие подходы к хранению данных более высокого уровня, в том числе:
Сервисы изображений обычно строятся на основе наборов данных мозаики, которые представляют собой объекты базы геоданных, соответствующие многим из приведенных выше предложений по оптимизации. Кроме того, существует несколько методов оптимизации, специфичных для сервиса изображений: