2016-07-27 2 views
0

Это скорее архитектурный вопрос.Что я могу оптимизировать для своего API?

Я разрабатываю API (позволяет называть его API 1) для мобильного приложения, которое будет запрашивать мой API для новых статей. Я позвоню другому API (позвонит ему API 2), который возвращает мне исходный новостной канал.

Вы спрашиваете, почему API 1 необходим вообще? Ну, он будет делать много оптимизаций, таких как новости, связанные с версией curate, отформатировать его таким образом, чтобы было легче и легко мобилизовать канал.

Итак, API 2 возвращает 1000+ каналов, а затем, основываясь на моем заказе, позволяет сказать, что у меня есть 500 каналов для отправки с использованием API 1. Теперь с кешированием, и все это хорошо для моего бэкэнд. Проблема связана с мобильными устройствами (особенно старыми). Они начинают разбивать пот с огромными ответами (270 кб после Gzip).

Мое решение: Разбивка:

я могу разделить 500 новостные статьи 5 * 100 статей. Приложение может запрашивать страницы 1,2,3,4 и 5. Потенциальные минусы: Когда API 1 отправляет новые статьи, раскол 5 * 100 нарушен. Например видеть ленту новостей на мобильном устройстве:

Статья 1,

Статья 2,

..

Статья 99,

Статья 100

--- -Файл закончился ----

Статья 101,

Статья 102,

Теперь после того, как API 1 тонизирует кормить:

Новая статья 1,

Новая статья 2,

Статья 1,

Статья 2,

..

---- ---- Страница закончился

Статья 99 (дубликат),

Статья 100 (дубликат)

Статья 101,

Статья 102,

Каковы наилучшие методы для такой проблемы?

EDIT Чтобы получить более умственную картину проблемы, Подумайте приложения похожи на новости компании Apple или Google и несколько киоск похожи на Twitter и facebook каналов.

ответ

1

Вы можете назначить уникальный идентификатор каждой статье, например GUID, и разоблачить их в пользовательском интерфейсе вместе с самими статьями. Тогда запросы пользовательского интерфейса выглядят так: «Эй, API 1, дай мне следующие 100 статей после статьи #id». Затем конечная точка API 1 будет искать указанный #id в кэшированном фиде и извлекать следующие 100 статей.

+0

Благодарим вас за ответ. Но нет, это не то, что я хочу. Да есть страницы, но эти страницы находятся в контексте моего ответа API 1. Пользовательский интерфейс приложения будет непрерывным прокруткой. Новейшие статьи будут отображаться только во время вытягивания для обновления события и т. Д. – GauravPandey

+0

И в отношении «не добавляйте вновь вытащенные статьи в отображаемый список до тех пор, пока не будет запрошена первая страница». Мне нравится этот подход, однако ответ API 2 кэшируется, и он обновляется каждые 5 минут, и это будет противоинтуитивно, чтобы хранить эти изменчивые данные в памяти. Поэтому, если новые статьи вытягиваются, мне просто нужно поддерживать контекст, чтобы извлекать следующие несколько статей на основе моего последнего притяжения. – GauravPandey

+0

Извините, что не смог. Я, честно говоря, по-прежнему не могу построить последовательную ментальную модель проблемы, поэтому вы можете расширить описание проблемы с подробностями о том, как происходит взаимодействие между пользовательским интерфейсом, API 1 и API 2. –

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