有時需要將網(wǎng)頁中的一些數(shù)據(jù)保存在瀏覽器端,當(dāng)下次訪問網(wǎng)頁時,不需要再次向服務(wù)器請求數(shù)據(jù),直接就可以從本地讀取數(shù)據(jù)第喳。
瀏覽器端
(1)cookie:cookie會隨著每次HTTP請求頭信息一起發(fā)送,無形中增加了網(wǎng)絡(luò)流量踱稍,另外曲饱,cookie能存儲的數(shù)據(jù)容量有限悠抹,根據(jù)瀏覽器類型不同而不同,IE6大約只能存儲2K扩淀。HTTP請求發(fā)送時楔敌,會把保存在該請求域名下的所有cookie值發(fā)送給web服務(wù)器,因此服務(wù)器端腳本是可以讀引矩、寫存儲在客戶端的cookie的操作梁丘。
cookie的有效期:cookie默認情況下的有效期是很短暫的侵浸,一旦用戶關(guān)閉瀏覽器旺韭,cookie保存的數(shù)據(jù)就會丟失。如果想要延長cookie的有效期掏觉,可以通過設(shè)置HTTP頭信息中的cache-control屬性的max-age值区端,或者修改HTTP頭信息中的expires屬性的值來延長有效期。
每個web服務(wù)器(域名)保存的cookie數(shù)不能超過50個澳腹,每個cookie保存的數(shù)據(jù)不能超過4KB织盼,如果超過了4KB(IE6大約只能存儲2K),服務(wù)器會處理不了酱塔。
(2)WebStorage(localStorage沥邻、sessionStorage):localStorge 比 cookie 存的更多,獲取更方便羊娃,而且存儲內(nèi)容不會隨請求發(fā)送給服務(wù)器唐全;localStorage中一般瀏覽器支持的是5M大小,這個在不同的瀏覽器中l(wèi)ocalStorage會有所不同蕊玷。localStorage 方法存儲的數(shù)據(jù)沒有時間限制邮利。
localStorage的缺點:
1)瀏覽器的大小不統(tǒng)一,并且在IE8以上的IE版本才支持localStorage這個屬性垃帅;
2)目前所有的瀏覽器中都會把localStorage的值類型限定為string類型延届,這個在對我們?nèi)粘1容^常見的JSON對象類型需要一些轉(zhuǎn)換;
3)localStorage在瀏覽器的隱私模式下面是不可讀取的贸诚;
4)localStorage本質(zhì)上是對字符串的讀取方庭,如果存儲內(nèi)容多的話會消耗內(nèi)存空間,會導(dǎo)致頁面變卡酱固;
5)localStorage不能被爬蟲抓取到械念。
sessionStorage與localStorage的唯一一點區(qū)別就是localStorage屬于永久性存儲,而sessionStorage屬于當(dāng)會話結(jié)束的時候媒怯,sessionStorage中的鍵值對就會被清空订讼。
(3)userData:IE瀏覽器專屬,容量達到640K扇苞。
(4)indexedDB
(5)Flash ShareObject
這種方式能能解決上面提到的cookie存儲的兩個弊端欺殿,而且能夠跨瀏覽器寄纵,應(yīng)該說是目前最好的本地存儲方案。不過脖苏,需要在頁面中插入一個Flash程拭,當(dāng)瀏覽器沒有安裝Flash控件時就不能用了。所幸的是棍潘,沒有安裝Flash的用戶極少恃鞋。
缺點:需要安裝Flash插件。
(6)globalStorage
使用于Firefox2+的火狐瀏覽器亦歉,類似于IE的userData恤浪。
服務(wù)器端
(1)session:需要cookie支持