項(xiàng)目開發(fā)過程中遇到以上問題,剛開始以為只是個(gè)警告,沒太在意。后來發(fā)現(xiàn)直接影響到了程序的執(zhí)行效果。果斷尋找解決方法。
根據(jù)Chrome瀏覽器信息定位,顯示以下代碼存在錯(cuò)誤:
$cookieStore.get("data")
由于自己在程序使用cookieStore存儲(chǔ)了大量所需數(shù)據(jù),其數(shù)據(jù)量超過了cookie默認(rèn)設(shè)定的存儲(chǔ)值4K,故會(huì)報(bào)錯(cuò)。
換用instance試試。問題成功解決,實(shí)踐證明:instance比cookieStore好用。
1.cookieStore默認(rèn)存儲(chǔ)多少數(shù)據(jù)?可否更改默認(rèn)存儲(chǔ)數(shù)據(jù)?
經(jīng)過網(wǎng)絡(luò)查詢也沒能獲得明確答案,不過從提示可以看出,其可存儲(chǔ)數(shù)據(jù)空間就是4K,而且其提供的方法只有put、get、remove三種,故得知更改其默認(rèn)存儲(chǔ)數(shù)據(jù)空間是不現(xiàn)實(shí)的事情。
2.從cookieStore獲取數(shù)據(jù)后,系統(tǒng)自己釋放存儲(chǔ)空間,還是必須得手動(dòng)釋放?是不是類似于java的垃圾回收機(jī)制?
憑借直覺,cookieStore應(yīng)該類似于java的垃圾回收機(jī)制,就算沒有人工編碼實(shí)現(xiàn)釋放cookieStore所占用的存儲(chǔ)空間,系統(tǒng)也會(huì)在其生命周期結(jié)束后釋放其存儲(chǔ)空間。最佳實(shí)踐是:當(dāng)從cookieStore中取出所需數(shù)據(jù),不再需要cookieStore時(shí),應(yīng)收到釋放其所占用的內(nèi)存空間。這樣才是合理的設(shè)計(jì)。
3.cookieStore與instance的區(qū)別?
如上述所分析,從內(nèi)存占用的角度考慮,cookieStore中存儲(chǔ)的數(shù)據(jù)置于內(nèi)存之中,實(shí)實(shí)際際的占用內(nèi)存空間。而instance類似于指針,只是其指向的是一個(gè)對(duì)象地址,其對(duì)象是可以存儲(chǔ)任意內(nèi)容、格式、大小的數(shù)據(jù)的,不受內(nèi)存所限。
注:有關(guān)instance的詳情請(qǐng)點(diǎn)擊此處.
AngularJS 提供了很好的 $cookie 和 $cookieStore API 用來處理 cookies 。
這兩個(gè)服務(wù)都能夠很好的發(fā)揮HTML5 cookies,當(dāng)HTML5 API可用時(shí)瀏覽器會(huì)選擇使用HTML5提供的API,如果不可用則默認(rèn)選擇document.cookies。無論那種方式,你都可以選擇使用相同的API來進(jìn)行工作。
將cookie module 注入到 controller 中
現(xiàn)在可以使用put、get 、remove方法操作 cookie , $cookieStore 可以直接存儲(chǔ)對(duì)象到cookie中,它會(huì)使用angularjs 的 toJson/fromJson 自動(dòng)序列化和反序列化
聯(lián)系客服