@Mileon

Как очистить кэш пользователей в angular app?

И так есть, большое приложение на angular 11
Сборка происходит путем ng build --outputHashing=all
Но это не помогает, у пользователей не обновляется кэш браузера, соответственно, сами понимаете что это значит, при этом такое ощущение, что даже чанки остаются старыми
Статику отдает nginx

Как решить эту проблему?
  • Вопрос задан
  • 767 просмотров
Решения вопроса 1
@Mileon Автор вопроса
В моем случае, оказалось, что проблема была в ServiceWorker и решением стало:
constructor(
    public updates: SwUpdate
  ) {
    if (updates.isEnabled) {
      interval(30 * 60 * 1000).subscribe(() =>
        updates.checkForUpdate().then(() => console.log('Проверка обновлений'))
      );
    }
    this.update();
  }

  update(): void {
    this.updates.available.subscribe((event) => this.promptUser(event));
  }

  promptUser(event: UpdateAvailableEvent): void {
    console.log(
      'Обновление до новой версии: ',
      event.available.hash.substr(0, 6)
    );
    console.log('Устаревшая версия: ', event.current.hash.substr(0, 6));
    this.updates.activateUpdate().then(() => document.location.reload());
  }


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

Более подробно описано здесь:
https://angular.io/guide/service-worker-communications
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы