为什么 kingfisher 使用 md5 创建 cacheFileName?

问题描述

为什么 kingfisher 使用 md5 创建 cacheFileName?还有什么特别的原因吗?

// 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
            }
        }

解决方法

使用文件的 md5 作为缓存中的文件名是一种常见模式。文件更改时缓存名称会更改,而源 url 可能不会。
请注意,保留扩展名是因为在以后使用文件时可能会很方便。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...