FileCacheStrategy

expect interface FileCacheStrategy

资源缓存策略.

由于上传资源时服务器要求提前给出 MD5 和文件大小等数据, 一些资源如 InputStream 需要首先缓存才能使用.

资源的缓存都是将 InputStream 缓存未 ExternalResource. 根据 FileCacheStrategy 实现不同, 可以以临时文件存储, 也可以在数据库或是内存按需存储. Mirai 内置的实现有 MemoryCache 和 TempCache. 操作 ExternalResource.toExternalResource 时将会使用 IMirai.FileCacheStrategy. 可以覆盖, 示例:

// Kotlin
Mirai.FileCacheStrategy = FileCacheStrategy.TempCache() // 使用系统默认缓存路径, 也是默认的行为
Mirai.FileCacheStrategy = FileCacheStrategy.TempCache(File("C:/cache")) // 使用自定义缓存路径

// Java
Mirai.getInstance().setFileCacheStrategy(new FileCacheStrategy.TempCache()); // 使用系统默认缓存路径, 也是默认的行为
Mirai.getInstance().setFileCacheStrategy(new FileCacheStrategy.TempCache(new File("C:/cache"))); // 使用自定义的缓存路径

此接口的实现和使用都是稳定的. 自行实现的 FileCacheStrategy 也可以被 Mirai 使用.

注意, 此接口目前仅缓存 InputStream 等一次性数据. 好友列表等数据由每个 Bot 的 BotConfiguration.cacheDir 缓存.

使用 FileCacheStrategy 的操作

actual interface FileCacheStrategy

资源缓存策略.

由于上传资源时服务器要求提前给出 MD5 和文件大小等数据, 一些资源如 InputStream 需要首先缓存才能使用.

资源的缓存都是将 InputStream 缓存未 ExternalResource. 根据 FileCacheStrategy 实现不同, 可以以临时文件存储, 也可以在数据库或是内存按需存储. Mirai 内置的实现有 内存存储临时文件存储. 操作 ExternalResource.toExternalResource 时将会使用 IMirai.FileCacheStrategy. 可以覆盖, 示例:

// Kotlin
Mirai.FileCacheStrategy = FileCacheStrategy.TempCache() // 使用系统默认缓存路径, 也是默认的行为
Mirai.FileCacheStrategy = FileCacheStrategy.TempCache(File("C:/cache")) // 使用自定义缓存路径

// Java
Mirai.getInstance().setFileCacheStrategy(new FileCacheStrategy.TempCache()); // 使用系统默认缓存路径, 也是默认的行为
Mirai.getInstance().setFileCacheStrategy(new FileCacheStrategy.TempCache(new File("C:/cache"))); // 使用自定义的缓存路径

此接口的实现和使用都是稳定的. 自行实现的 FileCacheStrategy 也可以被 Mirai 使用.

注意, 此接口目前仅缓存 InputStream 等一次性数据. 好友列表等数据由每个 BotBotConfiguration.cacheDir 缓存.

使用 FileCacheStrategy 的操作

actual interface FileCacheStrategy

资源缓存策略.

注意: 本接口只用于 JVM 平台. 在 native 平台没有作用.

由于上传资源时服务器要求提前给出 MD5 和文件大小等数据, 一些资源如 InputStream 需要首先缓存才能使用.

资源的缓存都是将 InputStream 缓存未 ExternalResource. 根据 FileCacheStrategy 实现不同, 可以以临时文件存储, 也可以在数据库或是内存按需存储. Mirai 内置的实现有 MemoryCache 和 TempCache. 操作 ExternalResource.toExternalResource 时将会使用 IMirai.FileCacheStrategy. 可以覆盖, 示例:

// Kotlin
Mirai.FileCacheStrategy = FileCacheStrategy.TempCache() // 使用系统默认缓存路径, 也是默认的行为
Mirai.FileCacheStrategy = FileCacheStrategy.TempCache(File("C:/cache")) // 使用自定义缓存路径

// Java
Mirai.getInstance().setFileCacheStrategy(new FileCacheStrategy.TempCache()); // 使用系统默认缓存路径, 也是默认的行为
Mirai.getInstance().setFileCacheStrategy(new FileCacheStrategy.TempCache(new File("C:/cache"))); // 使用自定义的缓存路径

此接口的实现和使用都是稳定的. 自行实现的 FileCacheStrategy 也可以被 Mirai 使用.

注意, 此接口目前仅缓存 InputStream 等一次性数据. 好友列表等数据由每个 Bot 的 BotConfiguration.cacheDir 缓存.

使用 FileCacheStrategy 的操作

See also

Types

Link copied to clipboard
expect object Companion
actual object Companion
actual object Companion
Link copied to clipboard
object MemoryCache : FileCacheStrategy

使用内存直接存储所有图片文件. 由 JVM 执行 GC.

Link copied to clipboard
class TempCache @JvmOverloads constructor(val directory: File? = null) : FileCacheStrategy

使用系统临时文件夹缓存图片文件. 在图片使用完毕后或 JVM 正常结束时删除临时文件.

Functions

Link copied to clipboard
open fun newCache(input: InputStream): ExternalResource

立即读取 input 所有内容并缓存为 ExternalResource. 自动根据文件头识别文件类型. 识别失败时将使用 "mirai".

abstract fun newCache(input: InputStream, formatName: String? = null): ExternalResource

立即读取 input 所有内容并缓存为 ExternalResource.

Inheritors

Link copied to clipboard
Link copied to clipboard