提交 383cad12 编写于 作者: Z zhangjunkunn

docs: 更新资源缓存相关文档

上级 cdbe308b
......@@ -15,13 +15,14 @@
- wasm主包/分包,即`wasm.code.unityweb`文件
- 首包资源,即`webgl.data.unityweb`文件
- 预加载的文件
- 请求URL包含StreamingAssets,并且没有添加到excludeFileExtensions列表中的文件
- 请求URL包含于bundlePathIdentifier列表,并且没有添加到excludeFileExtensions列表中的文件
- 开启纹理缓存后,纹理资源
### 转换插件相关配置
```
bundlePathIdentifier: 需要缓存的路径
bundleHashLength: bundle中hash占多少长度
excludeFileExtensions: 不需要缓存的文件类型
needCacheTextures: 是否缓存纹理
texturesPath: 纹理存放路径
......@@ -31,6 +32,13 @@ texturesHashLength: 纹理中hash长度
## 三、缓存规则
> 适用于预加载的文件和URL中包含`bundlePathIdentifier`的文件
假设有以下配置
```
1. DATA_CDN: https://weixin.qq.com
2. bundlePathIdentifier: ['StreamingAssets']
3. bundleHashLength: 32
```
在写入缓存前需要经过三步
1. 根据URL生成缓存路径
URL剔除掉DATA_CDN部分后作为缓存路径
......@@ -40,16 +48,20 @@ URL剔除掉DATA_CDN部分后作为缓存路径
那么:
- 则缓存路径=StreamingAssets/textures_8d265a9dfd6cb7669cdb8b726f0afb1e
- 资源唯一标识=StreamingAssets/textures_
- 资源唯一标识=StreamingAssets/textures
- 资源版本=8d265a9dfd6cb7669cdb8b726f0afb1e
***注意:资源实际部署的CDN前缀必须与转换面板填写的CDN地址一致,否则无法按照前文的缓存规则获得资源的唯一标识。***
***注意:资源实际部署的CDN前缀必须与转换面板填写的CDN地址一致,否则无法按照前文的缓存规则获得资源的唯一标识。导致缓存失败***
2. 清理掉同名旧文件
通过文件名中的hash区分同名文件的不同版本
继续上面的例子,假如本地已经有`StreamingAssets/textures_cdb8b726f0afb1e8d265a9dfd6cb7669`
在写入缓存前,插件认为已经本地已经有同名文件`StreamingAssets/textures`,但hash与本次写入的文件不一致,则需要删除`StreamingAssets/textures_cdb8b726f0afb1e8d265a9dfd6cb7669`
支持的bundle命名:需以`-``_`分割,当以其他符号分割时,无法正确处理版本信息,故无法正确删除旧版本资源
- textures_8d265a9dfd6cb7669cdb8b726f0afb1e
- textures-8d265a9dfd6cb7669cdb8b726f0afb1e
转换插件相关配置
```
bundleHashLength: bundle中hash的长度
......@@ -60,9 +72,13 @@ bundleHashLength: bundle中hash的长度
转换插件相关配置
```
defaultReleaseSize: 清理时,默认额外清理的大小,单位Bytes,1MB = 1024KB = 1024*1024Bytes
maxStorage: 最大缓存容量,修改此值需要联系研发助手开通权限,否则无效
```
## 四、注意项
## 四、判断是否走缓存
1. `minigame/unity-namespace.js`打开详细日志开关`enableDebugLog: true`查看资源日志是否有读取缓存
## 五、注意项
1. 文件名需要带上hash [BuildAssetBundleOptions.AppendHashToAssetBundleName](https://docs.unity3d.com/ScriptReference/BuildAssetBundleOptions.AppendHashToAssetBundleName.html),以便清理掉该文件的旧缓存。默认32位长度,可通过导出选项中`Bundle名中Hash长度`来自定义。比如游戏自己计算了crc,可将`Bundle名中Hash长度`设置为crc长度。
2. 配置到不自动缓存文件类型中的文件,不会自动缓存,默认值是json,比如addressable打包后生成StreamingAssets/aa/WebGL/catalog.json,这个文件不会自动缓存。
3. 开发者工具上可以打开文件系统查看缓存文件
......@@ -70,3 +86,5 @@ defaultReleaseSize: 清理时,默认额外清理的大小,单位Bytes,1MB
缓存文件在usr目录下
<img src='../image/cache_path.png'>
4. 真机安卓缓存目录:data/com.tencent.mm/MicroMsg/wxanewfiles/随机ID(根据最近使用时间判断是哪个目录)
......@@ -97,7 +97,7 @@ Appid -- 小游戏appid
CDN -- 游戏资源CDN
projectName -- 小游戏项目名
Orientation -- 游戏方向
maxStorage -- 最大内存
maxStorage -- 最大内存,修改此值需要联系研发助手开通权限,否则无效
DST -- 导出路径
// 启动Loader设置
bgImageSrc -- 背景图/封面图
......
......@@ -38,4 +38,5 @@ let managerConfig = {
## 注意事项
1. 预下载所有文件总体积应控制在合理范围内,通常可以3~5MB左右的内容。
2. 文件数量应控制在10个以内,在此阶段最多只能允许10个并发,超过将会排队。
3. UnityLoader插件已经考虑到业务会重复请求预下载的文件,游戏逻辑依然按未使用预下载的异步加载逻辑,无需做其他处理。如果预下载完成UnityLoader会立即构造网络数据返回,业务无感知。
\ No newline at end of file
3. UnityLoader插件已经考虑到业务会重复请求预下载的文件,游戏逻辑依然按未使用预下载的异步加载逻辑,无需做其他处理。如果预下载完成UnityLoader会立即构造网络数据返回,业务无感知。
4. 添加到预下载列表中的文件,需是插件会自动缓存的文件,否则会导致下载浪费,预下载无效,详见[资源缓存](FileCache.md)
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册