HTTPClient теперь кэширует ответы в Angular 7? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть приложение Angular 7 v7.2.10 и rxjs v6.3.3. Я озадачен поведением, которое я наблюдаю с HTTPClient, когда я вижу, что он отслеживает выполненные запросы. Не уверен, что это ново или, как ни странно, из-за побочного эффекта моего кода. По сути, у меня есть сервис, который делает:

    @Injectable()
    export class AvailabilityService {

        constructor(private http: HttpClient) {}

        public getMonthAvailability(year: number, month: number): Promise<IMonthAvailability> {
            console.log('hit');
            return this.http.get<IMonthAvailability>(`${environment.apiBaseUrl}/availability/${year}/${month}`)
                            .toPromise()
                            .then(r => {
                               console.log('response');
                               return r;
                            })
                            .catch((error: Response | any) => {
                                return Promise.reject(error);
                            });
        }
    }

, поэтому я получаю IMonthAvailability с учетом month и year. Этот ответ в настоящее время интегрирован в календарь, и все работает отлично. Данные извлекаются из .NET Core API, который я сейчас определил (хотя я не думаю, что он мне нужен, потому что это не имеет никакого значения) Cache-Control: no-cache, no-store на всякий случай. Заголовки ответа:

Date →Wed, 03 Apr 2019 15:46:57 GMT
Content-Type →application/json; charset=utf-8
Server →Kestrel
Cache-Control →no-store, no-cache
Transfer-Encoding →chunked

Полагаю, все в порядке с настройкой. На самом деле я не видел этого раньше. Итак, что происходит, когда я перемещаю календарный месяц и перехожу к следующему месяцу, я вижу, как работает API, и данные извлекаются. Если я теперь вернусь к предыдущему месяцу, который уже загружен, обещание автоматически разрешается, и данные «как-то уже есть», и API не вызывается. У меня вопрос: из-за скорости вызова Angular отслеживает действительно быстрые вызовы / с небольшой полезной нагрузкой или это что-то совершенно независимое ... Как я уже сказал, я создал другие API и клиенты в Angular и никогда не видел этого .

Любое объяснение / совет действительно приветствуется.

ОБНОВЛЕНИЕ : я добавил следующие операторы console.log к частям метода, которые, по моему мнению, должны быть обработаны, и я вижу, что оба они регистрируются ВСЕ ВРЕМЯ.

...