Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';在客户端使用js缓存数据的最佳方式是什么?_Javascript_Html_Cookies_Web Storage - Fatal编程技术网

Javascript 什么';在客户端使用js缓存数据的最佳方式是什么?

Javascript 什么';在客户端使用js缓存数据的最佳方式是什么?,javascript,html,cookies,web-storage,Javascript,Html,Cookies,Web Storage,我的应用程序使用API从另一台服务器接收数据,请求数量有限。数据很少更改,但即使在刷新页面后也可能是必需的 使用cookie或HTML5解决这个问题的最佳方法是什么 网络存储 可能还有其他方法来解决这个问题吗 尽管跨浏览器兼容性很重要,cookie是唯一的选择,而不是web存储 但问题实际上取决于您缓存的数据类型 对于您正在尝试的内容,可能根本不需要cookie和web存储 Cookie用于存储与配置相关的信息,而不是实际数据本身 Web存储支持持久数据存储,与Cookie类似,但容量大大增强

我的应用程序使用API从另一台服务器接收数据,请求数量有限。数据很少更改,但即使在刷新页面后也可能是必需的

  • 使用cookie或HTML5解决这个问题的最佳方法是什么 网络存储
  • 可能还有其他方法来解决这个问题吗
    尽管跨浏览器兼容性很重要,
    cookie
    是唯一的选择,而不是web存储

    但问题实际上取决于您缓存的数据类型

    对于您正在尝试的内容,可能根本不需要cookie和web存储

    • Cookie用于存储与配置相关的信息,而不是实际数据本身
    • Web存储支持持久数据存储,与Cookie类似,但容量大大增强,HTTP请求头中不存储任何信息
    我更愿意说,将整个页面缓存为cookie或web存储是愚蠢的。出于这些目的,服务器端缓存选项可能是更好的方法

    更新:

    引述:

    关于某些社交网络(fb、vk、google+)中用户活动的数据

    检测web存储功能,使用库,如,如果不存在,则返回cookie方法。一个简单的例子



    [1] :

    我写这个库是为了解决同样的问题:

    这里有一些基本用法

    //只需使用数组作为键添加新缓存
    set({blogId:1,类型:'view'},'blog1');
    cacheJS.set({blogId:1,类型:'json'},jsonData);
    //使用密钥删除缓存
    removeByKey({blogId:1,类型:'json'});
    //使用ttl和上下文键添加缓存
    cacheJS.set({blogId:2,type:'view'},'Blog 2',3600,{author:'hoangnd'});
    cacheJS.set({blogId:3,type:'view'},'blog3',3600,{author:'hoangnd'});
    //使用con文本密钥删除缓存
    //博客2和博客3的缓存将被删除
    
    removeByContext({author:'hoangnd'})
    下面是一个从JQuery AJAX缓存数据的示例。所以,如果你只想在你还没有数据的时候打电话,那真的很简单。只需这样做(示例)。在这里,我们首先检查是否有装载信息(键入line、location和shipdate),只有在没有的情况下,我们才会调用AJAX并将数据放入缓存:

    var dict = [];
    
    function checkCachedLoadLine(line, location, shipDate, callback) {
        var ret = 0;
        if(!((line+location+shipDate) in dict)) {
            productionLineService.getProductionLoadLine(line, location, shipDate, callback);
        }
        return dict[line+location+shipDate];
    }
    
    …然后在回调中将值写入缓存

    function callback(data) {
        if (!data) {
            document.getElementById('htmlid').innerHTML = 'N/A';
        } else {
            document.getElementById('htmlid').innerHTML = data[0];
            dict[data[2]+data[3]+data[4]] = data[0];
        }
    }
    

    什么样的数据。。。嗯。例如,一些社交网络(fb、vk、谷歌+)中的用户活动数据。在服务器端缓存数据对我来说非常糟糕,因为这么多数据=)这个应用的跨浏览器兼容性不是主要任务,这个应用是为现代浏览器设计的。如果你能做到
    if(localStorage)
    ?@JanDvorak,这是2012年与网络相关的答案:)如果某个男孩在这么多年后仍在阅读此内容,对于本地存储,此项目可能会有所帮助:
    function callback(data) {
        if (!data) {
            document.getElementById('htmlid').innerHTML = 'N/A';
        } else {
            document.getElementById('htmlid').innerHTML = data[0];
            dict[data[2]+data[3]+data[4]] = data[0];
        }
    }