Angular 4从IE中的缓存中读取

时间:2017-11-23 08:06:38

标签: javascript angular caching

我正在尝试在IE 11上运行我的前端,这个问题似乎只发生在Chrome浏览器中的Chrome浏览器我没有它。无论如何,我不希望每次都清除我的浏览器缓存以从DB读回。我试图添加解释器:

myModule.config(['$httpProvider', function($httpProvider) {
if (!$httpProvider.defaults.headers.common) {
    $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";
}]);

它不起作用。除此之外,我试图遵循注入

 @Injectable()
export class NoCacheHttp extends Http {
constructor(backend: XHRBackend, options: RequestOptions) {
    super(backend, options);
}

get(url: string, options?: RequestOptionsArgs): Observable<Response> {
    //make options object if none.
    if (!options) {
        options = { params: new URLSearchParams() };
    }
    //for each possible params type, append a random number to query to 
 force no browser caching.
    //if string
    if (typeof options.params === 'string') {
        let params = new URLSearchParams(options.params);
        params.set("k", new Date().getTime().toString());
        options.params = params;

    //if URLSearchParams
    } else if (options.params instanceof URLSearchParams) {
        let params = <URLSearchParams>options.params;
        params.set("k", new Date().getTime().toString());

    //if plain object.
    } else {
        let params = options.params;
        params["k"] = new Date().getTime().toString();
    }
    return super.get(url, options);
 }
}

就像我不知道如何添加它或者它可能没用。!!! Prevent IE11 caching GET call in Angular 2 但我不知道如何注册课程或使用它“我昨天知道Angular”

2 个答案:

答案 0 :(得分:1)

当你在较新版本的Angular中使用HttpClient而使用HttpHeaders而不是Headers时,它可以通过以下示例为我工作

let headers = new HttpHeaders({
  'Cache-Control': 'no-cache',
  'Pragma': 'no-cache',
  'Expires': 'Sat, 01 Jan 2000 00:00:00 GMT'
})
return this.http.get('my url', {headers:headers})

答案 1 :(得分:0)

您必须通过设置标头手动禁用缓存。我在IE上遇到了sdamer问题,这段代码解决了它。在每个HTTP后端请求之前设置以下标头:

ng-content