跳转至正文
@capgo/capacitor-asset-cache 文件与存储 开源

资源缓存 Capacitor 插件

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

安装

bun add @capgo/capacitor-asset-cache bunx cap sync
npm、pnpm 或 yarn
  • npm install @capgo/capacitor-asset-cache
  • pnpm add @capgo/capacitor-asset-cache
  • yarn add @capgo/capacitor-asset-cache

指南

如何在 Capacitor 中使用 Asset Cache

使用 @capgo/capacitor-asset-cache

@capgo/capacitor-asset-cache 将大型 CDN 图片和视频存储在应用拥有的持久化存储中,然后为 Capacitor webviews 返回本地资源 URL。

安装

npm install @capgo/capacitor-asset-cache
npx cap sync

此插件公开的内容

  • bind - 将图片或视频元素绑定到本地资源 source,并在就绪后更新。
  • src - 资源在本地存在后,返回本地 source 字符串。
  • resolve - 返回本地 source 以及缓存元数据。
  • configure - 设置默认 CDN 和重新验证行为。
  • get, list, remove, clear,以及 getCacheSize - 需要时显式管理缓存。

使用示例

配置一次 CDN,然后按相对路径绑定元素:

import { AssetCache } from '@capgo/capacitor-asset-cache';

AssetCache.configure({
  cdnUrl: 'https://cdn.example.com/assets/',
  revalidate: {
    strategy: 'ttl',
    maxAgeSeconds: 86400,
  },
});

const hero = document.querySelector<HTMLImageElement>('#hero');

if (hero) {
  AssetCache.bind(hero, 'images/hero.jpg');
}

该元素会获得 data-asset-cache-state="loading" 在 native fetch 运行期间,之后会接收本地 source URL 并进入 ready.

img[data-asset-cache-state='loading'],
video[data-asset-cache-state='loading'] {
  opacity: 0.45;
}

受保护资源

插件在获取或重新验证远程文件时会发送 Header。Web 元素接收到的仍仅为本地源 URL。

const src = await AssetCache.src('private/videos/intro.mp4', {
  cdnUrl: 'https://cdn.example.com/assets/',
  headers: {
    Authorization: `Bearer ${token}`,
  },
});

未使用 CDN Base URL 时

如果不希望进行配置,请传入绝对 URL cdnUrl.

const src = await AssetCache.src('https://cdn.example.com/assets/videos/intro.mp4');

相对路径需要配置 cdnUrl 或在每次调用时指定 cdnUrl.

存储说明

在 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 用于通用的本地文件访问。

常见问题

Asset Cache 插件常见问题

如何在 Capacitor 应用中安装 Asset Cache 插件?

运行 &quot;bun add @capgo/capacitor-asset-cache&quot;(或 &quot;npm install @capgo/capacitor-asset-cache&quot;),然后运行 &quot;bunx cap sync&quot; 使 iOS 和 Android 项目同步原生 code。最后在你的应用 code 中从 &quot;@capgo/capacitor-asset-cache&quot; 导入即可。

@capgo/capacitor-asset-cache 是否支持 React、Vue 和 Angular?

支持。Asset Cache 是一个 Capacitor 包,因此它适用于任何在 Capacitor 中运行的 Web 框架,包括 Ionic、React、Vue、Angular、Svelte 以及原生 JavaScript。

@capgo/capacitor-asset-cache 支持哪个版本的 Capacitor?

Capgo 插件跟随 Capacitor 的主版本号:插件主版本要与你的 Capacitor 主版本匹配(例如插件 v8 对应 Capacitor 8)。GitHub README 里的兼容性表格列出了仍在维护的版本。

@capgo/capacitor-asset-cache 是免费开源的吗?

是的。code 的源码已在 GitHub 公开,地址为 https://github.com/Cap-go/capacitor-asset-cache/,并且你可以通过 npm 免费安装该包。欢迎提交 Bug 报告和 Pull Request。

我可以在不经过 App Store 审核的情况下,更新使用了 Asset Cache 的 code 吗?

安装或升级插件会改动原生 code,所以需要重新构建商店版本。之后,调用该插件的 JavaScript、HTML 和 CSS 改动就能通过 Capgo live updates 即时发布。

无需等待 App Store 审核,即可快速发布 Asset Cache 更新

只要插件已包含在商店构建中,Capgo live updates 就能在几分钟内将你的 JavaScript、HTML 和 CSS 更改推送给用户。

立即开始使用 Capgo