memcached、session、cookie

讀書筆記 每日一記:1前端

Memcached

緩存服務,能夠用於存儲session; 阿里雲系列產品裏面有數據庫

session

概述:segmentfault

是在服務端保存的一個數據結構,用來跟蹤用戶的狀態,這個數據能夠保存在集羣、數據庫、文件中;瀏覽器

session 是如何工做的?緩存

  • 每一個 session 都對應一個 session_id,經過 session_id 能夠查詢到對應的 session
  • session_id 一般是存放在客戶端的 cookie 中,服務端存好 session 以後將對應的 session_id 設置在 cookie 中發送給客戶端
  • 當請求到來時,服務端檢查 cookie 中保存的 session_id 並經過這個 session_id 與服務器端的 session 關聯起來,進行數據的保存和修改

session 的儲存有四個經常使用選項:內存、 cookie、緩存、數據庫安全

  • 內存:開發環境存內存比較方便,問題是不可以共享狀態(只能在本機訪問)
  • cookie:使用 cookie 來儲存 session 的話,session 保存在用戶瀏覽器端,每次用戶訪問時,都會主動帶上他本身的信息。安全性的話,只要遵守最佳實踐來,也是有保證的。它的弊端是增大了數據量傳輸,好處是比較方便
  • 緩存:能夠共享(Memcached)
  • 數據庫:能夠共享

cookie

概述:bash

是客戶端保存用戶信息的一種機制,用來記錄用戶的一些信息,也是實現Session的一種方式。服務器

什麼是 Cookiecookie

  • Cookie 就是瀏覽器儲存在用戶電腦上的一小段文本文件
  • Cookie 是純文本格式,不包含任何可執行的代碼
  • Cookie 由鍵值對構成,由分號和空格隔開
  • Cookie 雖然是存儲在瀏覽器,可是一般由服務器端進行設置
  • Cookie 的大小限制在 4kb 左右

Cookie 是如何工做的:session

  • 首先,咱們假設當前域名下仍是沒有 Cookie 的
  • 接下來,瀏覽器發送了一個請求給服務器(這個請求是還沒帶上 Cookie 的)
  • 服務器設置 Cookie 併發送給瀏覽器(固然也能夠不設置)
  • 瀏覽器將 Cookie 保存下來
  • 接下來,之後的每一次請求,都會帶上這些 Cookie,發送給服務器

瀏覽器設置cookie

以後的請求裏面帶了cookie

參數配置

app.use(async(ctx, next) => {
ctx.cookies.set(
      'cid',//key
      'hello world', //value
      {
        domain: 'localhost', // 寫cookie所在的域名
        path: '/index', // 寫cookie所在的路徑
        maxAge: 10 * 60 * 1000, // cookie有效時長
        expires: new Date('2017-02-15'), // cookie失效時間 有maxAge的時候 它是無效的
        httpOnly: false, // 是否只用於http請求中獲取(若是爲true,客戶端不能修改)
        overwrite: false // 是否容許重寫
      }
    )
})
複製代碼

參考: Cookie 在前端中的實踐Cookie 和 Session 的使用簡記

相關文章
相關標籤/搜索