Baseflow / flutter_cache_manager

Generic cache manager for flutter
https://baseflow.com
MIT License
749 stars 436 forks source link

Proposal to support all platforms (including web) while emulating browser caching behavior #462

Open rodydavis opened 1 month ago

rodydavis commented 1 month ago

🏗 Enhancement Proposal

I recently was able to support all native platforms and web with an emulation of how the browser works with saving, revalidating and evicting cache.

https://github.com/rodydavis/http_get_cache

The goal is to support the same way the browser does caching:

Pitch

Platforms affected (mark all that apply)

renefloor commented 1 month ago

Ah, the fetch API is something I've been looking for for years, but didn't know where to look. The default web caching works fine with HttpRenderer, but not with CanvasKit, which is now the default anyway.

The other platforms are already supported using a json file instead of sqflite, but having everything on 1 system makes sense. Drift looks like a good tool to use instead of json files, I'll take a look at that.

We do need a migration path for existing users, so their sqflite file is moved over to drift, but we can make that work. I'd say that if we go for a bigger rewrite we should also directly look at testing tools to have an easy way to return mock files or at least mock data.

rodydavis commented 1 month ago

It should be a seamless migration since it is still SQLite and we can match the SQL Schema!

Most people wouldn't even know it switched (except for the addition of platforms) 😎.

I made it so you could provide a custom store provider which could also include the JSON file option or in memory.

jimmyff commented 1 month ago

+1. This would be great!

Web support for a flutter package at this point is kinda essential