Baseflow / Baseflow/flutter_cache_manager

Cache does not respect stalePeriod on web

Offen
#393 0 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Dart
Sterne
809
Forks
510
Ø Merge
6 Min.
Gemergte PRs (30 T.)
1

Beschreibung

## 🐛 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`.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit lib/src/config/_config_web.dart und untersuche, wie der Storage-Provider ausgewählt wird. Lies anschließend lib/src/storage/cache_info_repositories/non_storing_object_provider.dart und lib/src/cache_store.dart und konzentriere dich dabei auf getOldObjects und die Handhabung von stalePeriod. Reproduziere das Web-Szenario mit einer Minute und bestätige, dass ein abgelaufenes Element entfernt wird, sodass die nächste Anfrage das Netzwerk erreicht.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
dart, flutter
Bereich
web-dev
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
58/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.