Кэш sdwebiimage достигает максимального размера

Я использую SDwebimage Framework для кеширования изображений, поэтому количество загружаемых изображений увеличивается ежедневно, поэтому после 3-4 дней использования приложения увеличивается кеш, что приводит к снижению производительности приложения, есть ли способ улучшить производительность.


person user1330379    schedule 04.02.2015    source источник


Ответы (2)


Взгляните на этот пост SO на-се">здесь

Вы можете установить период, в течение которого кеш будет храниться, а затем он будет сброшен. Кроме того, вы можете поиграть со значением maxCacheSize в SDImageCache.m в cleanDiskWithCompletionBlock.

    // If our remaining disk cache exceeds a configured maximum size, perform a second
    // size-based cleanup pass.  We delete the oldest files first.
    if (self.maxCacheSize > 0 && currentCacheSize > self.maxCacheSize) {
        // Target half of our maximum cache size for this cleanup pass.
        const NSUInteger desiredCacheSize = self.maxCacheSize / 2;

        // Sort the remaining cache files by their last modification time (oldest first).
        NSArray *sortedFiles = [cacheFiles keysSortedByValueWithOptions:NSSortConcurrent
                                                        usingComparator:^NSComparisonResult(id obj1, id obj2) {
                                                            return [obj1[NSURLContentModificationDateKey] compare:obj2[NSURLContentModificationDateKey]];
                                                        }];

        // Delete files until we fall below our desired cache size.
        for (NSURL *fileURL in sortedFiles) {
            if ([_fileManager removeItemAtURL:fileURL error:nil]) {
                NSDictionary *resourceValues = cacheFiles[fileURL];
                NSNumber *totalAllocatedSize = resourceValues[NSURLTotalFileAllocatedSizeKey];
                currentCacheSize -= [totalAllocatedSize unsignedIntegerValue];

                if (currentCacheSize < desiredCacheSize) {
                    break;
                }
            }
        }
    }
person AshesToAshes    schedule 28.06.2015
comment
Большое спасибо @ashes to Ashes - person user1330379; 29.06.2015
comment
как установить максимальное ограничение, например 20 МБ, в приведенном выше блоке кода @AshesToAshes - person R. Mohan; 25.10.2017

Вы можете просто установить значение глобального кэша для вашего общего экземпляра SDImageCache.

Просто вызовите следующее в своем AppDelegate:

// limit SDImage cache to 50 MGB

SDImageCache.shared().config.maxCacheSize = 1_000_000 * 50

person Mert Kahraman    schedule 30.05.2018
comment
Я не разработчик iOS, мне нужно настроить свой кеш для реагирования на родной язык в моем делегате приложения. Что такое оператор импорта и какой обратный вызов я бы поместил в делегат приложения? - person evanjmg; 27.12.2018