Мое приложение Ember извлекает данные из бэкэнда Rails с помощью active_model_serializers на бэкенде и DS.ActiveModelAdapter на фронте. Все работает хорошо, но я не понимаю стратегию кэширования.
Согласно Emberjs.org, кэширование документов происходит автоматически:
Магазин автоматически кэширует записи для вас. Если запись уже была загружена, повторный запрос всегда будет возвращать один и тот же экземпляр объекта.
Однако всякий раз, когда я посещаю следующий маршрут (app/routes/suppliers.js), адаптер заново извлекает данные с сервера:
import Ember from 'ember';
import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin';
export default Ember.Route.extend(AuthenticatedRouteMixin, {
model: function() {
return this.store.find('Supplier');
}
});
Я заметил, что когда я посещаю детальный маршрут (app/routes/supplier.js), сервер не вызывается, так как одна запись предположительно повторно используется из коллекции.
Поскольку мое приложение в основном доступно только для чтения и не требует большого количества обновлений, я хочу кэшировать всю эту коллекцию (пока я не решу сделать кеш недействительным), чтобы я мог переключаться между представлениями сведений и представлениями коллекции без задержка обновления данных коллекции с сервера.