一、使用 AssetsManager 靈活定制微信小游戲的緩存策略
官網教程:http://developer.egret.com/cn/github/egret-docs/Engine2D/minigame/usingcache/index.html
這個緩存策略是干啥的?
假如一個游戲30M。微信小游戲4M游戲包,還有26M每次游戲都會去服務器下載,不會緩存。為此,微信提供了50M本地緩存,這26M可以緩存起來,不需要每次加載。
二、實際操作一遍
1. 增加ResSplitPlugin插件
config.wxgame.ts里增加插件
注意要import,不然會報錯
2.發布試試
執行 egret publish --target wxgame 發布
原來游戲資源發布到RK_Main_wagame,現在被發布到了RK_Main_wxgame_remote文件夾
RK_Main_wxgame_remote文件夾里有了資源文件,而RK_Main_wxgame的資源都是空的了。
3. 遠程加載資源試試
本地緩存必須小游戲支持庫要1.1.0以上,在微信開發者工具輸入egret.wxgame可以查看版本
你的小游戲項目里有file-util.js、image.js、text.js時,說明已經支持了。
我們將遠程資源放到服務器上,並修改加載資源的路徑。(我自己的服務器是www.biliking.com)
修改完成,運行一次。哦,服務器需要在后台配置。這里微信開發者工具右上角詳情->勾選不校驗合法域名
正式發布需要一個https的服務器,在微信公眾平台登錄后設置。
本地搭建個服務器。安裝個iis7。在控制面板-管理工具-iis7
瀏覽默認頁面所在的文件夾
找到了iis7默認的網站目錄是C:\inetpub\wwwroot
那么我們將資源文件放到這個文件夾下,並重新修改資源加載路徑
四、來看看Egret的本地緩存怎么實現的
本地緩存主要是library下的file-util.js、image.js和text.js
查看file-util.js。這個文件主要利用微信提供的FileSystemManager API接口,對文件進行操作。
查看 image.js。這個主要是圖片的加載器。而text.js則是文本的加載器。
五、當服務器有更新時,需要刪除本地緩存
可以調用image.js和text.js中的fileutil.fs.remove方法
也可以updateManager刪除所有微信小游戲緩存
但是這些方法貌似都是100個文件,更新了1個,那么也會刪除100,重新下載100個。並沒有對比資源進行熱更新。
Egret默認會所有遠程資源進行本地緩存(50M以內),超過的需要修改image.js或text.js,判斷url,來進行是否緩存的選擇。
嘛,一般不會超過50M的...
總結:
一、如何進行本地緩存?
Egret默認對50M以內資源進行了本地緩存。貌似我們不需要操作。
我們只需要發布的時候,將不在4M以內的資源放在遠程服務器加載就行了。
二、遠程服務器資源有更新時,怎么實現更新?
當小游戲有更新時,可以調用wx.getUpdateManager()檢查版本並進行更新。遠程服務器的資源修改了,就在后台升一個版本,檢查到有更新后,刪除本地緩存。