如何缓存angularjs partials?

前端之家收集整理的这篇文章主要介绍了如何缓存angularjs partials?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_404_6@ 在 angularjs生产中缓存部分的最简单/最现代的方法是什么?

目前代码如下:

$routeProvider.when('/error',{templateUrl: 'partials/error.html',controller: 'ErrorCtrl'});

其中templateUrl显然是指向单独文件的http路径.在移动设备上,该文件的加载时间是显而易见的,我很乐意只缓存所有内容.

解决方法

答案的主要部分是 $templateCache.摘录:

var myApp = angular.module('myApp',[]);
myApp.run(function($templateCache) {
    $templateCache.put('templateId.html','This is the content of the template');
});

任何html模板都可以移动到$templateCache,我们的应用程序的其余部分将按预期运行(无需其他更改)

本地存储作为缓存

如果我们希望将模板保留在客户端上,我们也可以使用本地存储.这个angular-local-storage扩展将简化很多东西.

所以,让我们将run()调整为

>如果我们在客户端上还没有模板,请观察本地存储
>如果需要,发出加载最新的请求…
>把它放入缓存(本地存储和$templateCache)

调整后的代码

.run([                  'localStorageService','$templateCache','$http',function myAppConfig(localStorageService,$templateCache,$http) {

    // The clearAll() should be called if we need clear the local storage
    // the best is by checking the prevIoUsly stored value,e.g. version constant 
    // localStorageService.clearAll();

    var templateKey = "TheRealPathToTheTemplate.tpl.html";

    // is it already loaded?
    var template = localStorageService.get(templateKey);

    // load the template and cache it 
    if (!template) {
        $http.get(templateKey)
            .then(function(response) {

                // template loaded from the server
                template = response.data;

                localStorageService.add(templateKey,template);
                $templateCache.put(templateKey,template);
            });
    } else {

        // inject the template
        $templateCache.put(templateKey,template);
    }

    }])

所以,通过这种方式,我们可以从本地存储中获利.它充满了来自服务器的“模板”,保存在那里……因此下次不会加载.

注意:非常重要的是注入一些版本密钥/值并检查它.如果本地存储已过时…必须重新加载所有模板.

猜你在找的Angularjs相关文章