最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

angularjs 緩存的使用詳解

 更新時(shí)間:2018年03月19日 11:30:17   作者:柴小智  
這篇文章主要介紹了angularjs 緩存的使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

一、什么是緩存

一個(gè)緩存就是一個(gè)組件,它可以透明地存儲(chǔ)數(shù)據(jù),以便未來(lái)可以更快地服務(wù)于請(qǐng)求。

緩存能夠服務(wù)的請(qǐng)求越多,整體系統(tǒng)性能就提升得越多。

二、Angular 中的緩存

2.1 $cacheFactory 簡(jiǎn)介

$cacheFactory 是一個(gè)為所有Angular服務(wù)生成緩存對(duì)象的服務(wù)。在內(nèi)部, $cacheFactory 會(huì)創(chuàng)建一個(gè)默認(rèn)的緩存對(duì)象,即使我們并沒(méi)有顯示地創(chuàng)建。

要?jiǎng)?chuàng)建一個(gè)緩存對(duì)象,可以使用 $cacheFactory 通過(guò)一個(gè)ID創(chuàng)建一個(gè)緩存:

var cache = $cacheFactory('myCache');
這個(gè) $cacheFactory 方法可以接受兩個(gè)參數(shù):

cacheId (字符串):這個(gè) cacheId 就是創(chuàng)建緩存時(shí)的ID名稱(chēng)??梢酝ㄟ^(guò) get() 方法使用緩存名稱(chēng)來(lái)引用它。

capacity :這個(gè)容量描述了在任何給定時(shí)間要使用緩存存儲(chǔ)并保存的緩存鍵值對(duì)的最大數(shù)量。

2.2 緩存對(duì)象

緩存對(duì)象自身有下列這些方法可以用來(lái)與緩存交互。

info() : info() 方法返回緩存對(duì)象的ID、尺寸和選項(xiàng)。

put() : put() 方法允許我們把任意JavaScript對(duì)象值形式的鍵(字符串)放進(jìn)緩存中。cache.put("hello","world");

put() 方法會(huì)返回我們放入緩存中的值。

get() : get() 方法讓我們能夠訪問(wèn)一個(gè)鍵對(duì)應(yīng)的緩存值。如果找到了這個(gè)鍵,它會(huì)返回它的值;如果沒(méi)有找到,它會(huì)返回 undefined 。cache.get("hello");

remove() : remove() 函數(shù)用于在找到一個(gè)鍵值對(duì)的情況下從緩存中移除它。如果沒(méi)有找到,它就會(huì)返回 undefined 。cache.remove("hello");

removeAll() : removeAll() 函數(shù)用于重置緩存,同時(shí)移除所有已緩存的值。

destory() : destory() 方法用于從 $cacheFactory 緩存注冊(cè)表中移除指定緩存的所有引用。

三、$http 中的緩存

Angular的 $http 服務(wù)創(chuàng)建了一個(gè)帶有ID為 $http 的緩存。 要讓 $http 請(qǐng)求使用默認(rèn)的緩存 對(duì)象很簡(jiǎn)單: $http() 方法允許我們給它傳遞一個(gè) cache 參數(shù)。

 3.1 默認(rèn)的 $http 緩存

當(dāng)數(shù)據(jù)不會(huì)經(jīng)常改變時(shí),默認(rèn)的 $http 緩存就特別有用了??梢韵襁@樣設(shè)置它:

$http({
  method: 'GET',
  url: '/api/users.json',
  cache: true  //設(shè)置為true只是用來(lái)使用$http默認(rèn)的緩存機(jī)制
});

現(xiàn)在,通過(guò) $http 到URL /api/user.json 的每個(gè)請(qǐng)求將會(huì)存儲(chǔ)到默認(rèn)的 $http 緩存中。 這個(gè)$http 緩存中的請(qǐng)求鍵就是完整的URL路徑。

