由於最近有項工作要用到本地儲存方式來儲存使用者的一些資訊,所以花了點時間蒐集了一下現有的一些本地儲存方式,並做了一些比較,在這裡做個記錄,以後遇到類似的問題,要用什麼方法心中也多少有個數。
目前已有的本地儲存方式:
一、傳統的:
1. cookie:各瀏覽器都基本支援,可控制生命週期,但缺點是有大小限制,1個cookie最多儲存4096±1b(大約為4kb)大小的資料,乙個網域名稱下最多儲存20個cookie;而且有可能會被客戶端禁用掉。
2. userdata:可控生命週期,切儲存容量得到擴充,單個檔案大小為128kb,乙個網域名稱下可儲存1024kb的檔案,缺點是只能在windows+ie 環境。
3. flash:大小得到擴充,且各個瀏覽器都支援,但是需要在用的地方都引入.swf檔案和大量的js,比較繁瑣。
二、html5給出的:共同缺點是低端版本的瀏覽器會不支援,且瀏覽器實現方式會有差異
1. web storage:
1) localstorage:大小得到擴充,大多數桌面瀏覽器會設定每個**5mb的限制,chrome和safari對每個**的限制是2.5mb,ios的safari和android的webkit的限制也是2.5mb,不受視窗的影響。缺點是一經初始化後就長期儲存在本地,不受會話長短的影響,若想刪除必須得手動清理。
2. globalstorage:
在瀏覽器關閉以後,使用globalstorage儲存的資訊仍能夠保留下來,和sessionstorage一樣,同一域中任何乙個頁面儲存的資訊都能被所有的頁面共享。缺點是目前只有ff支援,且只支援當前域下的globalstorage儲存。
3. indexeddb:
支援儲存結構化的資料,與mysql和web sql database等資料庫類似,不過其最大特色是使用物件儲存資料而不是用表儲存。
條件:1. 在本專案中,登入後利用介面得到的使用者資訊會有乙個過期時間,過了那個時間後使用者想進行其他操作必須重新登入。
2. 使用環境為移動端,都支援html5的web storage 儲存,當然也支援cookie。
3. 要考慮以後的發展。
相容性方面,userdata和globalstorage不滿足要求;flash過於麻煩,而且還要瀏覽器有相應擴充套件;只在本地儲存單個使用者的資料,不必用到indexed db;localstorage不能夠自動清除,在這裡不需要持久化儲存資料,假設乙個裝置有另乙個人使用,在這裡就會有問題。只剩下sessionstorage和cookie:
cookie:能夠根據伺服器端設定的使用者資訊有效時間來設定其自身的存在時間;有被禁用的可能,但是與伺服器的對話的session id通常情況下依賴於cookie,若要考慮禁用cookie,那很多策略都要修改,且使用環境為移動端,禁用可行性更低。
sessionstorage:基本沒有被禁用的風險,但是在乙個會話週期內它都有效,假如服務端資料已經過期,但是本地視窗並未關閉,仍然能使用sessionstorage,但是這問題也並不大,因為本來儲存的就是該使用者已有體系中的資料,就算重新從服務端獲取也還是這些。
考慮到未來的發展,各瀏覽器廠商對html5的支援越來越好,最後我還是採用了sessionstorage。
總結本地儲存幾種方式
最近學習了本地儲存幾種方式各自的特點和區別,遂記錄下來,以加深印象。一 cookie cookie算是比較早的技術,最初是為了記錄http的狀態,提高訪問速度。cookie是伺服器 種植 在客戶端的key value形式文字檔案。但同時客戶端也能操作cookie。特點 二 localstorage ...
本地儲存的幾種方式
一 cookie cookie算是比較早的技術,最初是為了記錄http的狀態,提高訪問速度。cookie是伺服器 種植 在客戶端的key value形式文字檔案。但同時客戶端也能操作cookie。特點 大小 cookie的大小限制在4k。每個網域名稱下cookie的個數現在在20個。在客戶端請求伺服...
三種本地儲存方式
當網頁要發http請求時,瀏覽器會先檢查是否有相應的cookie,有則自動新增在request header中的cookie欄位中。這些是瀏覽器自動幫我們做的,而且每一次http請求瀏覽器都會自動幫我們做。這個特點很重要,因為這關係到 什麼樣的資料適合儲存在cookie中 儲存在cookie中的資料...