當前位置:
首頁 > 知識 > 前端數據存儲方案集合(cookie localStorage等)以及詳解(一)

前端數據存儲方案集合(cookie localStorage等)以及詳解(一)

客戶端、前端 存儲一、 起 因

首先解釋下為什麼想來寫這個關於前端存儲的問題,因為最近在做小程序相關的內容。但是,在開發過程中,我們難免會遇到 token 存儲、 代碼緩存、 圖片存儲等等。 以及可能存在的 一系列的問題。

現在,我們就專門從 瀏覽器 存儲 入手,來真正的了解 緩存 存在的 場景,以及在日常開發中,我們需要 緩存的地方,以及使用緩存會給我們帶來哪些優勢 or bug。

二、緩存的 初始狀態

很久很久之前,還在 web 端開發的時候。 那個年代其實前後端分離開發模式 非常的少,而且你也得去 兼容 各個 大廠提供的 瀏覽器。 那個時候 IE6789 、 火狐、 谷歌 、Safari 等等。 多到 有些市場份額很少的 就直接 捨棄掉。 從那個年代過來的人 應該都 記得 國產神 瀏覽器 UC (說到這裡,眼淚就流了下來 T—T)

好吧,好像 扯遠了, 那個年代的 cookie (餅乾、小甜點) 在我第一次接觸到它的時候,哇~ 我是驚嘆的。 原來有這種操作? 什麼操作呢? 服務端會在 用戶登錄成功之後 介面返回一個 token ,類似秘鑰一樣的東西,然後 前端就會拿到這個token 然後 緩存在一個 地方, 這個地方 就是 cookie。 然後再次訪問需要有 登陸態的 介面的時候,我們就會 從 cookie 中 讀取 token,然後在 發送 http 請求時候,寫進 header 中。 後端接受到這個 請求以後,就可以獲取到這個 token ,然後經過簡單驗證即可。 驗證通過了,則進行下一步操作。

好了,下一步。我們就進行詳細的 介紹 Cookie

三、 Cookie1.1 Cookie 是什麼?

Cookie 翻譯 過來就是 餅乾、小甜點 的意思。
是在 web端 常見的 存儲方式之一,而且在 發起 http 請求的時候會自動被帶上。 但是這個個人建議 不要大量的去使用,因為 cookie 會被帶入進去 http 的請求內容中。請求包 可能會 越來越大,導致請求速度慢從而 影響用戶體驗。

說白了。 cookie 就是保存在客戶端的一段 **字元串**。

cookie可以手動設置,也可以由伺服器產生,當客戶端(瀏覽器)向伺服器發送請求,伺服器會反饋一些信息給客戶端,這些信息的key/value值被瀏覽器作為文件保存在客戶端特定的文件夾中。

1.2 cookie 如何使用

當然我們也會避免不了的會去用到。那麼就介紹下 使用的方法吧。

// 存cookie
let setCookie = (name, value, times) = > {
let date = new Date
data.setDate(data.getDate + times)
document.cookie = name + "=" + value + ";expires=" + date
}

// 取cookie
let getCookie = (name) => {
let cookies = document.cookie
let cookieArr = cookies.split(";")
for(let i = 0; i < cookieArr.length; i++) {
let arr = cookieArr[i].split("=")
if (name == arr[0] ) {
return arr[1]
}
}
return false
}

// 刪除 cookie
let removeCookie = (name) => {
setCookie(name, "", "-1")
// 通過建立 cookie 的時間設置,將時間設置提前一天,從而強行讓 cookie 失效,最後達到 刪除cookie 的目的
}

1.3 cookie 的 官方定義

這裡,我們看下官方是如何 給 cookie 定義的。

前端數據存儲方案集合(cookie localStorage等)以及詳解(一)

1) name: cookie 的名稱

2) value: cookie 的 值

3) maxAge: cookie 的 最大有效期

4) secure: 是否使用安全協議傳輸

5) path: cookie 使用的 路徑。 不同路徑無法獲取到。

6) domain: cookie 的域, 和 path 類似。主要防止跨域攻擊。

7) comment: 該cookie 的用處說明

8) version:cookie 的版本

1.4 cookie 使用時注意事項

1) cookie 是有大小限制的,每個cookie 所存放的數據不能超過 4k, 如果超過則該屬性將返回空字元串。

如果我們需要在客戶端存儲更大的數據,怎麼辦? 後面我們還會介紹到 userDate 和 localStorage(最大是5M) 等等。

2) 通常我們需要將 存放的 value 值 進行 escape 編碼。 然後在使用的時候 再用 unescape 函數,反編碼 就好了。

3)重要的信息不要放 cookie

好了~ 本期的 cookie 相關的內容就講到這裡了。 下面會持續更新一系列關於 客戶端存儲的內容。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技優家 的精彩文章:

基於三台主機部署phpwind
聊聊synchronized的鎖問題
yii2 隊列 shmilyzxt/yii2-queue 簡介
LayUI分頁,LayUI動態分頁,LayUI laypage分頁
[原創] 使用 Vitamio 播放視頻作為 Splash 時出現失真情況的解決方案

TAG:科技優家 |

您可能感興趣

PentestPackage-Pentesting腳本集合
Chinese Word Vectors:目前最全的中文預訓練詞向量集合
Redis 集合(Set)
曝光 竟是iPad、iMac、MacBook Pro的集合體
Walkers 集合
Bank Holiday折扣集合:Coach, Topshop, La Mer, 小CK等都有驚喜折扣
用Python 實現的機器人演算法示例集合——PythonRobotics
「冰港」the bigint 設計師集合品牌 開業首秀「icebreak
國內基本沒有貨的supreme聯名NikeLab Air Max 98各配色大集合!
"IT Girl " Petra Collins 攝影作品集合,少女系的復古氣息大片賞析!
ajax傳遞list集合
AJ4配色三巨頭集合,Air Jordan 4 "What the" 正面照來啦!
Iterator:訪問數據集合的統一介面
巴黎世家(Balenciaga )Triple S老爹鞋,開會啦,集合完畢,請檢閱
Marc Jacobs 新品上市 | IT Bag 大集合
三星或取消與Supreme Italia合作;江南布衣推出設計師品牌集合店;Superdry發布盈利預警
坐標芮歐!第三家Chikalicious變身時髦集合店!
用TensorFlow 實現的模型集合
樂高新品:漫威全員集合《復仇者聯盟3:無限之戰》&Avengers:Infinity War 電影盒組
Charles&Keith當季最全的鞋子安利大集合!