如果需要,也可以操作這個(gè)默認(rèn)的 $http 緩存(比如,如果我們發(fā)起的另外一個(gè)沒(méi)有緩存的請(qǐng)求提醒我們發(fā)生了增量變化,我們就可以在默認(rèn)的 $http 請(qǐng)求中清除這個(gè)請(qǐng)求)。

為了引用 $http 的默認(rèn)請(qǐng)求,只需通過(guò) $cacheFactory() 使用ID來(lái)獲取到該緩存:

var cache = $cacheFactory('$http');

對(duì)于所掌控的緩存,我們可以在需要時(shí)進(jìn)行所有的正常操作,比如檢索已緩存的響應(yīng),從緩存中清除條目,或者消除所有緩存的引用。

// 獲取上一次請(qǐng)求的緩存
var usersCache = cache.get('http://example.com/api.users.json');
// 刪除上一次請(qǐng)求的緩存入口
cache.remove('http://example.com/api.users.json');
// 重新開(kāi)始并移除全部緩存
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);  //往緩存中放入數(shù)據(jù)
          console.log(data);
        }
      );
    }

3.2 自定義緩存

有時(shí)候能夠?qū)彺嬗懈嗟目刂埔约搬槍?duì)緩存的表現(xiàn)創(chuàng)建規(guī)則,這就需要?jiǎng)?chuàng)建一個(gè)新的緩存來(lái)使用 $http 請(qǐng)求。

通過(guò)自定義的緩存來(lái)讓 $http 請(qǐng)求發(fā)起請(qǐng)求很簡(jiǎn)單??梢圆捎脗鬟f緩存實(shí)例的方式,而不必傳遞一個(gè)布爾參數(shù) true 給請(qǐng)求。

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

一個(gè)小demo:定義一個(gè)緩存服務(wù),依賴(lài)注入到你要用的控制器中,直接使用

define([
  'angularModule'
],function(app){
  app.factory('myCache', ['$cacheFactory', function($cacheFactory){
    return $cacheFactory('myCache'); //自定義一個(gè)緩存服務(wù)
  }])
});
    //自定義緩存,有緩存就從緩存里取,否則就發(fā)送請(qǐng)求
    if(myCache.get('cacheData')){
      console.log(myCache.get('cacheData'));
    }else{
      helloService.play(myCache).then(
        function (data) {
          myCache.put("cacheData", data);
          console.log(data);
        }
      );
    }
      cache:只是為了可以使用默認(rèn)$http的緩存機(jī)制
      play : function (myCache) {
        return httpRequestService.request({
          method : 'get',
          url : 'http://localhost:8080/hello/play',
          cache : myCache
        })
      }

現(xiàn)在, $http 將會(huì)使用自定義的緩存而非默認(rèn)緩存。

四、為 $http 設(shè)置默認(rèn)緩存

每次我們想要發(fā)起一個(gè) $http 請(qǐng)求時(shí)都要給它傳遞一個(gè)緩存實(shí)例并不方便,特別是對(duì)每個(gè)請(qǐng)求使用同一緩存的時(shí)候。

其實(shí)可以在模塊的 .config() 方法中通過(guò) $httpProvider 設(shè)置 $http 默認(rèn)使用的緩存對(duì)象。

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

這個(gè) $http 服務(wù)不再使用它為我們創(chuàng)建的默認(rèn)緩存;它會(huì)使用我們自定義的緩存,實(shí)際上這就是一個(gè)近期緩存最久未使用算法① (Least Recently Used,LRU)。

