prod down: невозможно очистить кэш Minified JS - PullRequest
0 голосов
/ 03 января 2019

Резюме: Мы обновили несколько файлов JS для внешнего интерфейса.Эти изменения включают в себя несколько файлов JS и один файл Minified JS.Эти файлы обслуживаются через сервер Play.Мы передали эти измененные файлы (не минимизированный JS и один файл Minfied JS) на сервер Play.

Проблема: один файл Minified JS не обслуживается в сеансах браузера.

Шаги:

Мы отправили измененный Minfied JS на сервер воспроизведения.

Мы можем получить доступ к измененному уменьшенному файлу JS с помощью команды CURL.Это показывает, что измененный файл Minfied JS доступен на сервере воспроизведения

Однако, когда любой браузер запрашивает файл с сервера воспроизведения, браузер получает старый файл Minified JS вместо измененного файла Minified JS.

Мы знаем, что это не проблема кеша браузера.(пробовал через сеанс инкогнито или из ранее неиспользованного кеша браузера и строки):

Проблема

Новый файл JS minfied доступен на сервере воспроизведения

новый minfied JS-файл доступен с помощью команды CURL - доказательство того, что новый minfied-файл находится на сервере

Однако, когда браузер запрашивает UI;браузер получает старый minfied JS-файл с сервера.

Это явно странно и очень странно.

Techstack

Postgress / Java / Scala / Play> ALB> Cloudfront

Обход CLoudfront не устраняет проблему.Таким образом, проблема не в Cloudfront

  • Обход облачного фронта
  • Команда CURL на сервере Play возвращает правильный файл JS

    1. Нажмите обновленный минимизированный JS для воспроизведениясервер
    2. Запрос интерфейса из любого браузера
    3. См. новый интерфейс

1 Ответ

0 голосов
/ 03 января 2019

Вам необходимо добавить версию в конце ссылки на JavaScript.Например: /yourjs.js?1234.

Обновление:

, если вышеуказанное решение не работает, вам нужно создать хэш содержимого и использовать его в качестве средства защиты кэша.Более подробную информацию о кэш-бастере можно найти здесь: https://curtistimson.co.uk/post/front-end-dev/what-is-cache-busting/

ИМХО, вы должны использовать версию вместо метки времени.Потому что кэширование CSS и JS ускорит загрузку веб-страниц.При добавлении отметки времени ваш пользователь будет вынужден загружать файлы снова и снова.

Используя версию, ваши пользователи будут загружать файлы только при создании новой версии.

Вы можете использовать приведенный ниже код для управления версиями.

<script src="yourscript.js?version=1"></script>
...