OSDN Git Service

add cache
[pettanr/pettanr.git] / app / assets / javascripts / pettanr / cache.js.coffee
1 class Pettanr.Cache\r
2   \r
3   constructor: (options) ->\r
4     @data = {}\r
5     _.extend(this, Backbone.Events)\r
6   \r
7   # return cached items\r
8   store: (items) ->\r
9     if _.isArray(items)\r
10       return_items = _.map items, (item) =>\r
11         r = @restore(item.cache_key())\r
12         r = @store(item) if !r\r
13         r\r
14     else\r
15       item = items\r
16       return_items = @data[item.cache_key()] = @restore(item.cache_key()) || item\r
17       @refresh(return_items)\r
18     return_items\r
19   \r
20   restore: (key) ->\r
21     k = if _.isString(key)\r
22       key\r
23     else\r
24       key.cache_key()  # key = item\r
25     @refresh(k)\r
26   \r
27   refresh: (item) ->\r
28     if item.expire_time\r
29       if Date.now() >= return_items.expire_time\r
30         @sync(item)\r
31     item\r
32   \r
33   sync: (item) ->\r
34     item.fetch().done =>\r
35       item.expire_time.setTime(Date.now() + 10 * 60 * 1000)\r
36   \r