我有一个角度应用程序,它对服务器进行HTTP GET调用。它适用于Chrome& Firefox浏览器。但是,我发现IE缓存了GET响应,在我执行POST后,我需要调用相同的GET请求并获取新的更新响应,但IE会缓存它。我想禁用IE的缓存。 我尝试使用
'If-None-Match': '*'
我的GET调用请求标头,但随后禁用所有内容的缓存。有没有办法只为IE有条件地做这件事?或者还有其他方法可以禁用它吗?
答案 0 :(得分:4)
HTML
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="Sat, 01 Dec 2001 00:00:00 GMT">
OR
JS
if (!$httpProvider.defaults.headers.get) {
$httpProvider.defaults.headers.common = {};
}
$httpProvider.defaults.headers.common["Cache-Control"] = "no-cache";
$httpProvider.defaults.headers.common.Pragma = "no-cache";
$httpProvider.defaults.headers.common["If-Modified-Since"] = "0";
答案 1 :(得分:2)
使用上述信息,我能够在控制器内部进行一次性请求,而不是更改全局默认值:
var configOptions = {
headers: {
common: {
"Cache-Control": "no-cache",
"If-Modified-Since": "0",
"Pragma": "no-cache"
}
}
};
$http.get("path/to/file.json", configOptions)
.then(function (response){
//do stuff
});
答案 2 :(得分:1)
$ http。没有响应代码200或304.它只使用本地缓存。
尝试将标头添加到$ httpProvider。
angular.module(ApplicationConfiguration.applicationModuleName)
.config(['$httpProvider', function($httpProvider) {
//initialize get if not there
if (!$httpProvider.defaults.headers.get) {
$httpProvider.defaults.headers.get = {};
}
//disable IE ajax request caching
$httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT';
$httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
$httpProvider.defaults.headers.get['Pragma'] = 'no-cache';
}]);
答案 3 :(得分:0)
我知道这是一个旧线程。 只是说我刚刚对其进行了测试,而IE11并未观察到任何可讨论的标头。
由于IE仅负责确定url是否被缓存,因此我只是在查询字符串中添加了一个日期,例如:
$http.get("https://myURLWithoutParameters"?t=" + new Date().getTime())
.then(function (response) {
// Handle response
}, function (response) {
// Error handling
});