Вызывают ли 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 через один запрос.