Угловой 8 и несоответствие хэша работника службы

#angular #progressive-web-apps #angular-service-worker

Вопрос:

У меня есть приложение Angular 8, развернутое на сервере с включенным/зарегистрированным работником службы. Проблема, с которой мы, похоже, сталкиваемся, заключается в том, что сайт случайным образом загружает более старую версию вместо последней версии сайта. Я предположил, что это из-за работника службы, поэтому, когда я перехожу в /ngsw/состояние, я получаю следующие ошибки при отладке:

Отладочная информация NGSW:

 Driver state: EXISTING_CLIENTS_ONLY (Degraded due to failed initialization: Hash mismatch (cacheBustedFetchFromNetwork): https://mysite/index.html: expected 3103c76d8444cfb504f58967dfb578826e29a778, got f5405776b6b8852db45bf2e118999dffc33ddaea (after cache busting) Error: Hash mismatch (cacheBustedFetchFromNetwork): https://mysite/index.html: expected 3103c76d8444cfb504f58967dfb578826e29a778, got f5405776b6b8852db45bf2e118999dffc33ddaea (after cache busting) at PrefetchAssetGroup.<anonymous> (https://mysite/ngsw-worker.js:699:35) at Generator.next (<anonymous>)at fulfilled (https://mysite/ngsw-worker.js:320:62)) Latest manifest hash: f2dce0f16ab8d88dc3d3701ffabc1475507649be Last update check: 1m52s425u

=== Version f2dce0f16ab8d88dc3d3701ffabc1475507649be ===

Clients: 0fc1bc95-193d-4a3a-9953-6df0bccc7b6c

=== Idle Task Queue ===
Last update tick: 1m52s327u
Last update run: 1m47s326u
Task queue:

Debug log:

[1m59s831u] TypeError(Failed to fetch, TypeError: Failed to fetch) Driver.fetch(https://connect.facebook.net/en_US/fbevents.js) [1m59s147u] TypeError(Failed to fetch, TypeError: Failed to fetch) Driver.fetch(https://stats.g.doubleclick.net/j/collect?t=dcamp;aip=1amp;_r=3amp;v=1amp;_v=j89amp;tid=UA-151661671-2amp;cid=1149317656.1606203988amp;jid=704609344amp;gjid=982880217amp;_gid=688801729.1617694502amp;_u=QACAAEAAAAAAAC~amp;z=1082920103) [1m52s575u] Error(Hash mismatch (cacheBustedFetchFromNetwork): https://mysite/index.html: expected 3103c76d8444cfb504f58967dfb578826e29a778, got eee6f2cd04ab4f02dbfdaa3e424007927721b6cb (after cache busting), Error: Hash mismatch (cacheBustedFetchFromNetwork): https://mysite/index.html: expected 3103c76d8444cfb504f58967dfb578826e29a778, got eee6f2cd04ab4f02dbfdaa3e424007927721b6cb (after cache busting) at PrefetchAssetGroup.<anonymous> (https://mysite/ngsw-worker.js:699:35) at Generator.next (<anonymous>) at fulfilled (https://mysite/ngsw-worker.js:320:62)) Error occurred while updating to manifest d5b4ea310e6ff5fbb7a547834e701efb6d6dcbf7 [1m52s327u] Error(Hash mismatch (cacheBustedFetchFromNetwork): https://mysite/index.html: expected 3103c76d8444cfb504f58967dfb578826e29a778, got f5405776b6b8852db45bf2e118999dffc33ddaea (after cache busting), Error: Hash mismatch (cacheBustedFetchFromNetwork): https://mysite/index.html: expected 3103c76d8444cfb504f58967dfb578826e29a778, got f5405776b6b8852db45bf2e118999dffc33ddaea (after cache busting) at PrefetchAssetGroup.<anonymous> (https://mysite/ngsw-worker.js:699:35) at Generator.next (<anonymous>) at fulfilled (https://mysite/ngsw-worker.js:320:62)) Error occurred while updating to manifest d5b4ea310e6ff5fbb7a547834e701efb6d6dcbf7 [1m52s327u] TypeError(Failed to fetch, TypeError: Failed to fetch) Driver.fetch(https://mysite/) [1m47s325u] TypeError(Failed to fetch, TypeError: Failed to fetch) Driver.fetch(https://mysite/ngsw.json?ngsw-cache-bust=0.564237218729041) [1m47s325u] Check for update aborted. (Client or server offline.)
 

Когда я проверю index.html файл на сервере я вижу, что нет никакой разницы (дополнительная строка добавлена после развертывания или любых других изменений) в том, что создается после сборки ng. Я также проверил хэш файла с сервера, и он показывает правильный хэш, который равен: 3103c76d8444cfb504f58967dfb578826e29a778, поэтому я не уверен, как он получает совершенно другой хэш..

Единственная разница, которую я вижу, заключается в том, что, когда я нахожусь на сайте и захожу в инструменты разработчика, index.html обслуживаемый файл содержит несколько дополнительных строк(я думаю, что это исходит от нашего агента js мониторинга), а затем то, что находится на самом сервере. Не уверен, что это может быть причиной?

Любые указания о том, где/что может быть причиной этого, будут высоко оценены