iOS 5.1的Web存儲(chǔ)方式改變會(huì)影響到Web App嗎?
比如,這一款A(yù)pp看起來(lái)正受著影響:
其他的開(kāi)發(fā)者表示:
“我收集的統(tǒng)計(jì)數(shù)據(jù)表明,用戶(hù)經(jīng)常因?yàn)锳pp每次打開(kāi)之后,之前的設(shè)置常常被刪除,而拋棄一款A(yù)pp。這其實(shí)是一個(gè)相當(dāng)致命的錯(cuò)誤,應(yīng)該被馬上糾正。而且不要忘了,開(kāi)發(fā)者糾正以后,到Apple允許新版本上架,還有段時(shí)間要等。”
準(zhǔn)確地說(shuō),WebKit被用于存儲(chǔ)本地?cái)?shù)據(jù)文件到Library/Webkit中。Library/Webkit這個(gè)存儲(chǔ)目錄在過(guò)去被操作系統(tǒng)看做是***的,并且備份于iCloud中。而iOS5.1中,數(shù)據(jù)被存儲(chǔ)于Library/Caches中,這意味著這都被當(dāng)成了臨時(shí)數(shù)據(jù),并有可能被刪除。W3C的候選意見(jiàn),對(duì)localStorage給出的評(píng)價(jià)是(原文點(diǎn)擊這里):
“用戶(hù)代理應(yīng)該將本地存儲(chǔ)中的數(shù)據(jù)分散開(kāi),這是基于安全性的考慮,或者在用戶(hù)需要他們這么做時(shí)他們應(yīng)該如此。”
一個(gè)嵌入式瀏覽器和傳統(tǒng)Web瀏覽器并不完全一樣。如果你在Webkit中用SQLite,那這將不包含在W3CHTML***PI中,因?yàn)檫@些API已不再提供WebSQL。
這個(gè)問(wèn)題的復(fù)雜性在于,還會(huì)存在一個(gè)Bug(詳情點(diǎn)擊這里),它導(dǎo)致升級(jí)App至新版本之后數(shù)據(jù)的丟失。還有其他問(wèn)題存在于目前的WebApp,以及應(yīng)用了嵌入式UIWebView的App中。
PhoneGap在這個(gè)問(wèn)題上是有一定彈性的。因?yàn)樗梢哉{(diào)用本地API,這將在可能出現(xiàn)問(wèn)題時(shí)繼續(xù)工作。不過(guò)不好的情況是,代碼會(huì)因此更針對(duì)特定平臺(tái),而破壞其跨平臺(tái)性。
從Apple開(kāi)發(fā)者論壇上在iOS5.1的beta版發(fā)布期間的討論,可以看出Apple已經(jīng)意識(shí)到這個(gè)問(wèn)題,但正式版發(fā)布時(shí)仍沒(méi)得到解決。這給我們的感覺(jué)是,Apple似乎惱怒于眾多的App(無(wú)論Web還是本地)運(yùn)用Web存儲(chǔ)來(lái)加速,而不是僅用來(lái)存儲(chǔ)用戶(hù)創(chuàng)建的內(nèi)容。Apple覺(jué)得,這是在給iOS設(shè)備上本來(lái)就捉襟見(jiàn)肘的存儲(chǔ)空間施加更大壓力。
想擴(kuò)大一部iPad或者iPhone的存儲(chǔ)空間,除了花更多的錢(qián)再買(mǎi)一部,我們都知道別無(wú)他法。
這的確是個(gè)問(wèn)題。不過(guò)你不能否認(rèn)的是,Apple認(rèn)為PhoneGap一類(lèi)的開(kāi)發(fā)工具,或者體驗(yàn)接近本地App的WebApp,這對(duì)于Apple而言某種程度繞過(guò)了它的商業(yè)開(kāi)發(fā)體系,而它絕對(duì)不鼓勵(lì)這么做。Apple更喜歡的還是完全采用iOSSDK開(kāi)發(fā)的App。
Apple從真正意義上的本地App受益,這導(dǎo)致了Apple平臺(tái)常顯出一定程度的排他性。而且App只能從AppStore上獲得,同時(shí)Apple從中抽取一定比例費(fèi)用。
官方的iOS數(shù)據(jù)存儲(chǔ)指南可以點(diǎn)擊這里獲得。
文章發(fā)表于2012年4月1日。
原文作者TimAnderson,著名IT自由記者。
原文鏈接:
http://www.itwriting.com/blog/5656-apple-breaks-web-storage-in-ios-5-1-does-not-care-about-web-apps.html?utm_source=html5weekly&utm_medium=email