Вызывают ли API-функции Facebook Graph с использованием расширения расширения поля по-разному против ограничений скорости, чем пакетные вызовы

Я ищу оптимизацию своего приложения для Facebook.

Сегодня я делаю пакетный вызов с четырьмя вызовами API графика:

/me
/me/friends
/me/likes
/me/feed

Если я изменю это на один вызов API-интерфейса графика, используя расширение поля, например:

/me?fields=id,name,username,friends,likes,feed

Будет ли это считаться одним ударом по API вместо четырех для ограничения скорости?

Ответ 1

К сожалению, каждый вызов в пакете подсчитывается как вызов api, он просто быстрее вызывает их в пакете, так как это будет 1 запрос. См. Здесь документацию по API Facebook:

Пределы
В настоящее время мы ограничиваем количество запросов, которые могут быть в пакете до 50, но каждый вызов в пакете подсчитывается отдельно для целей расчета пределов вызовов API и ограничений ресурсов. Например, пакет из 10 вызовов API будет считаться 10 вызовами, и каждый вызов внутри пакета вносит вклад в пределы ресурсов ЦП таким же образом.

Источник: https://developers.facebook.com/docs/reference/api/batch/

Ответ 2

Основываясь на реальном тестировании, я обнаружил, что расширение поля может рассчитывать на несколько применений под лимитом скорости. Например, начиная с тихого состояния, последовательность из 63 всплывающих вызовов на один api (graph.facebook.com/IDENTITY/posts) привела нас к пределу скорости передачи 600.

Ответ 3

В соответствии с Facebook Docs,

Функция расширения поля Graph API позволяет эффективно "объединять" несколько запросов графа в один вызов.

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

Как я уже отмечал в комментарии выше: пакет отправляет несколько запросов, но не обязательно связанных с Facebook, в одном запросе. Расширение поля подобно выполнению объединений в SQL через один запрос.