Model の同期の際に GET API リクエストのキャッシュが使われてしまうと、削除したはずのものが表示されるなどおかしなことになってしまいます。
これは Backbone.js そのものの問題ではありませんが、Backbone.sync を使っていると、AJAX 通信をする部分を直接自分で書かないのではまりやすいです。
jQuery を使っている場合は、以下のコードでキャッシュを防ぐようにすることができます。リクエスト先の URL にタイムスタンプをパラメータとしてつけてリクエストするようになるためです。
$.ajaxSetup({ cache: false });
しかし、これでは jQuery を使った全ての AJAX 通信でキャッシュを使用しないようになるため、場合によってはふさわしくないかもしれません。その場合は Collection ごとに設定できます。
var MovieList = Backbone.Collection.extend({
…,
fetch: function (options) {
options.cache = false;
return Backbone.Collection.prototype.fetch.call(this, options);
},
…
});
さらに細かく制御したい場合は fetch()
や save()
のオプションに直接指定すると良いでしょう。fetch()
や save()
のオプションは、(少し修正が入りますが)$.ajax()
に渡されるのを利用します。
collection.fetch({ cache: false });
model.save(attributes, { cache: false });
参考
http://stackoverflow.com/questions/6178366/backbone-js-fetch-results-cached