diff --git a/Design/FileCache.md b/Design/FileCache.md index 06a7c79cc9538dce508b1cc8de0769d31d10d8c0..ac64ad9fdc47b4fd5187eb01222b8e928b07783e 100644 --- a/Design/FileCache.md +++ b/Design/FileCache.md @@ -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目录下 + +4. 真机安卓缓存目录:data/com.tencent.mm/MicroMsg/wxanewfiles/随机ID(根据最近使用时间判断是哪个目录) diff --git a/Design/Transform.md b/Design/Transform.md index aa1bb3cabb08b0105af3a8489ac730f283156a9d..ab0c2e21316c405034e1719cca4c4a628f085156 100644 --- a/Design/Transform.md +++ b/Design/Transform.md @@ -97,7 +97,7 @@ Appid -- 小游戏appid CDN -- 游戏资源CDN projectName -- 小游戏项目名 Orientation -- 游戏方向 -maxStorage -- 最大内存 +maxStorage -- 最大内存,修改此值需要联系研发助手开通权限,否则无效 DST -- 导出路径 // 启动Loader设置 bgImageSrc -- 背景图/封面图 diff --git a/Design/UsingPreload.md b/Design/UsingPreload.md index 0e84e692707ed6cdc95afd92b4e80781cf0f5e78..3e6dc7d21c8a9b608c4de58ea2791c3e848555b4 100644 --- a/Design/UsingPreload.md +++ b/Design/UsingPreload.md @@ -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