Публикация и изучение размещенного векторного слоя

Вы начнете с публикации набора данных о среде обитания лягушки Хохштеттера в качестве размещенного векторного слоя напрямую на своем портале Enterprise. Вы рассмотрите его свойства, чтобы понять, как он отвечает на запросы клиентов. Вы изучите сведения об элементе слоя и его настройки на портале, получите доступ к конечной точке REST векторного слоя и перейдете к конечной точке сервиса администратора, чтобы определить свойства на уровне сервиса, связанные с поведением запросов и кэшированием. Понимание этих свойств необходимо перед включением кэширования ответов, поскольку не все размещенные векторные слои или рабочие процессы подходят для кэширования.

Публикация размещенного векторного слоя

Чтобы включить кэширование ответов, вы создадите размещенный векторный слой из GeoJSON файла.

  1. Загрузите данные об среде обитания лягушек.

    Пример данных – файл GeoJSON.

  2. Войдите под учётной записью организации ArcGIS.
    Примечание:

    Если у вас нет учетной записи организации, см. варианты доступа к программному обеспечению.

  3. На ленте щелкните вкладку Ресурсы.

    Вкладка Ресурсы

  4. Щелкните Новый элемент.

    Кнопка Новый элемент

  5. В окне Новый элемент щелкните Векторный слой.

    Опция Векторный слой

  6. На странице Создать векторный слой прокрутите вниз и щелкните Загрузить файл.

    Опция Загрузить файл

  7. Щелкните Далее.
  8. Щелкните Ваше устройство. Перейдите в папку Загрузки, выберите FrogHabitat.geojson и щелкните Открыть.

    Местоположение загрузки по умолчанию — папка Downloads, хотя вы можете указать другое место для сохранения файла.

  9. На странице Новый элемент добавьте следующую информацию:
    • В поле Заголовок оставьте текущее название FrogHabitat.
    • В поле Теги введите biodiversity, frogs и habitat, нажимая клавишу Tab после каждого тега.
    • В поле Сводка введите или скопируйте и вставьте: Этот размещенный векторный слой содержит линии рек охраняемой среды обитания исчезающих видов лягушек в Новой Зеландии.

    Свойства нового элемента

  10. Щелкните Сохранить.

    Откроется страница описания элемента размещенного векторного слоя.

    Страница Подробной информации об элементе

    Далее вы зададите параметры публикации, чтобы каждый мог получить доступ к векторному слою.

  11. Щёлкните Опубликовать.

    Кнопка Общий доступ

  12. В окне Опубликовать щелкните Для всех (общий).

    Окно Общий доступ с выбранной опцией Для всех (общий)

    Публичный уровень общего доступа хорошо подходит для данного варианта использования, когда данные по охране природы должны быть доступны внешней аудитории.

  13. Щелкните Сохранить.

Изучение свойств

Далее вы изучите свойства вновь опубликованного размещенного сервиса объектов в Enterprise и узнаете, какие настройки управляют тем, как слой отвечает на запросы клиентов.

  1. На странице сведений о векторном слое FrogHabitat, в поле URL щелкните кнопку Вид.

    Кнопка Вид для URL-адреса сервиса

    Открывается страница ArcGIS REST Services Directory; это HTML-вид конечной точки REST этого сервиса.

    Страница ArcGIS REST Services Directory

  2. В разделе Слои выберите Линии.

    Опция Линии в разделе Слои

    Откроется вид HTML конечной точки REST для данного слоя.

    Свойства линейного слоя

    Этот детальный слой позволяет вам контролировать, какие слои будут записывать содержимое кэша ответов в хранилище объектов. Далее вы изучите информацию о конфигурации слоя.

  3. Под путем в верхней части страницы щелкните ссылку JSON.

    Ссылка JSON

    На этой странице отображается вся информация о конфигурации слоя. Вы будете искать определенную команду, используя функцию поиска Windows.

  4. На клавиатуре нажмите клавиши Ctrl и F, чтобы открыть окно поиска.

    Поле Поиск

  5. В окне поиска введите editingInfo.

    Результаты поиска editingInfo

    Текст, который вы вводите, автоматически выделяется на странице.

    Слой имеет метку времени последнего изменения. Наличие записи о дате последнего редактирования важно для обеспечения того, чтобы клиент не использовал устаревший кэшированный ответ, который не отражает последние изменения. Поскольку кэш становится недействительным при внесении изменений в слой, кэширование наиболее эффективно для слоев, которые редко редактируются.

  6. Найдите свойство supportsQueryWithCacheHint.

    Результаты поиска supportsQueryWithCacheHint

    Это свойство имеет значение false, это означает, что кэширование ответов на запросы для этого слоя не включено.

Вы опубликовали размещенный векторный слой непосредственно на портале Enterprise, используя файл GeoJSON. Вы получили доступ к конечной точке REST сервиса объектов, чтобы убедиться, что он отслеживает дату последнего редактирования данных, но не имеет включенного кэширования ответов. Далее вы включите эту функцию.


Включить кэширование ответов на запросы для слоя

Далее вы включите кэширование ответов для размещенного векторного слоя FrogHabitat, изменив свойство supportsQueryWithCacheHint на true. Это позволяет Enterprise кэшировать ответы на запросы в хранилище объектов после получения ответа от реляционного хранилища один раз. Поскольку предоставление кэшированного ответа из хранилища объектов более эффективно, чем выполнение запроса к реляционному хранилищу, кэширование ответов оптимизирует эффективность размещенного векторного слоя.

Поскольку такая эффективность достигается только при повторении определенного запроса, кэширование ответов лучше всего подходит для случаев, когда пользователи выполняют один и тот же запрос многократно.

Включение кэширования ответов

Вы включите кэширование ответов, изменив свойство supportsQueryWithCacheHint на true. Операция updateDefinition позволяет обновить свойство определения для слоя сервиса объектов.

  1. В вашем браузере убедитесь, что активна вкладка с HTML-представлением слоя линий.

    HTML-представление слоя линий

    Для использования операции updateDefinition необходимо получить доступ к административному ресурсу слоя. Это можно сделать, добавив admin в URL-адрес.

  2. В адресной строке вкладки браузера замените rest/services на rest/admin/services.

    URL-адрес с добавленным admin

  3. Нажмите Ввод.

    Административная страница сервиса

    Появится административная страница.

  4. Щелкните Update Definition в нижней части страницы.

    Опция Update Definition

  5. Для Input скопируйте и вставьте следующий фрагмент JSON:
    {
                     "layerCache": {
                         "enabled": true,
                         "expiration": 1
                     }
    }

    Параметры Update Definition

    Примечание:

    Соблюдайте отступы, как показано на изображении.

    Это устанавливает кэш слоя на true и добавляет дату истечения, чтобы определить количество дней, в течение которых кэш будет храниться перед удалением. Значение свойства срока действия указано в днях, поэтому любой кэшированный ответ для этого слоя будет недействителен через один день. Более высокие значения означают, что кэшированный ответ будет доступен в течение более длительного времени. Более высокие значения также означают, что кэшированных ответов будет больше, что потребует больше места на диске.

  6. Щелкните updateDefinition.

    Кнопка updateDefinition

    Ответ JSON подтверждает успешность операции.

    Сообщение об успешном выполнении операции

  7. Активируйте вкладку браузера с представлением JSON свойств слоя и обновите страницу.
  8. Найдите свойство supportsQueryWithCacheHint.

    supportsQueryWithCacheHint установлено на true

Выполнение запросов для использования кэширования ответов

Если для слоя включено кэширование ответов, клиенты, которые знают, как работает кэширование ответов, обычно структурируют запросы для его использования. К этим клиентам относятся ArcGIS Pro, Map Viewer и приложения, созданные с помощью ArcGIS Maps SDK for JavaScript. Но запросы не всегда будут структурированы таким образом, особенно если они выполняются другими клиентами. См. Кэширование ответов для размещенных слоев сервиса объектов в ArcGIS Enterprise, чтобы узнать, как структурировать запросы для кэширования ответов.

