flutter_cache_manager icon indicating copy to clipboard operation
flutter_cache_manager copied to clipboard

Make treshold the 1 day treshold for maxObjects configurable

Open lazytesting opened this issue 3 months ago • 0 comments

🏗 Enhancement Proposal

When setting maxNrOfCacheObjects to 100 the cache can still grow above that size. This is caused by logic in the CacheObjectProvider in the getObjectsOverCapacity function.

where: '${CacheObject.columnTouched} < ?',
whereArgs: [
        DateTime.now().subtract(const Duration(days: 1)).millisecondsSinceEpoch
      ],

From an this issue #349 I understand the reasoning behind this default value.

Pitch

For app which are not used very intense I think the default makes sense. However for apps which use a lot of images and are used intensively throughout the day this results in a very big local cache. I've got reports of several GB.

I would argue that the there should be a parameter to override this in the Config object. This would be in line with for example the maxObjects and stalePeriod parameters.

Concretely:

  • Add parameter to Config ObjectMinimumRetention (open for better naming)
  • Type Duration
  • Optional, default value 1 day
  • Pass and use this parameter to the CacheObjectProvider
  • Document

I'm happy to do a PR on this as you think this makes sense.

Platforms affected (mark all that apply)

  • [x] :iphone: iOS
  • [x] :robot: Android

lazytesting avatar Sep 24 '25 06:09 lazytesting