SPA Angular index.html не обновляет кеш (я использую кеш) - PullRequest
0 голосов
/ 19 мая 2018

Я использую простую структуру, подобную этой в моем приложении SPA: http://mcalthrop.github.io/angular-spa-demo/#/resources (пример tks mcalthrop)

Существует первоначальная загрузка активов (js, css) с перебором кэша (hash) в index.html (заголовок) и после этого загружаются только шаблоны и json (тело) AngularJS.

Проблема в том, что они, то есть функции, обновленные при установке, загружались только тогда, когдапользователь использовал Ctrl + R (полная перезагрузка) или выход из системы.Наши клиенты могут проводить дни с открытой страницей.

Аналогичная проблема, о которой сообщается: Обновление кэшированного Angular SPA

Я использую Grails, Angular 1.6, активный кэш очистки.

1 Ответ

0 голосов
/ 26 октября 2018

Найдена альтернатива "Creative":

Объяснение: В файле ресурсов SPA загрузите уникальное приложение Life Sesson.Но, в моем случае, пользователи регистрировались долгое время, когда хотели получить новые версии ресурсов без нового входа в систему.Итак, что я делаю, когда доступны новые js / css в кэше, я обновляю страницу.Если нет, то продолжайте.

function urlAssetOk(url) {
        var http = new XMLHttpRequest();
        var urlWithoutCache = url + "?t=" + (new Date()).getTime();
        http.open('HEAD', urlWithoutCache, false);
        http.send();
        return http.status == 200;
    }

    function updatedCache() {
        var jsApplicationAsset = document.querySelectorAll('[class="application-asset"][src*=application-]')[0];
        var cssApplicationAsset = document.querySelectorAll('[class="application-asset"][href*=application-]')[0];
        var jsObsolete = jsApplicationAsset && !urlAssetOk(jsApplicationAsset.src) ? true : false;
        var cssObsolete = cssApplicationAsset && !urlAssetOk(jsApplicationAsset.src) ? true : false;

        if (jsObsolete || cssObsolete) {
            window.location.reload(true);
        }
    }

    window.onhashchange = function() {
        updatedCache();
    }
...