用途:Asset Canister 在 Internet Computer 上托管静态文件,是链上部署 Web 前端的标准方式。响应由子网认证,HTTP 网关自动验证内容确由区块链提供,也可在浏览器中验证,而非依赖中心化服务器。
主要能力:按项目创建,无全局 canister ID,部署后 ID 存于 .icp/data/mappings/。访问方式:本地 http://<canister-id>.localhost:8000,主网 https://<canister-id>.icp.net,自定义域名需 DNS 配置。自动用 gzip 和 brotli 压缩资源,无需配置。内置权限系统含 Prepare、Commit、ManagePermissions 三种角色。
使用方式:在 icp.yaml 中配置 recipe.type 为 "@dfinity/asset-canister@v2.2.1",指定 dir(上传目录)与 build(部署前构建命令)。SPA 需在 .ic-assets.json5 中设 "enable_aliasing": true 以回退到 index.html。编程式上传使用 @icp-sdk/canisters 的 AssetManager,需 @icp-sdk/canisters >= 3.5.0、@icp-sdk/core >= 5.0.0。部署命令:icp network start -d、icp deploy、icp deploy -e ic frontend。
限制与注意:dir 路径错误会导致部署失败或空 canister;未设 content-type 浏览器可能无法正确渲染;单资源受 2MB ingress 消息限制(>1.9MB 自动分块);大媒体文件存储成本高,建议用专用存储。allow_raw_access 默认 true,敏感资源应设为 false。Wasm 版本低于 0.30.2 时 ic_env cookie 缺失。icp-cli 0.3.0 移除 type: assets sync 步骤,需用 v2.2.1 及以上 recipe。降级 Wasm 可能因稳定内存格式变化而失败,必要时用 reinstall 模式(会清空数据)。上传授权应使用 grant_permission,勿用 --add-controller(授予完整控制权)。