跳转至正文

@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 图像、图库或图像序列
  • 需要请求头(request headers)的受保护媒体
  • 仅需使用之前获取的本地资源即可运行的离线容错页面
  • Capacitor 应用中,如果 <img> 和 <video> 不应直接请求受保护的 URL
  • configure(options) 设置默认 CDN 和重新验证行为。
  • bind(element, path, options?) 当本地文件就绪时,更新图片或视频元素。
  • src(path, options?) 返回用于框架状态的本地 source 字符串。
  • resolve(path, options?) 返回本地 source 及缓存元数据。
  • get(options) 将远程 URL 解析为持久化的 Native 文件元数据。
  • remove(options) 通过 key 或 URL 删除单个缓存资源。
  • clear() 删除由插件管理的所有缓存资源。
  • 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-downloader 用于显式的后台下载, @capgo/capacitor-file 用于通用的本地文件访问,以及 使用 @capgo/capacitor-asset-cache 用于本教程。