10

Tôi đang tìm cách tối ưu hóa ứng dụng Facebook của mình.Thực hiện cuộc gọi API biểu đồ Facebook bằng cách sử dụng tính năng mở rộng trường khác với giới hạn tốc độ so với số lượng cuộc gọi hàng loạt

Hôm nay tôi thực hiện cuộc gọi hàng loạt với các cuộc gọi API Bốn đồ thị:

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

Nếu tôi thay đổi này cho một cuộc gọi graph API đơn sử dụng mở rộng lĩnh vực như thế này:

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

sẽ mà bây giờ đếm như là một hit chống lại API thay vì bốn cho mục đích hạn chế tỷ lệ?

+0

Có, nó nên, mọi thứ khác sẽ có ý nghĩa ít. – CBroe

+1

Tôi đồng ý rằng điều này có vẻ hiển nhiên, nhưng giới hạn tỷ lệ FB là khá mờ đục, vì vậy tôi chỉ muốn nghe các nhân viên FB xác nhận giả định. –

+0

Cuộc gọi thứ hai của bạn * là * một cuộc gọi API duy nhất. Bạn không sử dụng mở rộng trường trong đó. – cpilko

Trả lời

3

Thật không may, mỗi cuộc gọi trong lô được tính là một cuộc gọi api, nó chỉ nhanh hơn để gọi chúng trong một lô vì nó sẽ là 1 yêu cầu. Xem ở đây tài liệu trên Facebook API:

Giới hạn
Chúng tôi hiện đang hạn chế số lượng yêu cầu mà có thể là trong một lô 50, nhưng mỗi cuộc gọi trong hàng loạt được tính riêng cho mục đích tính giới hạn cuộc gọi API và giới hạn tài nguyên. Ví dụ, một loạt 10 cuộc gọi API sẽ được tính là 10 cuộc gọi và mỗi cuộc gọi trong loạt đóng góp vào giới hạn tài nguyên CPU theo cách tương tự.

Nguồn: https://developers.facebook.com/docs/reference/api/batch/

+1

Facebook cập nhật tài liệu chính thức của họ vào giữa thời điểm câu hỏi này được hỏi và trả lời. Cảm ơn Kevin! –

+1

@RichSutton Nps. Vâng, tôi đã suy nghĩ một cái gì đó như thế :) –

+0

Mở rộng trường! = Hàng loạt. Một lô gửi các truy vấn liên quan đến nhiều nhưng không nhất thiết liên quan đến Facebook trong một yêu cầu duy nhất. Mở rộng trường giống như thực hiện một loạt các phép nối trong SQL. Đó chỉ là một cuộc gọi. – Galen

0

Theo Facebook Docs,

Tính năng mở rộng lĩnh vực API Graph, cho phép bạn một cách hiệu quả "tham gia" truy vấn nhiều đồ thị thành một cuộc gọi duy nhất.

Vì vậy, truy vấn của bạn ở trên sẽ đại diện cho bốn cuộc gọi trong biểu mẫu Hàng loạt và một cuộc gọi trong biểu mẫu Mở rộng trường.

Như tôi đã lưu ý trong một nhận xét ở trên: Một lô gửi nhiều truy vấn liên quan đến nhiều nhưng không nhất thiết liên quan đến Facebook trong một yêu cầu duy nhất. Mở rộng trường giống như thực hiện các phép nối trong SQL thông qua một truy vấn đơn lẻ.

2

Dựa trên thử nghiệm trong thế giới thực, tôi nhận thấy rằng việc mở rộng trường có thể được tính cho nhiều lần sử dụng theo giới hạn tốc độ. Ví dụ, bắt đầu từ trạng thái yên tĩnh, một chuỗi gồm 63 cuộc gọi được mở rộng đến một api (graph.facebook.com/IDENTITY/posts) đã đưa chúng tôi đến giới hạn tốc độ cuộc gọi 600.