微信小游戲 50M那部分的緩存機制的使用


 

一、使用 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()檢查版本並進行更新。遠程服務器的資源修改了,就在后台升一個版本,檢查到有更新后,刪除本地緩存。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM