【问题标题】:Caching SHOUTcast API results缓存 SHOUTcast API 结果
【发布时间】:2016-03-30 00:43:46
【问题描述】:

我刚刚成为 SHOUTcast 合作伙伴并收到了我的 DevID。

我在这里阅读了几乎所有内容: SHOUTcast_Radio_Directory_API

这里:SHOUTcast_API_License_Agreement

我有一个棘手的问题:我应该缓存他们 API 调用的结果吗?

如果决定缓存,我将违背 SHOUTcast Radio Directory API 中的要求:

不要将 XML 缓存超过 1 天,因为站 ID 可以并且将会改变。

如果我没有缓存任何内容,我将违反 SHOUTcast API 许可协议:

请不要锤击服务器。我们要求合理使用并建议您使用本地缓存。

此外,假设我决定缓存结果。由于这些结果 100% 基于用户的查询,缓存这些结果会不会有点傻,因为我的应用的用户可能每次都会输入不同的查询????

为了尝试解决我的问题,我想到了每天/每周一次下载整个 SHOUTcast 数据库,然后将其上传到我自己的服务器。之后,我的应用程序会将所有查询发送到我的服务器,并且根本不会打扰 SHOUTcast 的服务器。

不过,这种方法的问题在于,我无法像使用 IceCast 的 dir.xiph.org/yp.xml 那样一次性下载整个 SHOUTcast 数据库。

接下来我该怎么办????我应该如何进行?

我害怕损害 SHOUTcast API 许可协议并让我的 DevId 被撤销:

我们保留撤销滥用系统的 DevID 访问权限的权利。

这里有没有人创建过连接到 SHOUTcast 目录的应用程序?如果是这样,您使用了哪种方法没有被禁止?

【问题讨论】:

  • 我想说这只是使用常识的问题。任何可能每次都返回不同数据的请求(即任何形式的搜索)对于缓存其结果没有多大意义。反之亦然:可以/应该缓存不太可能随每个请求更改的数据(更多或“静态”数据)。这可能值得付出努力,即使它的有效期仅为 24 小时,因为它可以让您的应用感觉更灵敏(并且可能在(半)离线模式下工作)。
  • 嘿,卡罗,我在这里提出了一个类似的问题:stackoverflow.com/questions/49395722/…。可以看看吗?

标签: android caching shoutcast


【解决方案1】:

为了完整起见,我将用我想出的解决方案来回答我自己的问题。

经过大量研究,我决定创建一个 30 分钟的缓存,从中检索最后的结果。如果用户更改搜索过滤器,或者缓存过期,所有缓存结果都会被清除,向 SHOUTcast 的服务器发出新请求并创建新缓存。

代码可以在这里找到:

ShoutcastRadioStationList.java

RadioStationCache.java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 2011-04-23
    • 2014-12-11
    • 1970-01-01
    • 2011-01-06
    相关资源
    最近更新 更多