Я пытаюсь реализовать различные стратегии кеширования с помощью ServiceWorker. Для следующих стратегий совершенно ясен способ реализации:
- Сначала кеш
- Только кеш
- Сеть в первую очередь
- Только сеть
Например, пытаясь реализовать стратегию «сначала кэш», в ловушке выборки работника службы я сначала запрашиваю у CacheStorage (или любого другого) запрошенный URL-адрес, а затем, если он существует, respondWith
, а если не respondWith
, результат сетевой запрос.
Но для стратегии устаревания при повторной валидации согласно это определение рабочего стола, у меня есть следующие вопросы:
- Сначала о самом механизме. Означает ли stale-while-revalidate, что использовать кеш до тех пор, пока сеть не ответит, а затем использовать сетевые данные или просто использовать сетевой ответ для обновления данных кеша в следующий раз?
- Теперь, если сеть кэшируется в следующий раз, какие сценарии содержат реальный вариант использования этого?
- И если сетевой ответ должен быть заменен немедленно в приложении, то как это можно сделать в сервис-воркере? Потому что ловушка будет разрешена с кэшированными данными, а затем сетевые данные не могут быть разрешены (с
respondWith
).