Предотвращение кэширования данных Ember и загрузки данных модели по требованию

#ember.js

#ember.js

Вопрос:

Мы рассматриваем возможность перехода с Backbone на Ember. Есть несколько проблем, на которые я не могу получить ответы из документов.

1) Ember-Data кэширует свои данные. Наше приложение многопользовательское, поэтому другие пользователи должны иметь возможность видеть новые записи, созданные всеми. Есть ли способ обойти это? Я прочитал в другом сообщении, что при передаче строки запроса данные ember не кэшируются, это правда? Если это так, могу ли я тогда просто всегда отправлять строку запроса, и ничего не будет кэшироваться?

2) У Ember data есть единственная модель в маршрутизаторе, которая, как представляется, создается во время загрузки маршрута. Я вижу, что вы можете запрашивать данные из нескольких источников, возвращая объект со многими this.store.поиск вызовов. Допустим, у меня есть элемент select, и когда вы выбираете опцию, другой select заполняется элементами на основе первого select (что требует обратного вызова на сервер). Как это будет работать, как я могу получать данные модели по требованию (не во время загрузки маршрута)?

Ответ №1:

Я не уверен, отвечает ли это на ваш вопрос, но вы всегда можете позвонить

 model.reload()
  

для повторной выборки данных с сервера, чтобы вы могли работать с актуальными данными.

Комментарии:

1. Так это обновит все модели, которые в настоящее время находятся в ember-data? Нужно ли мне вызывать это в начале каждого маршрута?

2. это обновит конкретную модель, изначально созданную в вашем маршруте

3. Я полагаю, что недостатком этого является то, как я узнаю, что запись была извлечена из кэша. В противном случае я бы сделал 2 вызова на сервер.

4. Ну, вы действительно не можете обойти хранилище (иначе ember-data не был бы очень полезен), поэтому не запрашивая у сервера информацию о состоянии вашей модели (является ли она актуальной или нет) Я не думаю, что вы можете «угадать», была ли запись обновлена кем-то другим. Если вы не хотите использовать хранилище, возможно, ember-data — это не то, что вы ищете, и вам было бы лучше использовать простые вызовы jquery ajax.

Ответ №2:

Возможно, вы захотите рассмотреть Faye (http://faye.jcoglan.com /), что позволило бы вам настроить паблик / вспомогательный сервер, который мог бы обновлять ваш магазин, прослушивая интересующие темы. Для интерфейса потоковой передачи используется WebSocket. Затем вы могли бы поместить новые объекты в хранилище, удалить или обновить существующие объекты, которые сервер мог бы опубликовать клиенту.