环境: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处下载,存到本地,赋予本次请求的版本号
因此以前最大的纠结就是这个版本号究竟是在哪里设置的,其实就是在请求下载的时候那个参数。另外,如上所述,若是你用不一样版本号加载过,那么其实本地会存有不仅一份缓存。