Giter Site home page Giter Site logo

Comments (4)

onevcat avatar onevcat commented on July 22, 2024

The current behavior is intentionally designed to check and remove cache files that exceed the size limit only when the app enters the background.

This approach prevents performance issues that could arise from checking the file size every time a new image is cached, which could significantly impact performance.

If needed, you can manually invoke the removeSizeExceededValues method on the disk cache at any time to remove files that exceed the specified size limit.

from kingfisher.

hotngui avatar hotngui commented on July 22, 2024

Yes, I understand the current behavior was intentional and that it's not practical to check each time. I was thinking more around the idea of call removeSizeExceededValues when you did receive an error on attempting to write to the disk cache or something.

I was not able to find a central location where I could attempt to catch the error myself; or a closure I could register to be called only when that error got thrown. Perhaps I missed something in the code?

I work on several apps that can be heavy on images in long user sessions, so having the cache grow with limits during a single session can be an issue.

from kingfisher.

onevcat avatar onevcat commented on July 22, 2024

Currently, there actually is an error defined in Kingfisher when writing disk cache failed, as the CacheErrorReason.cannotCreateCacheFile, which is thrown in the ImageCache as in CacheStoreResult.diskCacheResult. However, since when using the KingfisherManager and the view extension methods, the cache process happens in an async way (by default, after the image setting completion handler is called) and will not affect the UI layer, this error is ignored (case 1, case 2).

If you need to implement a way to inspect this, maybe you can try to add a delegate to expose this error out and perform a clean up work there.

Or easier, maybe you can just set up a timer (say perform it every 5 or 10 minutes) to clean it regularly before an issue may happen.

from kingfisher.

hotngui avatar hotngui commented on July 22, 2024

Or easier, maybe you can just set up a timer (say perform it every 5 or 10 minutes) to clean it regularly before an issue may happen
Yeah, this is what I was thinking as well. But wanted to make sure I was not missing a feature that already existed before going that route as it does feel a bit janky.

from kingfisher.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.