LRU緩存根據(jù)緩存容量只保留最新的緩存數(shù)目。也就是說(shuō),我們的緩存容量為20,因此會(huì)緩存前20個(gè)請(qǐng)求,但是進(jìn)入第21個(gè)請(qǐng)求時(shí),最近最少使用的請(qǐng)求條目就會(huì)從緩存中被刪除。這個(gè)緩存自身會(huì)負(fù)責(zé)具體哪些要維護(hù),哪些要移除。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • angularjs的單選框+ng-repeat的實(shí)現(xiàn)方法

    angularjs的單選框+ng-repeat的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇angularjs的單選框+ng-repeat的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Angular CLI發(fā)布路徑的配置項(xiàng)淺析

    Angular CLI發(fā)布路徑的配置項(xiàng)淺析

    這篇文章主要給大家介紹了關(guān)于Angular CLI發(fā)布路徑的配置項(xiàng)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • AngularJS HTML編譯器介紹

    AngularJS HTML編譯器介紹

    這篇文章主要介紹了AngularJS HTML編譯器介紹,AngularJS的HTML編譯器能讓瀏覽器識(shí)別新的HTML語(yǔ)法。它能讓你將行為關(guān)聯(lián)到HTML元素或者屬性上,甚至能讓你創(chuàng)造具有自定義行為的新元素,需要的朋友可以參考下
    2014-12-12
  • Angular?Component屬性綁定target和attr.target的區(qū)別分析

    Angular?Component屬性綁定target和attr.target的區(qū)別分析

    這篇文章主要介紹了Angular?Component屬性綁定target和attr.target的區(qū)別分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 整理AngularJS框架使用過(guò)程當(dāng)中的一些性能優(yōu)化要點(diǎn)

    整理AngularJS框架使用過(guò)程當(dāng)中的一些性能優(yōu)化要點(diǎn)

    這篇文章主要介紹了AngularJS框架使用過(guò)程當(dāng)中的一些性能優(yōu)化要點(diǎn),Angular通常被用來(lái)制作大型單頁(yè)應(yīng)用,因而性能問(wèn)題也是必須考慮的因素,需要的朋友可以參考下
    2016-03-03
  • AngularJS下對(duì)數(shù)組的對(duì)比分析

    AngularJS下對(duì)數(shù)組的對(duì)比分析

    下面小編就為大家?guī)?lái)一篇AngularJS下對(duì)數(shù)組的對(duì)比分析。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • Angularjs自定義指令實(shí)現(xiàn)分頁(yè)插件(DEMO)

    Angularjs自定義指令實(shí)現(xiàn)分頁(yè)插件(DEMO)

    由于最近的一個(gè)項(xiàng)目使用的是angularjs1.0的版本,涉及到分頁(yè)查詢(xún)數(shù)據(jù)的功能,后來(lái)自己就用自定義指令實(shí)現(xiàn)了該功能,下面小編把實(shí)例demo分享到腳本之家平臺(tái),需要的朋友參考下
    2017-09-09
  • AngularJS自定義服務(wù)與fliter的混合使用

    AngularJS自定義服務(wù)與fliter的混合使用

    這篇文章主要介紹了AngularJS自定義服務(wù)與fliter的混合使用的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • Angular學(xué)習(xí)教程之RouterLink花式跳轉(zhuǎn)

    Angular學(xué)習(xí)教程之RouterLink花式跳轉(zhuǎn)

    這篇文章主要給大家介紹了關(guān)于Angular學(xué)習(xí)教程之RouterLink花式跳轉(zhuǎn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • 詳解Angularjs 自定義指令中的數(shù)據(jù)綁定

    詳解Angularjs 自定義指令中的數(shù)據(jù)綁定

    這篇文章主要介紹了Angularjs 自定義指令中的數(shù)據(jù)綁定,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07

最新評(píng)論

定日县| 古丈县| 阜城县| 青川县| 城固县| 海南省| 津南区| 大同市| 同心县| 阳曲县| 江安县| 永定县| 万荣县| 日喀则市| 琼结县| 犍为县| 瑞安市| 阳新县| 英山县| 信宜市| 六盘水市| 都江堰市| 普兰店市| 三原县| 铜山县| 聂拉木县| 通榆县| 楚雄市| 垣曲县| 宣城市| 仲巴县| 外汇| 济南市| 江川县| 襄垣县| 南康市| 岚皋县| 河间市| 罗江县| 昂仁县| 陇南市|