Why don't app developers provide an option to disable caching or a self-cleaning cache feature (like in the Fedilab app)?

Sticker@lemy.nl to No Stupid Questions@lemmy.world – 18 points –

Most applications clog up the cache space on your device's memory. You have to delete the cache manually which is not convenient. Fedilab is one of the few applications that has a self-cleaning cache function when exiting the application. Why don't many other apps have a feature to disable caching or self-clear the cache?

8

Caches by design should be self cleaning

It's possible. In the YouTube application, this is really true, but in many others the cache is not deleted by itself.

Interesting, I would guess most developers trust the caching mechanisms they are using will perform well long term, and don't consider that a user would want more control over the cache. Caching is inherently a performance feature, so it's probably seen as essential to user experience rather than an option

From the QA perspective, I think most developers assume the cache mechanism will keep working the way it does on their device in their short development cycle, and don’t really consider whether it will eventually break, when applied to millions of different configurations for an extended time, with differing usage behaviors

Caches are critical for performance, but a cache with a bad expiration policy is another name for a memory leak.

It’s easier to add caching than it is to design an expiration policy.

A lot of caching mechanisms are not based on time but size. In other words, they have some set limit of space they can take up on your device. Once that limit is hit, they start evicting older cached data. This means the cache will never be cleared but it also means it shouldn't grow unbounded.

If an app you've installed is "caching" and it has no eviction policy and can grow unbounded then that is a pretty big bug.

Most things like this come down to resources. You have a finite amount of development resources and this is likely way down the list of features. Especially as there's already a button to do it manually.

All features have to be planned, designed, implemented, tested and released. None of those steps are free.

Chances are the development resources are being spent elsewhere on more important features.