Почему kingfisher создал cacheFileName с использованием md5?

#ios #swift #md5 #kingfisher

Вопрос:

Почему kingfisher создал cacheFileName с использованием md5? Есть ли какие-то другие особые причины?

 // DiskStorage.swift in Kingfisher
        func cacheFileName(forKey key: String) -> String {
            if config.usesHashedFileName {
                let hashedKey = key.kf.md5
                if let ext = config.pathExtension {
                    return "(hashedKey).(ext)"
                } else if config.autoExtAfterHashedFileName,
                          let ext = key.kf.ext {
                    return "(hashedKey).(ext)"
                }
                return hashedKey
            } else {
                if let ext = config.pathExtension {
                    return "(key).(ext)"
                }
                return key
            }
        }
 

Комментарии:

1. Что такое зимородок? github.com/onevcat/Kingfisher/blob/…

Ответ №1:

Использование md5 файла в качестве имени файла в кэше является распространенным шаблоном. Имя кэша изменится при изменении файла, в то время как исходный URL-адрес может и не измениться.
Обратите внимание, что расширение сохранено, потому что оно может пригодиться при дальнейшем использовании файла.