資料的兩種儲存方式 cookie 和 webstorage
什麼是cookie?
通俗的說就是當一個使用者通過HTTP協議訪問一個伺服器的時候,這個伺服器會將一些鍵值對(key:value)返回給客戶端瀏覽器,並在這些資料上加一些限制,在條件符合是,這個使用者下次訪問這個瀏覽器的時候,資料又被完整的待會給伺服器;cookie是瀏覽器提供的一種機制,可以有javascript對其進行控制,而不是javascript本身的性質
我們也可以這樣來理解:
cookie就像是第一次去超市,第一次辦了一張會員卡,會員卡里存了你的一些個人資訊,下次再繼續來這個超市時,超市會識別你的購物卡,
cookie的缺點:
1.數量和長度的限制:
每個域的cookie的cookie總數是有限的,IE6及以下最多20個,IE7及以上可以50個,FF最多50個,Chrome和Safair沒有做應限制。cookie的長度也有限制,最靠將儲存的內容控制在4KB左右;
2.安全性問題:
cookie把所有儲存的資料通過http協議的頭部從客戶端傳遞到伺服器,又從服務端傳回到客戶端,所有資料都儲存在客戶端的瀏覽器裡,所以這些cookie中的資料可以被訪問到,如果cookie被人攔截了,name就可以取得cookie內的所有資訊,即使加密也沒有用,因為攔截者不需要知道cookie的意義,他只要原樣轉發就可以了
3.效能問題:
由於所有cookie都會由瀏覽器作為請求頭髮送,所以在cookie中儲存大量資訊會影響特定域的請求效能
4.使用者:
使用者是可以自己禁止cookie的;
session:
除了cookie,web瀏覽器中還會使用session來儲存客戶端的登入狀態。不同於cookie的是,session儲存在伺服器上。session相當於程式在伺服器上建立了一份使用者檔案,客戶來訪問時只需要查詢客戶檔案表就可以了。
webstorage:
webstorage是h5中本地儲存的解決方案之一,目的是用來克服cookie的一些限制,在h5中引入webstorage這個概念並不是為了取代cookie而指定的標準,cookie作為http協議的一部分,來處理客戶端和伺服器端的通訊是不可或缺的。
webstorage的意圖在於解決本地本不應該用cookie卻不得不用cookie的本地儲存。
webstorage的優勢:
1.容量上:
webstorage:一般瀏覽器課提供5M的空間
2.安全性:
webstorage並不作為http請求頭髮送到瀏覽器所以相對安全,
3.流量上:
webstorage不傳送到伺服器,所以可以節省不必要的流量
webstorage的分類:
h5的webstorage分為兩個部分:
localStorage和sessionStorage,兩者的差別就就在於生命週期的不同:
sessionStorage用於儲存本地會話中的資料,這些資料只有在同一個會話中的頁面才能訪問,並且當會話結束後,資料也隨之被銷燬,因此 sessionStorage僅僅是一個會話級別的儲存;而localStorage相反,除非手動刪除資料,否則資料是永遠不會過期的;
session和cookie的區別:
1.session儲存在伺服器,客戶端不知道其中的資訊;cookie儲存在客戶端,伺服器可以知道其中的資訊;
2.session中儲存的是物件,cookie中儲存的是字串;
3.session不能區分路徑,同一個使用者在訪問網站期間,所有的session在任何一盒頁面內都可以訪問到;而cookie如果設定了路徑引數,name同一個網站下的不同路徑的cookie是不可以訪問到的
4.session會在一定時間儲存在伺服器上,當訪問增多,會佔用伺服器的效能,所以考慮到減輕伺服器的壓力,推薦使用cookie
5.單個cookie儲存的資料不能超過4KB,
6.session是通過cookie來工作的
cookie sessionStorage 和 cookieStorage的區別:
很多資料裡已經很詳細的介紹過三者的聯絡和區別了,在這裡我們主要說一下三者的區別:
1.cookie資料始終在同源的http請求中攜帶,也就是說cookie在伺服器端和客戶端來回傳遞;而sessionStorage和localStorage不會自動把資料傳送給伺服器,只儲存在本地
2.cookie資料有路徑的概念,可以限制路徑
3.儲存大小的不同
4.資料的有效期不同:
sessionStorage: 僅在當前瀏覽器關閉前有效;
localStorage:始終有效,視窗或者瀏覽器關閉後也有效,所以可以持久儲存資料;
cookie:只在設定的過期時間之前有效
5.作用域不同:
sessionStorage:不在不同的瀏覽器視窗中共享,即使是同一個頁面;
localStorage:在所有同源視窗中都是共享的;
cookie:在所有同源視窗中共享;
6.web storage支援時間通知機制,可以將資料更新的通知傳送給監者;
7.web storage的api介面使用更方便
相關推薦
資料的兩種儲存方式 cookie 和 webstorage
什麼是cookie? 通俗的說就是當一個使用者通過HTTP協議訪問一個伺服器的時候,這個伺服器會將一些鍵值對(key:value)返回給客戶端瀏覽器,並在這些資料上加一些限制,在條件符合是,這個使用者下次訪問這個瀏覽器的時候,資料又被完整的待會給伺服器;cookie是瀏覽器
YUV常用的兩種儲存方式_YUY2和YV12
轉自:http://blog.csdn.net/yiheng_l/article/details/3784874 簡單的說,YUV的格式在儲存上有兩類佈局: Packed和Plannar。Packed的方式就是把相鄰幾個象素打包起來。比如把水平方向2個象素打包到一個DWOR
HTML5中sessionStorage和localStorage兩種儲存方式的使用
<head> <meta charset="utf-8"> <title>HTML5 本地儲存</title> <script type="text/javascript"> function $(id){retur
資料結構之圖的兩種儲存方式
第一種:鄰接矩陣 鄰接矩陣可以表示頂點之間的相鄰關係的矩陣,是一個n階方陣,可以用一個一維陣列來表示頂點資訊,用一個二維陣列來表示頂點之間的邊的聯絡以及權重 具體的程式碼如下: #include <stdio.h> #inc
Flask 設定cookie的兩種方法.獲取cookie,和刪除cookie的方法(修改過期時間)
設定cookie 方法一: 建立物件 make_response的物件 呼叫物件 的set_cookie方法設定cookie 方法二: 直接設定表單頭 除了鍵值對,其他部分可去瀏覽器檢查摘抄 resp.headers["Set-Cook
MySQL兩種儲存引擎: MyISAM和InnoDB 簡單總結
1.簡單介紹 MyISAM是MySQL的預設資料庫引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的順序訪問方法)所改良。雖然效能極佳,但卻有一個缺點:不支援事務處理(transaction)。不過,在這幾年的發展下,MyS
SSM整合兩種配置方式——xml和javaConfig,新增分頁外掛pageHelper和通用Mapper
Spring MVC配置 1. xml方式 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
jsp兩種提交方式form和url
1.form提交form.submit()提交,不只跳轉action,還會將form中的輸入專案提交。在scope選用session時,最好用在登入-確認-結果等正順序提交。返回操作用url提交。jsp<input type="button" name="bttn" c
Service的兩種啟動方式onstartService和onbindService區別
我們都知道,Service啟動有兩種方法,一種是onbindService(繫結),一種是onstartService(啟動),那這兩者究竟有什麼不同呢? 閒話:今天是我第一次寫部落格,第一次就這樣獻給csdn了,我不是大神,只是一個剛工作的實習生,寫部落格只
高階語言程式的兩種處理方式——編譯和解釋
編譯方式 編譯程式的功能就是把高階語言書寫的源程式翻譯成與之等價的目標程式(組合語言或機器語言)。 編譯程式的工作過程 詞法分析 在詞法分析階段,源程式可以簡單的
佇列的兩種儲存方式的介紹與實現
簡介 佇列是一種特殊的線性表,它的特殊之處在於它必須在佇列的頭部進行刪除元素,在佇列尾部插入元素。我們把佇列的頭部稱為對頭(front),佇列尾部叫做隊尾(rear)。進行刪除元素位置叫隊頭(front),進行插入元素的位置叫在隊尾(rear)。佇列的儲存的資料稱為佇列元素
MySQL兩種儲存引擎: MyISAM和InnoDB
MyISAM是MySQL的預設資料庫引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的順序訪問方法)所改良。雖然效能極佳,但卻有一個缺點:不支援事務處理(transaction)。不過,在這幾年的發展下,MySQL也匯入了InnoDB(
佇列的兩種儲存方式的介紹與實現(後續)
簡介 佇列分為順序儲存結構和鏈式儲存結構,鏈式儲存結構其實就是線性表的單鏈表,只是只能在對頭出元素,隊尾進元素而已。從之前實現的佇列的順序儲存結構中 我們可以看到他的缺點,我們為了避免“假溢位”就實現迴圈佇列的順序結構,但是迴圈佇列必須指定出佇列的長度,所以說它並不完美。當
web前端js跨域的兩種實現方式jsonp和src
$.ajax( { type:'get', url : "http://192.168.120.77:8081/queryTopPageParams?callback=?", dataType :
Map集合中的兩種取出方式keySet和entrySet
/* map集合中的兩種取出方式: 1、Set<k> keySet:將map集合中所有的鍵存入到Set集合,因為Set具備迭代器。 所有可用迭代方式取出所有的鍵,再根據get方
Spark的環境搭建以及簡單的eclipse的兩種執行方式--standalone和yarn
前言:會一些linux的基礎,以及java基礎。以及是先搭建好java環境,搭建環境是單機版。假定ip:192.168.248.133 步入正軌,我們直接來說說怎麼搭建一個基於hadoop的spark環境。目的能夠讓spark將job提交到hadoop上處理。利用hado
嚴書-廣義表兩種儲存方式
廣義表的儲存結構由於廣義表(a1,a2,a3,…an)中的資料元素可以具有不同的結構,(或是原子,或是廣義表),因此,難以用順序儲存結構表示,通常採用鏈式儲存結構,每個資料元素可用一個結點表示。 由於廣義表中有兩種資料元素,原子或廣義表,因此,需要兩種結構的結點:一種是
TreeSet的排序兩種實現方式Comparator和Comparable
TreeSet 條件 型別一樣 設計到排序 comparable是自然(可以修改類的情況下) comparator是定製(不可以修改類的情況下)優先順序更高 使用說明: 一般採用的是自然排序,但是當,不能對類進行修改時不得不採用comparator方法,下面的dem
TreeSet集合排序兩種實現方式Comparable和Comparator比較
import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; /** * TreeSet集合排序有兩種方式,Comparable和Comparator區別: * 1: