ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

videocache4cj自定义缓存目录与清理策略:告别存储焦虑的完整方案

videocache4cj自定义缓存目录与清理策略:告别存储焦虑的完整方案 videocache4cj自定义缓存目录与清理策略告别存储焦虑的完整方案【免费下载链接】videocache4cj一个支持边播放边视频缓存库输入视频的URL就可方便快捷的实现视频边下边播功能项目地址: https://gitcode.com/Cangjie-TPC/videocache4cjvideocache4cj 是一个支持边播放边缓存的视频缓存库只需把视频 URL 交给它处理就能一边下载一边播放。而自定义缓存目录与缓存清理策略正是它解决存储焦虑的两个核心能力——想缓存到哪儿就缓存到哪儿空间不够就按 LRU 规则自动清理最久未用的缓存文件。为什么要选目录 定策略视频缓存文件动辄几百 MB如果不管不问缓存堆积占满应用缓存区触发系统清理或应用卡顿不知道缓存存在哪里无法排查和手动管理videocache4cj 通过构建者Builder模式让你在初始化代理服务器时一次性指定配置项作用对应方法缓存目录缓存文件存放位置cacheDirectory(file)最大缓存大小所有缓存文件总字节数上限maxCacheSize(maxSize)最大缓存数量缓存文件个数上限maxCacheFilesCount(count)自定义清理策略完全自定义的清理逻辑setDiskUsage(diskUsage)完整接口说明可参考 doc/feature_api.md。快速上手一键设置自定义缓存目录在创建HttpProxyCacheServer时链式调用即可所有配置项都是可选的var server: HttpProxyCacheServer HttpProxyCacheServerBuilder(context) .cacheDirectory(自定义缓存目录) // 可选指定缓存文件夹 .maxCacheSize(1024 * 1024 * 1024) // 可选缓存总大小上限配合按大小清理 .maxCacheFilesCount(10) // 可选缓存文件数量上限配合按数量清理 .setDiskUsage(自定义缓存清理策略) // 可选不设置则默认按 512MB 大小清理 .build()构建与配置的入口在 http_proxycache_server_builder.cj示例工程可参考 entry/ 目录下的 main_ability.cj。默认值一览不传任何参数时 缓存目录/data/storage/el2/base/haps/entry/cache/video-cache定义在 storage_utils.cj 清理策略按总大小清理上限512 MB️ 文件名规则URL 的 MD5 值三种内置清理策略详解清理策略基于 LRU最近最少使用思想每次有文件缓存时刷新其最后修改时间超出上限后从最久未使用的文件开始删除。按总大小清理maxCacheSize适合大多数场景——设定一个字节数上限如 512MB、1GB缓存总和超过后自动淘汰最久未用的文件。由 totalsize_lru_diskusage.cj 实现判断规则非常简单totalSize maxSize才保留。按文件数量清理maxCacheFilesCount适合文件普遍较大、想严格控制条数的场景如最多只保留 10 个视频缓存。由 totalcount_lru_diskusage.cj 实现规则为totalCount maxCount。⚠️ 两个方法都生效时后调用的会覆盖先调用的二者共用同一个策略槽位建议只保留一种。完全自定义实现 DiskUsage 接口如果 LRU 满足不了你比如想按7 天未使用清理、或按目录配额分类清理只需实现 disk_usage.cj 中的接口public interface DiskUsage { func touch(filePath: String): Unit }内置的 LRU 基类 lru_diskusage.cj 已把遍历缓存目录、统计总大小和总数的脏活干完你只需继承它并覆写accept(file, totalSize, totalCount)方法返回true保留、false删除。另外还有一个 unlimited_diskusage.cjUnlimitedDiskUsage传入它即表示永不自动清理适合需要手动管理的场景。注意事项一个容易踩的坑内置 LRU 清理在 lru_diskusage.cj 中会检查缓存路径是否以默认缓存目录开头只有缓存在程序默认位置时才会触发自动清理。也就是说自定义cacheDirectory时建议选在默认缓存目录video-cache范围内让 LRU 策略正常生效如果缓存放在自定义策略完全托管的位置UnlimitedDiskUsage或自定义DiskUsage才是更可控的选择常见问题Q缓存文件命名规则可以改吗可以。setFileNameGenerator支持自定义命名规则默认是 MD5 命名见 md5_filename_generator.cj。Q缓存完成后走本地还是网络getProxyUrl(url, allowCachedFileUri)的第二个参数控制true表示缓存结束后直接从本地缓存文件读取false则继续走网络。Q需要写多少代码几乎为零。默认配置下HttpProxyCacheServerBuilder(context).build()一行就能用想改目录和清理上限只需多链两个方法。总结videocache4cj 把边下边播的存储管理收敛到了几个链式方法里✅自定义缓存目录cacheDirectory决定缓存落盘位置✅按大小清理maxCacheSize控制总容量红线✅按数量清理maxCacheFilesCount控制文件条数红线✅自定义策略实现DiskUsage接口即可接管全部清理逻辑目录选得好、策略配得准视频缓存从此不再是存储焦虑的来源。【免费下载链接】videocache4cj一个支持边播放边视频缓存库输入视频的URL就可方便快捷的实现视频边下边播功能项目地址: https://gitcode.com/Cangjie-TPC/videocache4cj创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表