LoginSignup
10
11

More than 5 years have passed since last update.

Backbone.sync が API リクエストのキャッシュを使ってしまうのを防ぐ

Posted at

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

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11