Как отключить кеширование с помощью HttpClient в Angular 6 - PullRequest
0 голосов
/ 09 ноября 2018

Я пишу приложение Angular SPA, которое использует HttpClient для получения значений из моего бэкэнда.

Какой простой способ сказать, что он не кешируется? В первый раз, когда я спрашиваю, он получает значение, а затем отказывается делать последующие запросы.

Спасибо, Gerry

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

HTTPInterceptors - отличный способ изменить HTTP-запросы, возникающие в вашем приложении.Он действует как инъекционная служба, которая может вызываться при возникновении запроса HttpRequest.

Перехватчик HTTP:

import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpHeaders } from '@angular/common/http';

@Injectable()
export class CacheInterceptor implements HttpInterceptor {

  intercept(req: HttpRequest<any>, next: HttpHandler) {
    const httpRequest = req.clone({
      headers: new HttpHeaders({
        'Cache-Control': 'no-cache',
        'Pragma': 'no-cache',
        'Expires': 'Sat, 01 Jan 2000 00:00:00 GMT'
      })
    });

    return next.handle(httpRequest);
  }
}

Использование перехватчика:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';

import { AppComponent } from './app.component';

import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { CacheInterceptor } from './http-interceptors/cache-interceptor';

@NgModule({
  imports:      [ BrowserModule, FormsModule ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ],
  providers: [
    { provide: HTTP_INTERCEPTORS, useClass: CacheInterceptor, multi: true }
  ]
})
export class AppModule { }
0 голосов
/ 09 ноября 2018

Использование мета-тегов HTML, отключить кэширование в браузере: -

<meta http-equiv="cache-control" content="no-cache, must-revalidate, post-check=0, pre-check=0">
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">

или

Добавить headers в http запрос как: -

headers = new Headers({
        'Cache-Control':  'no-cache, no-store, must-revalidate, post- 
                            check=0, pre-check=0',
        'Pragma': 'no-cache',
        'Expires': '0'
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...