[英]Prefetching $templateCache
我的angularjs应用程序基本上按4个步骤加载:
$templateCache
,我们称它为template.html
我想,加载起始页面时应该绕过$templateCache
。 但是现在,我想开始尽快获取template.html
,即,在加载脚本的同时。
我的代码中可能相关的部分看起来像
<script src='//ajax.googleapis.com/.../angular.min.js'></script>
<script src='/my.js'></script>
<link href='/my.css' media='all' rel='stylesheet'/>
在这里, my.js
包含了我所有的脚本,并与angular同时被加载。 是否可以通过相同的方式获取template.html
,以便将其放入浏览器的缓存中?
我尝试了两种预取可能性,但都失败了:
<link href="template.html" rel="prefetch"/>
和
<iframe class=invisible src="template.html"></iframe>
第一个被取消,第二个来不及生效。
由于无法足够快地获取HTML,因此整个脚本指令完全没有意义。
根据runTarm的建议,我最终生成了Javascript。 它所要做的就是
.factory('$templateCache', function($cacheFactory, $http, $injector) {
var cache = $cacheFactory('templates');
cache.put("MY_PAGE_1", "ESCAPED_TEXT_1");
cache.put("MY_PAGE_2", "ESCAPED_TEXT_2");
...
return {
get: function(url) {
var fromCache = cache.get(url);
return fromCache ? fromCache : $http.get(url);
}
};
}
在转义的文本中,您必须遵守1024个字符串的字面长度限制,并转义换行符和双引号。 就这样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.