緩存是一個(gè)概念旬蟋。
緩存是一種思想。
很多時(shí)候革娄,我們?cè)诓恢挥X中發(fā)現(xiàn)倾贰,緩存是一種有用的經(jīng)驗(yàn),他應(yīng)用于一切需要的場(chǎng)合拦惋,甚至可以應(yīng)用于一些不那么需要匆浙,但是添加了即可增加體驗(yàn)感的方面。這里并不是提倡一直要使用緩存架忌,而是“盡可能多地使用緩存”吞彤。
在應(yīng)用cocos-js引擎中發(fā)現(xiàn),緩存無處不在我衬。想必引擎開發(fā)者對(duì)這個(gè)是極為在意的叹放。那么緩存在引擎中體現(xiàn)的地方又有哪些呢。簡(jiǎn)單的例子挠羔,加載圖集井仰,加載ui的json文件,加載引擎等等破加。緩存在應(yīng)用中最大的作用是俱恶,能夠避免用戶的流量,同時(shí)也能夠更加快速的加載文件范舀,而不是相反:一次一次的重新加載文件合是。引擎最大的效果在于,幾乎所有的文件锭环,都是下載到本地的聪全,怎么見得呢。例如在開發(fā)html5應(yīng)用中辅辩,經(jīng)常發(fā)現(xiàn)api的調(diào)用如下:
Perload->load,前者是下載难礼,或者是加載。
這里也要談?wù)勴?xiàng)目中玫锋,為什么也要采取緩存思路蛾茉,以及采取緩存思路的應(yīng)用場(chǎng)合。例如撩鹿,熱更新谦炬,我們需要緩存到本地,重新下載的標(biāo)識(shí)則是每個(gè)文件的md5值节沦。在應(yīng)用某階段中键思,應(yīng)用會(huì)進(jìn)行預(yù)下載要使用文件窜管,然后應(yīng)用就可以僅僅下載一次,然后反復(fù)運(yùn)用這些預(yù)先加載的文件了稚机。應(yīng)用的地方還包括幕帆,可以給每個(gè)內(nèi)部要使用的文件進(jìn)行一次賦值md5存儲(chǔ)到j(luò)son對(duì)象中,例如{img:1001.png,md5:xxx32位}赖条。使用的過程就是每次預(yù)先進(jìn)行本地的文件和預(yù)先下載的json的文件進(jìn)行對(duì)比失乾,如果有添加,即可進(jìn)行push到下載列表纬乍,否則不push碱茁;另外,已經(jīng)存在本地的文件仿贬,要和json中的文件進(jìn)行md5值比較纽竣,發(fā)現(xiàn)不同,也要push到下載列表茧泪,相反不push蜓氨。思路都是極其簡(jiǎn)單的,應(yīng)用起來也不難队伟。
說起引擎的使用中穴吹,html5如何刷新新的資源文件,本地不再多說嗜侮,公眾號(hào)最開始的很多期已經(jīng)進(jìn)行了介紹港令,這里簡(jiǎn)單地說明一處:引擎內(nèi)部并不支持添加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則是默認(rèn)支持的击吱,所以可以不用處理淋淀,即可實(shí)現(xiàn)帶V值刷新。有關(guān)緩存的更多概念姨拥,或者應(yīng)用绅喉,這個(gè)需要不斷的加強(qiáng)思維和意識(shí),不能放松對(duì)緩存的應(yīng)用叫乌,“盡可能多的柴罐,而不是少的,以設(shè)計(jì)緩存方式為基礎(chǔ)的思想憨奸,產(chǎn)品還能具備更多設(shè)計(jì)思路”革屠。
???????? 這里還打個(gè)插曲。最近發(fā)現(xiàn)由于時(shí)差的問題,我們的服務(wù)器今天上午八點(diǎn)是6號(hào)似芝,但是美國(guó)用戶分享是5號(hào)那婉,這是一個(gè)問題。所以針對(duì)這類問題党瓮,我們可以以服務(wù)器端時(shí)間為準(zhǔn)详炬,不過針對(duì)時(shí)差較大的用戶,他會(huì)覺得奇怪寞奸!為什么我的分享是7月8號(hào)呛谜,今天明明是7號(hào)?這樣顯示UI上面枪萄,又會(huì)出現(xiàn)疑問隐岛,這是一個(gè)命題,畢竟服務(wù)器不再各個(gè)地區(qū)有設(shè)置啊瓷翻。時(shí)差是問題之一;另外的一個(gè)問題:用戶的電腦時(shí)間不按照套路出牌聚凹,居然超前72小時(shí)或者延時(shí)24小時(shí),這也是一個(gè)問題齐帚。這說明妒牙,客戶端的取值時(shí)間是不靠譜的,不過這類情況確實(shí)不在預(yù)期之內(nèi)童谒。