在分析大型 AngularJS 应用程序时,我开始跟踪 $templateCache。
https://docs.angularjs.org/api/ng/service/ $templateCache
这个物体是什么?它是否存储存储在磁盘上的部分内容或路由中最终渲染的 HTML?
我在我的 Controller 中添加了一些类似这样的代码,以确保它不会保留任何内容:
$scope.$on('$destroy', function cleanup() {
$templateCache.removeAll();
});
编辑:我研究这个问题的原因是单个(不是每个) Controller 正在加载一个大的部分,其中有多个循环,根据用户输入,它可能约为 100 个输入大田<select>
语句和许多自定义指令。客户要求以这种方式进行,我想确保所有这些都在路由过程中得到处理。
为了澄清这个问题:$templateCache 仅存储磁盘上出现的部分,没有存储路由或渲染信息?
最佳答案
默认情况下,加载模板时,Angular 会查找 $templateCache 内部,并在无法在 $templateCache 本地找到模板时通过 XHR 获取模板。 当 XHR 请求很慢或者我们的模板足够大时,它可能会对最终用户的体验产生严重的负面影响。 我们可以通过将模板缓存加载到 JavaScript 文件中并将 JavaScript 文件与应用程序的其余部分一起发送来伪造模板缓存加载,而不是获取模板 XHR。
示例:
angular.module('myApp')
.run(['$templateCache', function($templateCache) {
$templateCache.put('xyz.html', ...);
}]);
因此,除非您非常确定要从 $templateCache 中删除缓存的模板,否则不要这样做。
关于javascript - AngularJS:什么是 $templateCache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25364568/