预取$ templateCache

时间:2014-08-05 03:30:53

标签: javascript html angularjs caching

我的angularjs应用程序基本上分为4个步骤:

  • 主要HTML
  • 所有脚本和CSS文件
  • $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包含我的所有脚本,并在与角度同时加载。是否允许我以相同的方式获取template.html,以便将其放入浏览器的缓存中?

更新

我尝试了两种预取可能性,都失败了:

<link href="template.html" rel="prefetch"/>

<iframe class=invisible src="template.html"></iframe>

第一个被取消,第二个来得太晚,无效。

1 个答案:

答案 0 :(得分:0)

由于HTML无法尽快获取,整个script directive完全没有意义。

根据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字符串文字长度限制并转义换行符和双引号。就是这样。