У меня есть клиентское приложение на основе Flex, которое «общается» с серверной частью через BlazeDS. В одном из моих сценариев использования будет так называемое представление «Фотостена», в котором будет представлен ряд самых последних фотографий, присланных от людей и для мест, за которыми следит пользователь (в стиле Facebook).
Дело в том, что данные на этой фотостене должны быть отфильтрованы по «Все», что означает отсутствие фильтра, «Друзья», означающие друзей, за которыми пользователь следит, и «Места», означающие местоположения, за которыми следует пользователь.
Следующие три подхода гудят в моей голове
Если я получу данные с сервера только один раз (когда по умолчанию выбран фильтр ВСЕ), я сохраню их локально, и в следующий раз, когда пользователь нажмет на фильтр, эта локальная коллекция будет отфильтрована локально. Проблема в том, что я не могу предсказать, сколько из всех недавних фотографий пришло от друзей, а сколько - из разных мест, поэтому я могу получить страницу, которая показывает только одну фотографию, где всегда должно присутствовать минимум 5 фотографий. , Я явно не хочу иметь дело с частичной загрузкой и тому подобными вещами.
Другой способ - сначала сделать два отдельных запроса к серверу: один для получения коллекции недавних фотографий от друзей, а другой для определения местоположения. Таким образом я сделаю так, чтобы у меня был минимум фотографий для отфильтрованных страниц. Когда данные поступят, клиент объединит эти две коллекции, отсортировав их по дате, и вуаля будет коллекция «ALL» (конечно, повторяющиеся фотографии должны быть удалены при объединении)
В-третьих, сделать то же самое на уровне сервера, сделав два отдельных запроса, а затем объединить их.
Это обычная ситуация, я знаю, но, тем не менее, я должен как-то с этим справиться. В общем, пожалуйста, предложите хорошие независимые от сервера стратегии для извлечения данных.