缓存json直到错过然后刷新它?

时间:2017-03-24 13:29:31

标签: javascript json http caching

对于我的网站,我喜欢缓存一些数据(它可以达到1MB甚至更多)。我希望将json缓存到1)它已经过了一两天2)搜索失败并且我想更新它(但如果它的时间不到5分钟则不会。)

我该怎么做?我在考虑做$.get('/my.json?ts=TIME'),但我不知道这是自己的文件还是覆盖/更新/my.json

1 个答案:

答案 0 :(得分:0)

像TheJim01所说,你可以使用localstorage或indexeddb。我认为大多数浏览器都会在本地存储或indexeddb中允许1MB的数据,但我在那里没有太多人知识。快速谷歌搜索似乎支持这一点。

如果您想依赖浏览器缓存,我建议采用这样的方法:

  1. 服务器端设置Cache-Control: max-age=86400。这将确保它不会缓存超过1天。
  2. 在localStorage中保留一个随机密钥。每次需要清除缓存时,只需更改此随机密钥即可。在$.get()来电中使用它。
  3. 客户端看起来像这样::

    var randomKey = localStorage.getItem('cacheKey');
    
    if (!randomKey || forceUpdateCache) {
        randomKey = '' + Math.random();
        localStorage.setItem('cacheKey', randomKey);
    }
    
    $.get('/my.json?v=' + randomKey);
    

    希望有所帮助。

    修改:如果您上次更新< 5分钟前,我忘了您不想清除缓存。为此,您还可以使用每次生成新随机密钥时设置的lastUpdated localStorage密钥。