LoadFromCacheOrDownload的version参数之我见

环境:win10, unity2018, vs2015web

最近在弄ab包
有几种加载方式,其中一种就是浏览器

WWW.LoadFromCacheOrDownload(string url, int version)

url是ab包的地址,version是版本号
问题就出在这个version上缓存

看官方文档也没有说清这个版本号是哪来的,干什么用的ide

进行了大量搜索以及使用,才大概弄明白webgl

首先,这个version版本号并不记录在ab包文件中,好比对应的manifest文件
那是从哪来的呢url

其实很简单,这个版本号是开发者本身赋予的。code

而赋值的地方偏偏就是这句代码开发

WWW.LoadFromCacheOrDownload(string url, int version);

即,当你用这个语句加载包时,好比我们把version设置为2
系统会判断你本地有没有加载过这个包,有的话,再看加载过的包的版本是否是2
若是没有版本号为2的,则从url地址下载到本地缓存,而且给这份缓存编一个version号,即2文档

这个我是作webgl程序时试用的
也就是说,若是你在一个浏览器中第一次打开你的webgl项目,你在上面的加载语句中给了一个版本号是2,那浏览器看到本地没有缓存就会去url地址上下载,并将2作为版本号赋给这份缓存。下次再打开,若是程序没变,版本号仍是2,那么本地有以前下载的缓存且版本号为2,程序就不会从url处下载,而是直接读取本地的缓存。这就是缓存的意义所在吧。string

那么下次再打开,而请求的版本号改成了3,同理,程序判断本地缓存没有版本号为3的,一样再从url处下载到本地,存成另外一份缓存,并赋予其3作为版本号

综上,你以一个版本号来请求时,程序(浏览器)会在本地已有的缓存中查找,若是已有此版本号的缓存,则直接从本地该缓存读取,若是没有则从url处下载,存到本地,赋予本次请求的版本号

因此以前最大的纠结就是这个版本号究竟是在哪里设置的,其实就是在请求下载的时候那个参数。另外,如上所述,若是你用不一样版本号加载过,那么其实本地会存有不仅一份缓存。

相关文章
相关标签/搜索