> 新闻中心 > 电脑游戏 >  > 正文

北京赛车是真的吗

一、什么是缓存

一个缓存就是一个组件,它可以透明地存储数据,以便未来可以更快地服务于请求。

yi ge huan cun jiu shi yi ge zu jian, ta ke yi tou ming di cun chu shu ju, yi bian wei lai ke yi geng kuai di fu wu yu qing qiu.

缓存能够服务的请求越多,整体系统性能就提升得越多。

?

二、Angular 中的缓存

2.1?$cacheFactory 简介

$cacheFactory 是一个为所有Angular服务生成缓存对象的服务。在内部, $cacheFactory 会创建一个默认的缓存对象,即使我们并没有显示地创建。

要创建一个缓存对象,可以使用 $cacheFactory 通过一个ID创建一个缓存:

var cache = $cacheFactory("myCache");

这个 $cacheFactory 方法可以接受两个参数:

cacheId (字符串):这个 cacheId 就是创建缓存时的ID名称。可以通过 get() 方法使用缓存名称来引用它。

capacity :这个容量描述了在任何给定时间要使用缓存存储并保存的缓存键值对的最大数量。

?

2.2?缓存对象

缓存对象自身有下列这些方法可以用来与缓存交互。
info() : info() 方法返回缓存对象的ID、尺寸和选项。
put() : put() 方法允许我们把任意JavaScript对象值形式的键(字符串)放进缓存中。cache.put("hello","world");
put() 方法会返回我们放入缓存中的值。
get() : get() 方法让我们能够访问一个键对应的缓存值。如果找到了这个键,它会返回它的值;如果没有找到,它会返回 undefined 。cache.get("hello");
remove() : remove() 函数用于在找到一个键值对的情况下从缓存中移除它。如果没有找到,它就会返回 undefined 。cache.remove("hello");
removeAll() : removeAll() 函数用于重置缓存,同时移除所有已缓存的值。
destory() : destory() 方法用于从 $cacheFactory 缓存注册表中移除指定缓存的所有引用。

?

三、$http 中的缓存

Angular的 $http 服务创建了一个带有ID为 $http 的缓存。要让 $http 请求使用默认的缓存对象很简单: $http() 方法允许我们给它传递一个 cache 参数。

?3.1 默认的 $http 缓存
当数据不会经常改变时,默认的 $http 缓存就特别有用了。可以像这样设置它:

$http({
    method: "GET",
    url: "/api/users.json",
    cache: true  //设置为true只是用来使用$http默认的缓存机制
});

现在,通过 $http 到URL /api/user.json 的每个请求将会存储到默认的 $http 缓存中。这个$http 缓存中的请求键就是完整的URL路径。

?

如果需要,也可以操作这个默认的 $http 缓存(比如,如果我们发起的另外一个没有缓存的请求提醒我们发生了增量变化,我们就可以在默认的 $http 请求中清除这个请求)。

为了引用 $http 的默认请求,只需通过 $cacheFactory() 使用ID来获取到该缓存:
var cache = $cacheFactory("$http");
对于所掌控的缓存,我们可以在需要时进行所有的正常操作,比如检索已缓存的响应,从缓存中清除条目,或者消除所有缓存的引用。
// 获取上一次请求的缓存 var usersCache = cache.get("http://example.com/api.users.json"); // 删除上一次请求的缓存入口 cache.remove("http://example.com/api.users.json"); // 重新开始并移除全部缓存 cache.removeAll();
        var cache = $cacheFactory.get("$http");
        if(cache.get("cacheData")){
            console.log(cache.get("cacheData"));
        }else{
            helloService.play().then(
                function (data) {
                    cache.put("cacheData", data);  //往缓存中放入数据
                    console.log(data);
                }
            );
        }

?

?3.2 自定义缓存

有时候能够对缓存有更多的控制以及针对缓存的表现创建规则,这就需要创建一个新的缓存来使用 $http 请求。

通过自定义的缓存来让 $http 请求发起请求很简单。可以采用传递缓存实例的方式,而不必传递一个布尔参数 true 给请求。

var myCache = $cacheFactory("myCache");
$http({
  method: "GET",
  utl: "/api/users.json",
  cache: myCache
});

一个小demo:定义一个缓存服务,依赖注入到你要用的控制器中,直接使用

define([
   "angularModule"
],function(app){
    app.factory("myCache", ["$cacheFactory", function($cacheFactory){
        return $cacheFactory("myCache");  //自定义一个缓存服务
    }])
});
?
        //自定义缓存,有缓存就从缓存里。?裨蚓头⑺颓肭螯/span>
        if(myCache.get("cacheData")){
            console.log(myCache.get("cacheData"));
        }else{
            helloService.play(myCache).then(
                function (data) {
                    myCache.put("cacheData", data);
                    console.log(data);
                }
            );
        }
            cache:只是为了可以使用默认$http的缓存机制
            play : function (myCache) {
                return httpRequestService.request({
                    method : "get",
                    url : "http://localhost:8080/hello/play",
                    cache : myCache
                })
            }

?现在, $http 将会使用自定义的缓存而非默认缓存。

?

四、为 $http 设置默认缓存

每次我们想要发起一个 $http 请求时都要给它传递一个缓存实例并不方便,特别是对每个请求使用同一缓存的时候。

其实可以在模块的 .config() 方法中通过 $httpProvider 设置 $http 默认使用的缓存对象。

