溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

LoadFromCacheOrDownload的versio

發(fā)布時(shí)間:2020-08-09 06:00:07 來源:網(wǎng)絡(luò) 閱讀:410 作者:lreach 欄目:游戲開發(fā)

環(huán)境:win10, unity2018, vs2015

最近在弄ab包
有幾種加載方式,其中一種就是

WWW.LoadFromCacheOrDownload(string url, int version)

url是ab包的地址,version是版本號(hào)
問題就出在這個(gè)version上

看官方文檔也沒有說清這個(gè)版本號(hào)是哪來的,干什么用的

進(jìn)行了大量搜索以及使用,才大概弄明白

首先,這個(gè)version版本號(hào)并不記錄在ab包文件中,比如對(duì)應(yīng)的manifest文件
那是從哪來的呢

其實(shí)很簡單,這個(gè)版本號(hào)是開發(fā)者自己賦予的。

而賦值的地方恰恰就是這句代碼

WWW.LoadFromCacheOrDownload(string url, int version);

即,當(dāng)你用這個(gè)語句加載包時(shí),比如咱們把version設(shè)置為2
系統(tǒng)會(huì)判斷你本地有沒有加載過這個(gè)包,有的話,再看加載過的包的版本是不是2
如果沒有版本號(hào)為2的,則從url地址下載到本地緩存,并且給這份緩存編一個(gè)version號(hào),即2

這個(gè)我是做webgl程序時(shí)試用的
也就是說,如果你在一個(gè)瀏覽器中第一次打開你的webgl項(xiàng)目,你在上面的加載語句中給了一個(gè)版本號(hào)是2,那瀏覽器看到本地沒有緩存就會(huì)去url地址上下載,并將2做為版本號(hào)賦給這份緩存。下次再打開,如果程序沒變,版本號(hào)還是2,那么本地有之前下載的緩存且版本號(hào)為2,程序就不會(huì)從url處下載,而是直接讀取本地的緩存。這就是緩存的意義所在吧。

那么下次再打開,而請(qǐng)求的版本號(hào)改為了3,同理,程序判斷本地緩存沒有版本號(hào)為3的,同樣再從url處下載到本地,存成另一份緩存,并賦予其3做為版本號(hào)

綜上,你以一個(gè)版本號(hào)來請(qǐng)求時(shí),程序(瀏覽器)會(huì)在本地已有的緩存中查找,如果已有此版本號(hào)的緩存,則直接從本地該緩存讀取,如果沒有則從url處下載,存到本地,賦予本次請(qǐng)求的版本號(hào)

所以之前最大的糾結(jié)就是這個(gè)版本號(hào)到底是在哪里設(shè)置的,其實(shí)就是在請(qǐng)求下載的時(shí)候那個(gè)參數(shù)。
另外,如上所述,如果你用不同版本號(hào)加載過,那么其實(shí)本地會(huì)存有不只一份緩存。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI