Я разрабатываю API на PHP. Мне нужно знать, в каком регионе запрашивается этот API. Если возможно, с минимальной задержкой (Хотя я ничего не нашел, чтобы помочь с этим).
Для этого я использую глобальный балансировщик нагрузки с CDN в своей облачной функции.
Я попытался просмотреть заголовки запросов и переменные среды, но ничего не напоминает мне о регионе, где глобальный балансировщик нагрузки с CDN кэширует API.
С этого момента я очень благодарен за любую помощь...
Просто уточню: вам нужен регион запрашивающего? Или балансировщика нагрузки? Или из CDN? Или облачных функций (если развертывать в нескольких регионах)?
Я пытаюсь увидеть, из какого региона работает кеш API. Потому что GCP сообщает, что при использовании глобального балансировщика нагрузки с cdn копия облачной функции кэшируется во всех регионах. Таким образом, когда пользователь запрашивает API, у него будет минимальное время отклика.
Это не совсем точно! Ответ Cloud Functions кэшируется, если установлен заголовок управления кэшем. Если это так, ответ кэшируется, и при следующем выполнении точного запроса содержимое будет обслуживаться из кэша. Но будьте осторожны, если у вас есть запрос в Европе и такой же в США, оба запросят ваши облачные функции и сохранят результат в кеше CDN региона. CDN не синхронизированы по всему миру. 2-й пользователь в том же регионе, что и 1-й, будет иметь минимальную задержку, а не в разных регионах.
А поскольку запросы обслуживаются из кеша, вы увидите только первый запрос, который создаст кеш. Последующий запрос неизвестен облачным функциям, поскольку обслуживается из кеша, а не из самой функции.
Я понимаю ваше объяснение. Но остается вопрос: есть ли какие-либо заголовки, переменные среды или что-то еще, что я могу активировать, чтобы определить, откуда обслуживается кеш?
Потому что вам нужно ловить эту информацию на стороне клиента (в браузере пользователя)?
Я на самом деле пытаюсь получить эту информацию в API
Что вы имеете в виду под "в API"? В коде облачных функций?
Да, в php-коде, работающем в облачной функции
Прочтите мой предыдущий комментарий. Вы получите только 1-й запрос. последующие будут кешироваться, и вы их не получите -> это принцип CDN: обслуживать напрямую, не связываясь с бэкэндом
Итак, что вы предлагаете в случае, когда вам нужно знать ближайший к пользователю регион?