angular.module("myApp", []).config(function($httpProvider) {
  $httpProvider.defaults.cache = $cacheFactory("myCache", {capacity: 20});
});

这个 $http 服务不再使用它为我们创建的默认缓存;它会使用我们自定义的缓存,实际上这就是一个近期缓存最久未使用算法① (Least Recently Used,LRU)。

LRU缓存根据缓存容量只保留最新的缓存数目。也就是说,我们的缓存容量为20,因此会缓存前20个请求,但是进入第21个请求时,最近最少使用的请求条目就会从缓存中被删除。这个缓存自身会负责具体哪些要维护,哪些要移除。

当前文章:http://www.carinsurancequoteny.com/0vnrl85p/1692-469723-47802.html

发布时间:14:06:12

全讯开奖直播  香港六合采  百万富豪开奖结果  118图库彩图  www.677577.com  香港特马资料  999917.com  84384即时开奖现场168  香港马会生肖表  开奖直播  

用手机访问
下载APP
appicon
扫一扫,手机浏览
code
  • 标签:
  • 作为波兰格丁尼亚音乐剧院的大明星,杰洛特即将在《巫师3》的音乐剧中大显身手。
    2017-11-01 14:11:01
    0
  • 由Noclip制作的《巫师》系列纪录片第二集已经公开,这集带大家走进《巫师》初代和第二代。
    2017-10-04 23:10:46
    0
  • 《巫师》系列的成功让全世界的玩家都记住了CDPR这个名字,其实在CDPR之前,就曾经有波兰的游戏公司对Andrzej Sapkowski所著的《猎魔人》系列小说产生了兴趣,要将其改编为一款电子游戏。
    2017-10-03 19:10:36
    0
  • 一部主要讲述《巫师3》制作背后故事的纪录片将要在明天开播,一天一集持续六天。
    2017-10-01 09:10:09
    0
  • Mod制作者Essenthy打造的《巫师3:狂猎》“超级光效”画面MOD发布了最新的3.2版本,迎来了久违更新的MOD将为《巫师3》带来更强更美的画面。
    2017-09-29 18:09:23
    0
  • 油管频道Merlet不久前制作了一个《巫师》的同人短片“恶魔之桥”,以同人的角度来说拍摄水平相当高了。
    2017-09-13 13:09:06
    0
  • 地表最强杰洛特Coser Maul周游世界之旅带来了不少趣闻,比如在日本的时候被一群鹿“围攻”。而今天他又分享了一则杰洛特学习用中国筷子的趣事。
    2017-09-09 09:09:33
    0
  • Mod大神Halk Hogan公布了他的《巫师3》高清重制Mod的新进展,。最新的4.8版本极大的提升了水体的反射效果。
    2017-09-07 09:09:35
    0
  • CDPR其实还带来了另一部视频,它包含了《巫师3》游戏的有趣开发幕后,游戏中各种搞笑的Bug和恶搞作品。果然官方鬼畜最为致命。
    2017-09-04 18:09:28
    0
  • CDPR官方为了庆祝《巫师》游戏系列诞生十周年,特地打造了一部纪念视频。
    2017-09-04 09:09:46
    0
  • 来看看这些来自波兰设计师的作品,他负责制作了《巫师3》中的一些建模。你甚至会发现以前从未注意过的细节。
    2017-10-27 09:10:21
    0
  • 德国coser eosAndy带来了他的最新《巫师3》作品,他出演的白狼老爷终于重演了游戏中的艳福不浅。
    2017-10-18 22:10:50
    0
  • 俄罗斯COSER Reilin带来了一组《巫师3》特莉丝的COS美图,又是超水准的战斗民族级COS,大家文明观…
    2017-10-13 22:10:54
    0
  • Mod制作者Essenthy打造的《巫师3:狂猎》“超级光效”画面MOD发布了最新的3.2版本,迎来了久违更新的MOD将为《巫师3》带来更强更美的画面。
    2017-09-29 18:09:23
    0
  • 正值《巫师》系列游戏诞生十周年,不光CDPR自家发了“合家欢”的视频来庆祝,波兰游戏网站arhn.eu也制作了一部长达近2个小时的纪录片来揭秘《巫师》原著改编游戏的历史。
    2017-09-12 12:09:54
    0
  • 俄罗斯COSER Alexandra Reil的《巫师3》特莉丝COS保持了战斗民族一贯的高水准,一头艳丽的红发,当然最亮眼的还是COSER妖娆有致的身材。
    2017-08-16 11:08:22
    0
  • 《巫师》成人涂色本将于今年11月发售,这套黑白涂色本有96页,内容全部取材于系列游戏。
    2017-08-02 11:08:33
    0
  • 《巫师3》中有一个非常搞笑的情节,杰洛特、艾斯凯尔和兰伯特三个猎魔人聚在一起喝了个烂醉如泥,最后三个人还偷了叶奈法的衣服起了女装。现在这段场景已经被coser们完美还原了出来。
    2017-07-29 14:07:02
    0
  • Alexandra Tokaryuk从《巫师3》的故事中收集灵感,创作出了他所设想的《巫师3》巨型资料片“欧飞尔之沙”。
    2017-07-20 13:07:38
    0
  • 《巫师3》再推3款新手办,分别是熊套白狼杰洛特、夏妮以及丹德里安。
    2017-07-16 16:07:07
    0