Почему существует задержка загрузки для каждой навигации по страницам бритвы в приложении Blazor Webassembly?

У меня есть приложение Blazor Webassembly PWA с двумя страницами бритвы: Index.razor и History.razor. Каждый раз, когда пользователь перемещается между двумя страницами, происходит небольшая задержка, когда на странице отображается HTML-код Loading ... до того, как приложение загрузит фактическую страницу бритвы.

Я так понимаю, когда вы впервые открываете приложение в браузере, ему необходимо скачать все необходимые сборки и загрузить их. Но как только они перешли на сайт, почему каждая навигация требует, чтобы отображался HTML-код Loading ...? Часто это короткий промежуток времени (у меня все кэширует мой сервис-воркер), но меня как пользователя это отвлекает.

Мне не удалось найти что-либо в Интернете, объясняющее это. Я уверен, что мне, вероятно, не хватает того, как это на самом деле работает, или, может быть, я неправильно настроил свою страницу / навигацию? Любая информация по этому поводу будет принята с благодарностью. Как загрузка страницы работает с каждой навигацией? Есть ли способ предотвратить это?

ОБНОВЛЕНИЕ: используя шаблон Blazor WebAssembly в Visual Studio в качестве примера и следуя комментарию мистера Магу, я смог выяснить, что причина появления Loading ... заключается в том, что я выполняю полную перезагрузку страниц. Это подводит меня к последнему вопросу. Если пользователь в настоящее время находится на странице указателя и щелкает, чтобы перейти к указателю, есть ли способ очистить все модели на этой странице без принудительного обновления?


person Migs    schedule 14.08.2020    source источник
comment
Как вы перемещаетесь между страницами - потому что сообщение Загрузка ... обычно отображается только при полной загрузке страницы   -  person Mister Magoo    schedule 15.08.2020
comment
Загружаете ли вы данные в жизненном цикле Page OnInitialization, если это так, убедитесь, что вы делаете это асинхронно, чтобы страница не блокировалась во время выборки данных.   -  person Mark3308    schedule 15.08.2020
comment
@MisterMagoo Вы правы, вот и все. Я делал полную перезагрузку страницы. Я смог изменить свою навигацию между индексом и историей, чтобы не перезагружать страницу, и это работает. Однако, если я сейчас нахожусь на странице указателя и хочу, чтобы модели, используемые на этой странице, были повторно инициализированы, когда я нажимаю пункт меню навигации указателя, есть ли способ сделать это без полного обновления страницы?   -  person Migs    schedule 17.08.2020
comment
Вам нужно убедиться, что вы не цепляетесь за какие-либо ссылки на модели, тогда каждая страница должна быть удалена, когда вы ее покидаете.   -  person Mister Magoo    schedule 17.08.2020
comment
Только что увидел ваш обновленный вопрос ... это сложнее, и я на мобильном телефоне. Если никто не поможет, я вернусь к вам позже   -  person Mister Magoo    schedule 17.08.2020


Ответы (1)


Есть много стратегий кеширования в сервис-воркере, которые вы можете настроить в зависимости от ваших потребностей.

https://developers.google.com/web/tools/workbox/modules/workbox-strategies

Думаю, вам подходит стратегия Cache First

person soroush    schedule 16.08.2020