我一直在浏览器缓存我的部分模板时遇到问题,所以我添加了一个请求拦截器,在我的url末尾添加一个参数来尝试修复它:
$httpProvider.interceptors.push(function() {
return {
request: function(config){
if(config.url.indexOf('.tpl.html') > -1 || config.url.indexOf('.css') > -1){
var separator = config.url.indexOf('?') === -1 ? '?' : '&';
config.url = config.url + separator + 'lrvc=' + LR_VERSION;
}
return config;
}
};
});
基本上它只是将“lrvc = VERSION”添加到url的末尾。我在$ templateCache中使用的唯一模板来自以这种方式设置的第三方模块/指令。不幸的是,当我试图从$ templateCache中提取模板时,我遇到404错误;我猜是因为缓存试图拉出确切的字符串,这与那里的url参数不匹配。
获取https://my.local.domain/popover/popover.tpl.html?lrvc=2.3.2 404(未找到)
有没有办法让$ templateCache将其视为普通网址?或者我必须以不同的方式处理这些网址吗?
答案 0 :(得分:2)
您只需添加if (!$templateCache.get(config.url))
支票即可。
P.S。对于真实的项目,迟早你会使用一些构建工具来构建你的js项目。您可以使用该工具进行缓存清除。 (即grunt中的grunt-cache-bust)