Как отложить повторную проверку вызова для рабочей среды StaleWhileRevalidate - PullRequest
0 голосов
/ 22 января 2019

Мы используем рабочий ящик для реализации ServiceWorker для нашего веб-приложения. В настоящее время мы используем workbox.strategies.staleWhileRevalidate для маршрута домашней страницы.

Шаблон использования сети для нашего приложения: домашняя страница, ресурсы Javascript, вызовы API (в этом порядке). Работник Службы отвечал на домашнюю страницу устаревшими данными, а ресурсы Javascript и данные API передавались по сети.

Мы наблюдаем, что повторный вызов домашней страницы запускается сразу после того, как запрос был обработан из кэша. Так что это не поможет в снижении конкуренции за сетевой ресурс. Есть ли способ отложить повторный вызов для запроса, который использует стратегию staleWhileRevalidate? Цель состоит в том, чтобы уменьшить конкуренцию в сети до завершения загрузки страницы.

1 Ответ

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

Нет способа отложить повторную валидацию. Теоретически, мы могли бы добавить в вызов обернутый в Promise setTimeout() с небольшим интервалом и обязательно включить его в event.waitUntil(), чтобы предотвратить прекращение работы работника сервиса, но, честно говоря, это не предложить какие-либо гарантии, что не будет разногласий - он просто вытеснил разногласия на небольшой промежуток времени.

Я думаю, что в будущем более разумным будет использование Приоритетных подсказок и явная пометка запроса на повторную проверку как имеющего importance: 'low'. Я добавил этот сценарий использования к этой проблеме отслеживанию использования Приоритетом подсказок приоритета в целом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...