美文网首页
Angular1.x 缓存问题

Angular1.x 缓存问题

作者: 修朋飞 | 来源:发表于2020-08-30 20:02 被阅读0次

Angular1.x 缓存问题

​ 模板加载后,AngularJS会将它默认缓存到 $templateCache 服务中。

在实际生产中,可以提前将模板缓存到一个定义模板的JavaScript文件中,这

样就不需要通过XHR来加载模板了$templateCache 服务允许 $http 服务缓存经过XHR的模板请求,

这样它们就只会被请求一次。当一个模板被取到了,它的内容就会存储在 $templateCache 中,用模板路径作键。

例如,当获取下面的实例指令时,它会请求 templateUrl 并且把模板的内容放在 $templateCache中:

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

$templateCache 会 把 这 个 模 板 的 内 容 保 持 在$templateCache('views/templates/notification.html')中。

​ 如果已经预先在$templateCache中存放了测试所需的指令文件内容,就可以使用$templateCache来阻止在指令的单元测试中再产生请求。可以使用优秀的 karma-ng-html2js-preprocessor 包来把模板转换成可在测试中使用的Angular模块。利用 $templateCache

​ 在生产中部署应用时,我们都希望应用的加载尽可能快,以及尽可能做出响应。使用XHR加载模板可能会导致Web应用缓慢或者有卡顿的感觉。可以通过将模板包装为JavaScript文件,然后连同应用程序的其他部分一起传输的方式伪造模板缓存加载,而不是通过XHR提取模板。关于如何有效地包装模板的详细信息,请参考 $templateCache 工具: grunt-angular-templates 。默认情况下,Angular无法从本地 $tempalteCache 中找到模板时,会通过XHR提取模板。当XHR请求很慢,或者模板很大时,它可能会对应用的用户体验造成很大的负面影响。

​ 可以通过“伪造” $templateCache 已经被填充的方式来避免这一延迟,这样Angular就不必从远程加载模板。可以在JavaScript中手动实现这个技巧,就像这样:

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

现在,当Angular需要提取名为home.html的模板时,它会在 $templateCahce 中找到它,而无需从服务器提取。

使用$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缓存起来。

相关文章

  • Angular1.x 缓存问题

    Angular1.x 缓存问题 ​ 模板加载后,AngularJS会将它默认缓存到 $template...

  • easyUI datagrid 获取编辑状态下的值

    easyUI 接触的不是很多,因此这篇文章就算记录,以后陆续遇到问题在添加。我的项目是在 angular1.x 中...

  • 高并发与缓存

    本文主要讲述高并发下缓存会出现的问题。 在高并发下,缓存会出现的问题有:缓存一致性、并发问题、穿透问题、缓存的雪崩...

  • Redis第9课:缓存设计与优化

    我们将在这篇讨论以下七个问题。 缓存收益与成本的问题 缓存更新的策略 缓存颗粒的控制 缓存穿透的优化 无底洞问题的...

  • 缓存问题

    一、缓存更新策略 一般情况来说,缓存更新策略有三种: 先删除缓存,后更新数据库 先更新数据库,后更新缓存 先更新数...

  • 缓存问题

    两个要点: 关于Etag值的计算,Tornado是使用SHA1算法。 仅处理Get和Head请求中的Etag,对于...

  • 缓存问题

    1.缓存的产生 在Ajax的get请求中,如果运行在IE内核的浏览器下,其如果向同一个url发送多次请求时,就会产...

  • 缓存问题

    1.缓存穿透:请求访问了缓存中没有的数据,或者缓存宕机,导致请求直接查db。 解决办法:把没有的数据也缓存一分,但...

  • 缓存问题

    强制客户端刷新 location.reload(true) 是强制刷新,无论文档的最后修改日期是什么,它都会绕过缓...

  • 缓存问题

    用了缓存之后,有哪些常见问题? 常见的问题,可列举如下: 写入问题 缓存何时写入?并且写时如何避免并发重复写入? ...

网友评论

      本文标题:Angular1.x 缓存问题

      本文链接:https://www.haomeiwen.com/subject/ksgesktx.html