2015-12-17 83 views
1

我剛剛成爲SHOUTcast合作伙伴並收到了我的DevID。緩存SHOUTcast API結果

我讀了幾乎所有在這裏: SHOUTcast_Radio_Directory_API

這裏:SHOUTcast_API_License_Agreement

而且我有一個棘手的問題:我應該緩存從他們的API調用的結果?

如果決定緩存,我會去反對什麼是Shoutcast一樣電臺目錄API中要求:

不緩存XML超過1天,如站id也可以和將發生變化。

如果我不緩存任何東西,我會去反對Shoutcast一樣API許可協議:

請不要錘的服務器。我們要求合理使用,並建議您使用本地緩存。

此外,假設我決定緩存結果。由於這些結果是根據用戶的查詢100%,豈不是有點傻緩存這些結果,因爲我的應用程序的用戶可能會進入每一個時間不同的查詢????

在努力試圖解決我的問題,我不得不下載整個Shoutcast一樣數據庫,每天一次/周的想法,然後把它上傳到自己的服務器。之後,我的應用程序會將所有查詢發送到我的服務器,並且根本不會打擾SHOUTcast的服務器。

雖然這種方法存在的問題是我找不到一種方法來一次下載整個SHOUTcast數據庫,就像我們可以使用IceCast的dir.xiph.org/yp.xml一樣。

我應該怎麼做下一????我應該如何繼續?

我怕傷Shoutcast一樣API許可協議,並讓我的DEVID撤銷:

我們保留取消獲得針對濫用系統DevIDs的權利。

有沒有人曾經創建過一個連接到SHOUTcast目錄的應用程序?如果是這樣,你用什麼方法不被禁止?

+1

我會說這只是一個使用常識的問題。任何可能每次返回不同數據的請求(即任何形式的搜索)對緩存結果沒有多大意義。反之亦然:可能/應該緩存每個請求不太可能改變的數據(更多或「靜態」數據)。這可能是值得的努力,即使它只有24小時有效,因爲它可以讓你的應用感覺響應更快(並且可能在(半)離線模式下工作)。 –

回答

1

只是爲了完整起見,我會回答我自己的我想出瞭解決的問題。

了大量的研究後,我決定建立一個30分鐘的高速緩存,從中檢索到最後的結果。如果用戶更改搜索過濾器,或緩存過期,則清除所有緩存結果,向SHOUTcast服務器發出新請求,並創建新緩存。

的代碼可以在這裏找到:

ShoutcastRadioStationList.java

RadioStationCache.java