Angular1.x 緩存問題

Angular1.x 緩存問題

? 模板加載后,AngularJS會(huì)將它默認(rèn)緩存到 $templateCache 服務(wù)中柏腻。

在實(shí)際生產(chǎn)中泊业,可以提前將模板緩存到一個(gè)定義模板的JavaScript文件中逗扒,這

樣就不需要通過(guò)XHR來(lái)加載模板了$templateCache 服務(wù)允許 $http 服務(wù)緩存經(jīng)過(guò)XHR的模板請(qǐng)求寥院,

這樣它們就只會(huì)被請(qǐng)求一次。當(dāng)一個(gè)模板被取到了鼠证,它的內(nèi)容就會(huì)存儲(chǔ)在 $templateCache 中峡竣,用模板路徑作鍵。

例如量九,當(dāng)獲取下面的實(shí)例指令時(shí)适掰,它會(huì)請(qǐng)求 templateUrl 并且把模板的內(nèi)容放在 $templateCache中:

angular.module('myApp').directive('notification', function($timeout) {
    return {
        restrict: 'A',
        scope: { ngModel: '=' },
        templateUrl: 'views/templates/notification.html',
    }
});

$templateCache 會(huì) 把 這 個(gè) 模 板 的 內(nèi) 容 保 持 在$templateCache('views/templates/notification.html')中。

? 如果已經(jīng)預(yù)先在$templateCache中存放了測(cè)試所需的指令文件內(nèi)容,就可以使用$templateCache來(lái)阻止在指令的單元測(cè)試中再產(chǎn)生請(qǐng)求攻谁≈晌椋可以使用優(yōu)秀的 karma-ng-html2js-preprocessor 包來(lái)把模板轉(zhuǎn)換成可在測(cè)試中使用的Angular模塊。利用 $templateCache

? 在生產(chǎn)中部署應(yīng)用時(shí)戚宦,我們都希望應(yīng)用的加載盡可能快个曙,以及盡可能做出響應(yīng)。使用XHR加載模板可能會(huì)導(dǎo)致Web應(yīng)用緩慢或者有卡頓的感覺受楼】寻幔可以通過(guò)將模板包裝為JavaScript文件,然后連同應(yīng)用程序的其他部分一起傳輸?shù)姆绞絺卧炷0寰彺婕虞d艳汽,而不是通過(guò)XHR提取模板猴贰。關(guān)于如何有效地包裝模板的詳細(xì)信息,請(qǐng)參考 $templateCache 工具: grunt-angular-templates 河狐。默認(rèn)情況下米绕,Angular無(wú)法從本地 $tempalteCache 中找到模板時(shí),會(huì)通過(guò)XHR提取模板馋艺。當(dāng)XHR請(qǐng)求很慢栅干,或者模板很大時(shí),它可能會(huì)對(duì)應(yīng)用的用戶體驗(yàn)造成很大的負(fù)面影響捐祠。

? 可以通過(guò)“偽造” $templateCache 已經(jīng)被填充的方式來(lái)避免這一延遲碱鳞,這樣Angular就不必從遠(yuǎn)程加載模板□庵可以在JavaScript中手動(dòng)實(shí)現(xiàn)這個(gè)技巧窿给,就像這樣:

angular.module('myApp',[])
    .run(function($templateCache) {
        $templateCache.put('home.html', 'This is the home template');
});

現(xiàn)在,當(dāng)Angular需要提取名為home.html的模板時(shí)率拒,它會(huì)在 $templateCahce 中找到它崩泡,而無(wú)需從服務(wù)器提取。

使用$templateCache清除緩存

方法一

// 禁止模板緩存  
app.run(function($rootScope, $templateCache) {  
    $rootScope.$on('$routeChangeStart', function(event, next, current) {  
        if (typeof(current) !== 'undefined'){  
            $templateCache.remove(current.templateUrl);  
        }  
    });  
}); 

在配置 路由地址后俏橘,即在app.config之后添加這段代碼允华,可禁止AngularJs將templateUrl緩存起來(lái)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末寥掐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子磷蜀,更是在濱河造成了極大的恐慌召耘,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褐隆,死亡現(xiàn)場(chǎng)離奇詭異污它,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門衫贬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)德澈,“玉大人,你說(shuō)我怎么就攤上這事固惯“鹪欤” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵葬毫,是天一觀的道長(zhǎng)镇辉。 經(jīng)常有香客問我,道長(zhǎng)贴捡,這世上最難降的妖魔是什么忽肛? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮烂斋,結(jié)果婚禮上屹逛,老公的妹妹穿的比我還像新娘。我一直安慰自己汛骂,他們只是感情好煎源,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著香缺,像睡著了一般手销。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上图张,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天锋拖,我揣著相機(jī)與錄音,去河邊找鬼祸轮。 笑死兽埃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的适袜。 我是一名探鬼主播柄错,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼苦酱!你這毒婦竟也來(lái)了售貌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤疫萤,失蹤者是張志新(化名)和其女友劉穎颂跨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扯饶,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡恒削,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年池颈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钓丰。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡躯砰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出携丁,到底是詐尸還是另有隱情琢歇,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布则北,位于F島的核電站矿微,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏尚揣。R本人自食惡果不足惜涌矢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望快骗。 院中可真熱鬧娜庇,春花似錦、人聲如沸方篮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)藕溅。三九已至匕得,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間巾表,已是汗流浹背汁掠。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留集币,地道東北人考阱。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鞠苟,于是被迫代替她去往敵國(guó)和親乞榨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容