2016-05-16 71 views
1

我的問題是我提出了太多的API請求,如果可能的話我想減少這些請求。下面我將介紹的情況:如何在AngularJS應用程序中減少API請求


我有三個頁面,所有鏈接使用ngRoute。像這樣:

Page A: Teams (list of teams) 
    URL: "/teams" 
Page B: Team Details (list of players) 
    URL: "/teams/team-details" 
Page C: Player Details (list of player stats) 
    URL: "/teams/team-details/player-details" 

網頁A通過拉動隊的陣列從API非常容易地使用簡單的$resource.query()請求,以及使用NG-重複通過它們來迭代填充。

網頁B是通過調用一個HTML模板並從單獨的API請求/team-details端點值填充特定字段中,從點擊的元素上的頁面A.

C頁取team_id值(填充與頁面B一樣)從頁面B上的點擊播放器獲取player_id,並使用該值調用/player-details端點。這是又一個單獨的請求


這一切工作正常,但你可以想像,一個用戶可以很容易超過一個小時內100個API請求架起來。

我有一個1000 /小時的請求限制,所以如果只有10個用戶在同一時間在線,它可能很容易超過我的限制,並關閉我的API。

如果我可以將API作爲一個單一的主端點來訪問,並將一組數據和子數據輸出到一個集合中,那麼這將解決我的問題,但是由於我需要請求單獨的端點,所以我看不到如何執行此操作。

有沒有更好的方法來解決這個問題?或者這些過度的API請求是唯一的方法嗎?

任何幫助,將不勝感激。

回答

2

據我所看到的,你的模型看起來適合應用,滿足了一個API驅動的應用程序應該如何工作?

然而,一個潛在的刪節,你可以做的在本地緩存一些結果。即存儲會話中不可能改變的一些數據的本地版本。例如,如果團隊數量不太可能發生變化,則將本地1 API請求的結果存儲在本地,並使用該請求代替從API調用數據。

繼此路線後,您可以選擇僅在特定時間段後更新某些數據。因此,如果用戶查看了一些team-details,則拒絕在接下來的10-20分鐘內更新此數據。但是,這又取決於您的數據對時間敏感。

+0

謝謝。每個端點對時間敏感程度不同。例如,'/ teams'端點可能每小時刷新一次。 '/ team-details'和'/ player-details'需要更頻繁。如您所建議的那樣,您如何防止在特定時間段內重複API請求? – Paulos3000

+0

從客戶端100%鎖定它非常困難。但是我的方法是在本地成功請求(並緩存)存儲時間戳之後。我假設你使用'httpInjector'來調用你的API,這樣我就可以檢查你的時間戳了。如果時間戳是<你想要的,不要調用API並重定向以從本地緩存中獲取數據 – Harvey

+0

或者在本地保存數據(緩存)時向數據添加時間戳。然後總是首先從緩存請求。如果數據爲空或時間戳太舊,則調用API進行刷新。希望有所幫助! – Harvey

相關問題