更新缓存的模板

时间:2014-10-06 08:55:09

标签: angularjs caching angularjs-directive browser-cache angular-template

我使用templateUrl,效果很好!

app.directive('myDir', function() {
    return {
        templateUrl: 'partials/directives/template.html'
    };
};

然而......当我对这些模板进行更改时,它不会更新。在开发过程中,这不是一个大问题,因为我知道更新了什么,可以手动清除缓存。

但我无法清除所有用户的缓存。有没有办法做到这一点?就像使用CACHE-CONTROL metatag或类似的东西一样?

2 个答案:

答案 0 :(得分:1)

据我所知,您有两种选择 -

  1. 使用$cacheFactory服务删除旧缓存 获取模板后,Angular会将其缓存在默认的$ templateCache服务

    // Please note that $cacheFactory creates a default key '$http'
    
    var cache = $cacheFactory.get('$http');
    
    // The remove() function removes a key-value pair from the cache, 
    // if it’s found. If it’s not found, then it just returns undefined.
    
    cache.remove(your url);
    
  2. 使用文件版本控制 每次更改时重命名文件 - 即如果您的文件的第一个版本是template-1.0.1.html,则在进行一些代码更改时将其重命名为template-1.0.2.html,依此类推。这样,每次进行一些更改时都会下载新文件。

答案 1 :(得分:0)

快速而肮脏的解决方案是禁用$httpProvider

中的缓存
app.config(function ($httpProvider) {
    $httpProvider.defaults.headers.get = {
        'Cache-Control': 'no-cache'
    };
});

我不推荐这个。但它确实有效。