Baseflow / Baseflow/flutter_cache_manager
Cache does not respect stalePeriod on web
- Linguagem predominante
- Dart
- Estrelas
- 810
- Forks
- 510
- Merge médio
- 30min
- PRs com merge (30d)
- 11
Descrição
## 🐛 Bug Report
When setting a custom `stalePeriod` on web, the cache remains valid and the browser will access data via the cache rather than sending out a fresh network request, even when the Duration specified in `stalePeriod` has expired.
### Expected behaviour
On all platforms, after a custom `stalePeriod` is set, items should be removed from the cache after the specified Duration has expired.
### Reproduction steps
1. Extend `CacheManager` with a `Config(...stalePeriod: Duration(minutes: 1)`
2. Make a request that uses the CacheManager
3. Wait over one minute
4. Make the same request again
Observe that the second request hits the cache, not the web.
### Configuration
**Version:** 3.3.0
**Platform:**
- [✓] :earth_asia: Web
### Cause
By default, the [config for web uses the NonStoringObjectProvider](https://github.com/Baseflow/flutter_cache_manager/blob/3bd49b866d9b5e6ce09d2283f0ef97488be97e1d/flutter_cache_manager/lib/src/config/_config_web.dart#L19). Old cache objects are removed [using their provider's getOldObjects method](https://github.com/Baseflow/flutter_cache_manager/blob/205387b4c7e4faff5152848b68c98d36e989ec01/flutter_cache_manager/lib/src/cache_store.dart#L143). The implementation of this in the NonStoringObjectProvider [never does anything](https://github.com/Baseflow/flutter_cache_manager/blob/3bd49b866d9b5e6ce09d2283f0ef97488be97e1d/flutter_cache_manager/lib/src/storage/cache_info_repositories/non_storing_object_provider.dart#L38).
Ideally, the web config should be update to use a repo that has a working implementation of `getOldObjects`.
Guia de contribuição
Direção de pesquisa
Comece por lib/src/config/_config_web.dart e inspecione como o provedor de armazenamento é selecionado. Em seguida, leia lib/src/storage/cache_info_repositories/non_storing_object_provider.dart e lib/src/cache_store.dart, concentrando-se em getOldObjects e no tratamento de stalePeriod. Reproduza o cenário web de um minuto e confirme que um item expirado é removido, para que a próxima solicitação chegue à rede.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- dart, flutter
- Domínio
- web-dev
- Tipo de issue
- Bug
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Claramente especificada
- Facilidade para iniciantes
- 58/100