2015-12-17 3 views
1

Я только что стал партнером SHOUTcast и получил мой DevID.Кэширование результатов API SHOUTcast

Я прочитал довольно много все здесь: SHOUTcast_Radio_Directory_API

и здесь: SHOUTcast_API_License_Agreement

И у меня есть сложный вопрос: я должен кэшировать результаты своих API вызовов?

Если решил кэш, я бы идти против того, что запрашивается в API SHOUTcast Каталога Радио:

Не кэшировать XML более чем на 1 день, как может идентификатор станции и изменится.

Если я ничего не кэшировать, я бы идти против SHOUTcast API лицензионного соглашения:

Пожалуйста, не забивают серверы. Мы запрашиваем разумное использование и рекомендуем использовать локальное кэширование.

Кроме того, предположим, что я решил убрать результаты. Поскольку эти результаты на 100% основаны на запросах пользователей, не было бы глупо кэшировать эти результаты, так как пользователи моего приложения, вероятно, каждый раз вводили разные запросы ????

Чтобы попытаться решить мою проблему, у меня возникла идея загрузить всю базу данных SHOUTcast один раз в день/неделю, а затем загрузить ее на свой сервер. Впоследствии мое приложение отправило бы все запросы на мой сервер и вообще не беспокоило бы серверы SHOUTcast.

Проблема с таким подходом заключается в том, что я не мог найти способ сразу загрузить всю базу данных SHOUTcast, как мы можем сделать с IceCast dir.xiph.org/yp.xml.

Что мне делать дальше ???? Как мне продолжить?

Я боюсь задеть лицензионное соглашение SHOUTcast API и получать мой Девид аннулирован:

Мы оставляем за собой право отменить доступ к DevIDs, которые злоупотребляют систему.

Создал ли кто-нибудь здесь приложение, которое подключается к каталогу SHOUTcast? Если да, то какой подход вы использовали, чтобы не быть запрещенным?

+1

Я бы сказал, что это просто вопрос использования здравого смысла. Любой запрос, который может каждый раз возвращать разные данные (т. Е. Любую форму поиска), не имеет смысла кэшировать результаты. И наоборот: данные, которые вряд ли будут изменяться с каждым запросом (больше или «статические» данные), могут/должны быть кэшированы. Это, вероятно, стоит усилий, даже если это действует всего за 24 часа, так как это может сделать ваше приложение намного более отзывчивым (и, возможно, работать в (полу) автономном режиме). –

ответ

1

Как раз для полноты, я отвечу на свой вопрос с помощью решения, которое я придумал.

После большого исследования я решил создать 30-минутный кеш, из которого я получаю последние результаты. Если пользователь изменит фильтр поиска или истечет срок кеша, все результаты кэширования будут удалены, новый запрос будет сделан на серверы SHOUTcast и создан новый кеш.

Код можно найти здесь:

ShoutcastRadioStationList.java

RadioStationCache.java

Смежные вопросы