Последний ответ Chrome caching ajax несмотря на отсутствие заголовков кэша - PullRequest
0 голосов
/ 25 марта 2020

У меня есть простая форма в модале, которая заполняется запросом ajax (к серверу, на котором работает Django)

Если я добавляю варианты выбора в поле выбора, эти варианты не отображаются для несколько минут на модале. Эта проблема появилась только после обновления до последней версии chrome (80.3987.149).

Я включаю заголовки без кэширования в ответ ajax, например:

    response['Cache-Control'] = 'no-cache, no-store, must-revalidate'
    response['Pragma'] = 'no-cache'
    response['Expires'] = '0'

Но это не имеет значения.

Мой ajax метод вызова выглядит следующим образом:

openAlertModalOnclick(e) {
    e.preventDefault();
    let self = this;
    $.get($(e.target).attr("href"), resp => {
        $("#alertModal").html(resp.html).foundation("open").foundation();
        })
    }).fail(() => {
        this.showErrorToast("Error occurred while loading alerts.")
    })
}

Я на 90% уверен, что это проблема только с последней версией chrome, поскольку я не смог ее воспроизвести пока я не обновлю chrome. Что еще я могу сделать, чтобы chrome прекратил кэшировать форму?

1 Ответ

0 голосов
/ 25 марта 2020

Решением было изменение вызова $ .get на $. ajax и передача в кэш: ложный параметр.

Функция открытия модального режима теперь выглядит следующим образом:

    openForm52AlertModalOnclick(e) {
    e.preventDefault();
    let self = this;

    SpinnerController.showSpinner();

    $.ajax({
        url: $(e.target).attr("href"),
        method: 'GET',
        cache: false,
        success: function (resp) {
            $("#alertModal").html(resp.html).foundation("open").foundation();
        },
        error: function () {
            this.showErrorToast("Error occurred while loading alerts.")
        },

    });
...