本地緩存和服務器緩存的區別

一、cookie

  cookie存在於瀏覽器端,是客戶端保存用戶信息的一種機制,用來記錄用戶的一些信息。是經過擴展HTTP協議來實現的,服務器經過在HTTP的響應頭加上一行特殊的指示(set-cookie)以提示瀏覽器按照指示生成對應的cookie。主要用於如下三個方面。html

  • 一、會話狀態管理(保存用戶登陸狀態等須要記錄的信息)
  • 二、個性化設置(用戶自定義主題、設置等)
  • 三、瀏覽器行爲跟蹤(跟蹤分析用戶行爲)

cookie的原理:html5

  • 一、網絡服務器用HTTP頭想客戶端發送cookies,在客戶端,瀏覽器解析這cookies並將它們保存爲一個文件。
  • 二、當客戶端向服務器請求數據時,會自動帶上cookie發送到服務器。

cookie的存活時間程序員

  cookie的內容包括:名字、值、過時時間、路徑和域。路徑和域一塊兒構成cookie的做用範圍。若是不設置過時時間,則表示該cookie的生命週期爲瀏覽器會話期間,關閉瀏覽器窗口,cookie就消失,通常保存在內存中(會話cookie),若是設置了過時時間,該cookie則會被保存到硬盤裏(硬盤cookie)。數據庫

二、sessionStorage

  客戶端的存儲,基於html5,本地存儲。能夠將數據在當前會話中保存下來。刷新頁面數據依然存在,可是關閉頁面後,sessionStorage中的數據就會被清空。跨域

三、localStorage

  是HTML5標準中新添加的技術。本地存儲,存儲在本地硬盤。除非手動清除,不然永久保存。瀏覽器

四、Cookie, localStorage 與 sessionStorage的區別

  • 一、數據的週期生命   cookie可設置失效時間,默認是關閉瀏覽器後失效。   localStorage除非被手動清除,不然永久保存。   sessionStorage僅在當前會話下有效,關閉頁面或瀏覽器後被清除。
  • 二、存放數據大小   單個cookie通常4k左右。localStorage和sessionStorage通常5M左右。
  • 三、與服務器通訊   cookie每次都會攜帶在HTTP頭中,若是使用cookie保存過多數據會帶來性能問題。   localStorage和sessionStorage僅在客戶端(即瀏覽器)中保存,不參與和服務器的通訊
  • 四、易用性   cookie須要程序員本身封裝,源生的Cookie接口不友好。localStorage和sessionStorage都有封裝好的接口。

五、session

  session存在於服務器端,依賴於cookie(cookie能夠被認爲的禁止,因此有其餘機制能夠在cookie被禁用時,仍然可以把sessionId傳遞到服務器)。是服務端保存的一個數據結構,用來跟蹤用戶的狀態。能夠保存在內存、數據庫和文件中。
服務器

session的原理:cookie

  • 一、用戶第一次請求服務器的時候,服務器根據用戶提交的相關信息,建立一個對應的session對象,並向客戶端響應了一個cookie,cookie裏面保存了sessionId,這個時候會話纔開始,(關閉瀏覽器會話也不會結束)並根據sessionId在session池中尋找有沒有該session,沒有則將之添加到session池。(有一個默認存放時間,被取出時會從新設置默認存放時間)。
  • 二、用戶第二次請求時,請求會自動判斷此域名下是否存在 Cookie 信息,若是存在會將cookie信息也發送給服務器。服務器根據客戶端中的cookie中的sessionId去session池中尋找會話。若是找到session證實該用戶已經登陸而且能夠執行後面的操做。

cookie被禁用時的處理網絡

  • 一、URL重寫,把sessionId直接附加在URL路徑的後面。
  • 二、表單隱藏域(表單隱藏字段type="hidden"),服務器會自動修改表單,添加一個隱藏字段,以便在表單提交時可以把sessionId傳遞迴服務器。

session會話結束的兩種狀況:session

  • 一、服務器端的session超時。
  • 二、用戶將客戶端的cookie給清除了(session依賴cookie)。

六、cookie和session的區別?

  • 一、存取方式的不一樣

  cookie中只能保存ASCII字符串,若是須要存取Unicode字符或者二進制數據,須要先進行轉碼。
  session可以存取任何類型的數據,包括但不限於String、Integer、List、Map等。

  • 二、隱私策略的不一樣

  cookie存儲在客戶端中,對客戶是可見的,客戶端的一些程序可能會窺探、複製以致修正cookie中的內容。
  session存儲在服務器上,對客戶是透明的,不存在敏感信息泄露的風險。

  • 三、有效期上的不一樣

  cookie能夠設置過時時間來保存用戶信息在客戶端保存的期限。
  session依賴cookie,一旦cookie被清除,session就會失效。或者當客戶端關閉會話,session超時失效致使會話結束。

  • 四、服務器壓力的不一樣

  cookie保管在客戶端,不佔用服務器資源。
  session是保管在服務器端的,每一個用戶都會產生一個session。加入併發的用戶很是多,會產生大量的session,消耗大量的內存。

  • 五、瀏覽器支持的不一樣

  cookie是須要客戶端支持的。假如客戶端禁用了cookie或者不支持cookie,則會話跟蹤會失效。
  假如客戶端瀏覽器不支持cookie,則須要運用session及URL地址重寫或者採用表單隱藏域。
  假如客戶端支持cookie,則cookie能夠設置爲在本瀏覽器窗口以及子窗口內有效,也可以設爲一切閱讀器窗口內有效。可是session只能在本閱讀器窗口及其子窗口內有效。假如兩個瀏覽器窗口互不相干,它們將運用不一樣的session。

  • 六、跨域支持上的不一樣

  cookie支持跨域名訪問。session不支持跨域名訪問。僅在它所在的域名內有效。

  • 七、存儲大小的不一樣

  單個cookie保存的數據不能超過4k,session就沒有這個限制。

相關文章
相關標籤/搜索