如何强制浏览器重新加载 angular 模板文件而不缓存它?
How to force a browser to reload angular template file and not cache it?
加载 javascript 文件时,我可以通过在加载文件时添加一个版本来强制浏览器不使用缓存,例如
<script src="~/angular/myapp/app.js?version=123"></script>
我在我的 angular 应用程序中这样做:
$routeProvider.when("/", {
controller: "userController",
controllerAs: "vm",
templateUrl: "Path/to/Template/Index.html"
});
如何确保我对 Index.html
所做的任何更改都不会被缓存?或者出于某种原因这不是问题?
angular 1.x
您可以对 Index.html
文件执行相同的操作。只需像对 js 文件所做的那样附加一个 "cache buster" 查询字符串。有一些技术可以做到这一点,但一个简单的 Date.now()
时间戳应该可以证明目标
...
$routeProvider.when('/', {
controller: 'userController',
controllerAs: 'vm',
templateUrl: `Path/to/Template/Index.html?t=${Date.now()}`
});
如果您的应用程序变得越来越复杂,并且您希望完全阻止模板缓存,您可以使用一些中间件来实现...
angular.module('preventTemplateCache').factory('preventTemplateCache', function($injector) {
return {
'request': function(config) {
if (config.url.indexOf('views') !== -1) {
config.url = `${config.url}?t=${Date.now()}`
}
return config;
}
}
}).config(function($httpProvider) {
$httpProvider.interceptors.push('preventTemplateCache');
});
以上示例假设您的模板目录为 views
。
最后,正如一条评论所指出的,如果您只是想阻止本地开发的缓存,您可以通过浏览器开发工具切换设置以禁用缓存资源。
加载 javascript 文件时,我可以通过在加载文件时添加一个版本来强制浏览器不使用缓存,例如
<script src="~/angular/myapp/app.js?version=123"></script>
我在我的 angular 应用程序中这样做:
$routeProvider.when("/", {
controller: "userController",
controllerAs: "vm",
templateUrl: "Path/to/Template/Index.html"
});
如何确保我对 Index.html
所做的任何更改都不会被缓存?或者出于某种原因这不是问题?
angular 1.x
您可以对 Index.html
文件执行相同的操作。只需像对 js 文件所做的那样附加一个 "cache buster" 查询字符串。有一些技术可以做到这一点,但一个简单的 Date.now()
时间戳应该可以证明目标
...
$routeProvider.when('/', {
controller: 'userController',
controllerAs: 'vm',
templateUrl: `Path/to/Template/Index.html?t=${Date.now()}`
});
如果您的应用程序变得越来越复杂,并且您希望完全阻止模板缓存,您可以使用一些中间件来实现...
angular.module('preventTemplateCache').factory('preventTemplateCache', function($injector) {
return {
'request': function(config) {
if (config.url.indexOf('views') !== -1) {
config.url = `${config.url}?t=${Date.now()}`
}
return config;
}
}
}).config(function($httpProvider) {
$httpProvider.interceptors.push('preventTemplateCache');
});
以上示例假设您的模板目录为 views
。
最后,正如一条评论所指出的,如果您只是想阻止本地开发的缓存,您可以通过浏览器开发工具切换设置以禁用缓存资源。