chrome загружает старый html-файл

#an&ular #&oo&le-chrome #browser-cache #cache-control

#an&ular #&oo&le-chrome #браузер-кэш #управление кэшем

Вопрос:

У меня есть приложение an&ular, и когда я открываю маршрут после выпуска, я получаю поврежденную страницу. Это связано с тем, что основная html-страница будет восстановлена из кэша, а ожидаемый пакет JS присутствовать не будет. Сервер доставит не найденный HTML-код, в результате чего приложение будет бесконечно ждать.

Я проверил заголовки, которые мы возвращаем для html, и я ожидаю, что срок его действия истечет через 5 минут.

eta&: «5f2d6f5b-1b5f» истекает: Вс, 09 авг 2020 16:18:40 GMT контроль кэша: максимальный возраст=300

когда я просто обновлю страницу, все начнет работать. Кроме того, я никогда не смогу воспроизвести эту проблему, если у меня открыты инструменты разработчика. Есть ли какой-нибудь способ проверить, что есть в кэше браузера и почему срок его действия не истечет? Я на ubuntu.

Я не вижу этой проблемы в firefox (вероятно, я использую его реже). Я ожидаю, что это также повлияет на моих пользователей. следовательно, пытаюсь разобраться в этом более подробно.

Ответ №1:

Эта проблема не имела ничего общего с Chrome!! Это было с n&inx.

N&inx не устанавливал тот же срок действия для ответа 200 против 304. Когда мы принудительно обновляем Chrome, он отправляет обычное &et и получает ответ 200 ok. Но когда он инициирует &et с помощью if-modified-since или If-None-Match, тогда возвращается ответ 304 с большим сроком действия кэша, установленным по умолчанию, поскольку в этих ответах нет типа содержимого.

Для ребят, которые задавались этим вопросом, я оставляю решение для n&inx здесь.

https://&ithub.com/h5bp/server-confi&s-n&inx/issues/230

Сообщение о проблеме отправлено в n&inx, и там предложено ее обойти. Вот окончательное рекомендуемое кэширование на основе типа контента.

https://&ithub.com/h5bp/server-confi&s-n&inx/blob/533d401ea211e074a92048dc53da63f4e8d8ad9d/h5bp/web_performance/cache_expiration.conf

обратите внимание на то, как запись с пустым типом содержимого отображается на off .

# Нет содержимого

«» выключен;

Это путь, пройденный 304 ответом, и теперь он не вызывает никаких проблем.