Вы используете блокнот, созданный в ArcGIS Notebooks, чтобы имитировать запросы к сервису от пользователей, чтобы увидеть, как должны быть структурированы запросы для кэширования ответов.

  1. Вернитесь на вкладку браузера с показанным Update Definition.

    Страница Update Definition

  2. В URL замените rest/admin/services на rest/services (удалите admin), удалите updateDefinition в конце и нажмите Enter.

    URL обновлен путем удаления admin и updateDefinition

    Вы вернетесь на страницу ArcGIS REST Services Directory.

    Страница ArcGIS REST Services Directory

  3. Прокрутите страницу вниз и щелкните Query.

    Опция Query

    Когда клиент отправляет запрос к этому сервису, он использует эту конечную точку запроса. Вы используете эту конечную точку в блокноте для выполнения автоматических запросов.

  4. Скопируйте URL-адрес этой страницы запроса.
  5. Запустите ArcGIS Pro. Если будет предложено, войдите под лицензированной учетной записью организации ArcGIS.
    Примечание:

    Если у вас нет доступа к ArcGIS Pro или учетной записи организации ArcGIS, см. варианты доступа к программному обеспечению.

    Когда вы открываете ArcGIS Pro, вам предоставляется возможность создать новый проект или открыть существующий. Если вы уже создавали проект, вы увидите список последних проектов.

  6. В разделе Новый проект щелкните Запуск без шаблона.

    Опция Запуск без шаблона

  7. Загрузите блокнот printResponseInfo.
  8. На ленте, на вкладке Вставка щелкните стрелку вниз рядом с Новый блокнот и выберите Добавить и открыть блокнот.

    Опция Добавить и открыть блокнот

  9. Перейдите в папку, где вы сохранили printResponseInfo.ipynb, выберите printResponseInfo.ipynb и нажмите OK.

    Блокнот появляется. Вы выберете первую ячейку кода и запустите ее.

    Блокнот Print Response Information

  10. В блокноте выберите первую ячейку кода и щелкните кнопку Выполнить.

    Ячейка кода блокнота выбрана для выполнения

    Примечание:

    Также можно нажать Ctrl+Enter, чтобы запустить выбранную ячейку кода.

  11. Во второй ячейке кода замените значение queryURL в первой строке на URL-адрес запроса, который вы скопировали для своего сервиса.

    queryURL в ячейке кода

    Убедитесь, что URL-адрес заключен в двойные кавычки.

  12. Запустите вторую ячейку кода.

    Код статуса 200

    Ответ включает следующие значения:

    • Status code — указывает, был ли запрос выполнен успешно, имея значение 200
    • Date — дата и время выполнения запроса
    Примечание:

    Если значение Status code не равно 200, убедитесь, что вы указали правильное значение queryURL.

    Далее вы запустите вторую ячейку несколько раз, чтобы увидеть, как изменится ответ.

  13. Запустите вторую ячейку кода несколько раз.

    Для Date дата остается прежней, а время изменяется; однако информация в ответе в остальном идентична. Данные для этого запроса извлекаются из реляционного хранилища каждый раз, когда выполняется запрос.

  14. Измените строку 2 на resultType = "tile" и запустите ячейку один раз.

    Строка кода resultType = "tile"

    Информация ответа аналогична предыдущим запросам. Данные для этого запроса также были получены из реляционного хранилища. Но в отличие от предыдущих запросов, ответ был сохранен в кэше хранилища объектов, поскольку запрос использовал resultType = "tile".

  15. Запустите ячейку снова.

    Ответ, содержащий x-esri-ftiles-cache-compress: true

    На этот раз ответ включает дополнительный заголовок, x-esri-ftiles-cache-compress: true. Это показывает, что ответ был получен из значения, кэшированного в хранилище объектов с предыдущего запроса. Новый запрос к реляционному хранилищу выполнять не потребовалось.

    Если вы не видите заголовок x-esri-ftiles-cache-compress, убедитесь, что кэширование ответов включено для слоя и что вторая строка установлена на resultType = "tile".

  16. Измените строку 3 на cacheHint = "true" и запустите ячейку один раз.

    Строка кода cacheHint = "true"

    Этот ответ похож на тот, что вы видели в исходном запросе. Поскольку этот запрос отличается от предыдущего, он не соответствует каким-либо ранее кэшированным ответам, поэтому для ответа потребовался новый запрос к реляционному хранилищу. Поскольку запрос использовал cacheHint = "true", ответ на этот запрос также был кэширован в хранилище объектов.

    Примечание:

    Не обязательно использовать resultType = "tile" вместе с cacheHint = "true". Один из вариантов сам по себе достаточен для обеспечения использования кэширования ответов.

  17. Запустите ячейку снова.

    На этот раз ответ включает новый заголовок x-esri-cache-hint-features: true. Это показывает, что ответ получен из кэшированного значения хранилища объектов.

    Ответ x-esri-cache-hint-features: true

    Затем вы измените значение количества объектов, чтобы увидеть, как это повлияет на ответ.

  18. В строке 4 измените значение numFeatures на 5 и запустите ячейку.

    numFeatures установлено на 5

    Поскольку запрос снова отличается, соответствующего кэшированного ответа пока нет. Данные получены из запроса к реляционному хранилищу, что подтверждается отсутствием заголовков x-esri-ftiles-cache-compress: true и x-esri-cache-hint-features: true.

  19. Запустите ячейку снова.

    Ответ после изменения количества объектов

    Теперь ответ включает заголовок x-esri-cache-hint-features: true, показывающий, что сервис использовала значение, кэшированное в хранилище объектов из предыдущего запроса.

    Параметры resultType = "tile" или cacheHint = "true" необходимы для использования кэширования ответов. Когда пользователь выполняет запрос с любым из параметров к слою с включенным кэшированием ответов, данные для ответа будут получены из хранилища объектов, если они уже были кэшированы. Если данные еще не были кэшированы, новый запрос будет выполнен к реляционному хранилищу, и ответ будет кэширован в хранилище объектов. Пока не истечет срок действия кэша, любые идентичные запросы пользователей будут извлекаться из хранилища объектов вместо повторного запроса к реляционному хранилищу.

Включив кэширование ответов на запросы, организация сделала важный шаг к обеспечению широкого доступа к данным о среде обитания лягушки Хохштеттера, не создавая излишней нагрузки на свою инфраструктуру ArcGIS Enterprise. По мере роста общественного интереса к сохранению природы и увеличения числа пользователей, изучающих карты, приложения и операционные панели, созданные на основе этих данных, повторяющиеся запросы теперь могут эффективно обслуживаться из хранилища объектов, а не из реляционного хранилища. Это позволяет организации повысить доступность, оптимизируя при этом использование ресурсов этого размещенного векторного слоя.

Вы можете найти больше учебных пособий в галерее учебных пособий.