说缓存&&时间

缓存是一个概念。


缓存是一种思想。


很多时候,我们在不知不觉中发现,缓存是一种有用的经验,他应用于一切需要的场合,甚至可以应用于一些不那么需要,但是添加了即可增加体验感的方面。这里并不是提倡一直要使用缓存,而是“尽可能多地使用缓存”。


在应用cocos-js引擎中发现,缓存无处不在。想必引擎开发者对这个是极为在意的。那么缓存在引擎中体现的地方又有哪些呢。简单的例子,加载图集,加载ui的json文件,加载引擎等等。缓存在应用中最大的作用是,能够避免用户的流量,同时也能够更加快速的加载文件,而不是相反:一次一次的重新加载文件。引擎最大的效果在于,几乎所有的文件,都是下载到本地的,怎么见得呢。例如在开发html5应用中,经常发现api的调用如下:


Perload->load,前者是下载,或者是加载。


这里也要谈谈项目中,为什么也要采取缓存思路,以及采取缓存思路的应用场合。例如,热更新,我们需要缓存到本地,重新下载的标识则是每个文件的md5值。在应用某阶段中,应用会进行预下载要使用文件,然后应用就可以仅仅下载一次,然后反复运用这些预先加载的文件了。应用的地方还包括,可以给每个内部要使用的文件进行一次赋值md5存储到json对象中,例如{img:1001.png,md5:xxx32位}。使用的过程就是每次预先进行本地的文件和预先下载的json的文件进行对比,如果有添加,即可进行push到下载列表,否则不push;另外,已经存在本地的文件,要和json中的文件进行md5值比较,发现不同,也要push到下载列表,相反不push。思路都是极其简单的,应用起来也不难。


说起引擎的使用中,html5如何刷新新的资源文件,本地不再多说,公众号最开始的很多期已经进行了介绍,这里简单地说明一处:引擎内部并不支持添加V值,需要修改一处地方,


var load = function (file, type,

path) {

       var json = cc.loader.getRes(file);

       if (!json)

           return cc.log("%s does not exist", file);

       var ext = extname(file).toLocaleLowerCase();

       //if (ext !== "json" && ext !=="exportjson")

       //    return cc.log("%s loaderror, must be json file", file);


屏蔽两行,即可加载带V值的json文件。而其他的image或者audio则是默认支持的,所以可以不用处理,即可实现带V值刷新。有关缓存的更多概念,或者应用,这个需要不断的加强思维和意识,不能放松对缓存的应用,“尽可能多的,而不是少的,以设计缓存方式为基础的思想,产品还能具备更多设计思路”。


         这里还打个插曲。最近发现由于时差的问题,我们的服务器今天上午八点是6号,但是美国用户分享是5号,这是一个问题。所以针对这类问题,我们可以以服务器端时间为准,不过针对时差较大的用户,他会觉得奇怪!为什么我的分享是7月8号,今天明明是7号?这样显示UI上面,又会出现疑问,这是一个命题,毕竟服务器不再各个地区有设置啊。时差是问题之一;另外的一个问题:用户的电脑时间不按照套路出牌,居然超前72小时或者延时24小时,这也是一个问题。这说明,客户端的取值时间是不靠谱的,不过这类情况确实不在预期之内。

你可能感兴趣的:(说缓存&&时间)