跳转到正文

@capgo/capacitor-asset-cache

将 CDN 图片和视频缓存到应用的持久化存储中,并绑定为本地媒体源

仅限本地的显示源

src, resolve,以及 bind 仅在本地文件存在时才返回资源。您的 img 或 video 标签将接收一个本地 webview URL。

持久化原生存储

缓存资源存储在应用拥有的持久化存储中,而非系统可能会在压力下清理的平台缓存文件夹中。

受保护的 CDN 支持

在 Web 元素仅加载本地文件的同时,将 Header 传递给原生 fetch 以获取签名或经过身份验证的资源。

框架友好型绑定

将原生缓存解析绑定到原生 HTML、React refs、Vue refs 或任何可以赋值 img/video src 的框架。

将 CDN 图片和视频缓存到应用的持久化存储中,并绑定为本地媒体源

从这里开始 cancel() 以及下方列出的其他核心方法。

平台支持备注
iOS是原生
Android是原生
Web 端否使用 Capacitor.getPlatform() 做保护

当你的应用展示大体积远程媒体,且这些媒体需要在常规存储压力下仍能保留时,请使用 Asset Cache:

  • 通过 CDN 提供的 onboarding 或营销视频
  • 跨会话重复使用的 hero 图、图库或图像序列
  • 需要请求头的受保护媒体
  • 离线容错页面,之前获取过的本地资源就足够
  • 在 Capacitor 应用中, <img> 以及 <video> 不应直接请求受保护的 URL
  • configure(options) 设置默认 CDN 和重新验证行为。
  • bind(element, path, options?) 当本地文件就绪时,更新 image 或 video 元素。
  • src(path, options?) 返回用于 framework 状态的本地 source 字符串。
  • resolve(path, options?) 返回本地 source 及缓存元数据。
  • get(options) 将远程 URL 解析为持久化的原生文件元数据。
  • remove(options) 通过 key 或 URL 删除单个缓存资源。
  • clear() 删除由该 plugin 管理的所有缓存资源。
  • list() 返回磁盘上仍然存在的缓存资源。
  • getCacheSize() 返回缓存的总字节数。
  • getPluginVersion() 返回原生实现的版本标记。

缓存可以按资源或通过默认设置以不同方式检查:

策略行为
never如果存在,则使用本地文件。
ttl在此时间后重新下载 maxAgeSeconds.
always每次调用时重新验证,并发送已知的验证器。
etag如果存在,则使用已知的 HTTP ETag 验证器。
last-modified如果存在,则使用已知的 HTTP Last-Modified 验证器。

在 iOS 上,文件存储在 Application Support 下,且缓存根目录会被排除在 iCloud 备份之外。在 Android 上,文件存储在应用的内部文件目录中。

缓存位于应用沙盒内,不会作为公开的用户媒体显示。应用被卸载、用户清除应用数据或应用调用时,缓存会被移除。 clear() 或 remove().

继续阅读 @capgo/capacitor-asset-cache

标题为“继续阅读 @capgo/capacitor-asset-cache”

如果你正在使用 @capgo/capacitor-asset-cache 要规划持久化媒体加载,请将其与 快速入门 了解实现细节, @capgo/capacitor-downloader 用于显式的后台下载, @capgo/capacitor-file 用于通用的本地文件访问,以及 使用 @capgo/capacitor-asset-cache 用于本教程。