Skip to content

Make treshold the 1 day treshold for maxObjects configurable #500

@lazytesting

Description

@lazytesting

🏗 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)

  • 📱 iOS
  • 🤖 Android

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions