進公園css
背景: 這個公園有一個總公園, 總公園裏有許多小公園(總公園是登陸頁面, 小公園是域名相同的頁面)前端
工做人員檢查你的入園是否符合條件(後端查看是不是註冊之後的用戶)git
經過條件的話工做人員會給你一張票(後端會給你一個響應頭, 這個響應頭的做用是設置一個 cookie )github
票的內容是隻有工做人員才知道是否能夠入園的字符串web
你要帶上這個票進公園(瀏覽器會在請求頭帶上cookie)算法
工做人員看到這個票, 確認裏面的內容正確就給你進去(後端看到這個cookie就會讓你直接進入登陸後的頁面)後端
進公園api
背景: 我是一個壞遊客, 我知道什麼樣的字符串就能夠進入公園, 因而我能夠僞造假的門票, 工做人員發現了這個問題, 因此工做人員採用更安全的方法來審查門票瀏覽器
工做人員檢查你的入園是否符合條件(後端查看是不是註冊之後的用戶)緩存
經過條件的話工做人員會給你一張票(後端會給你一個響應頭, 這個響應頭的做用是設置一個 cookie , cookie 的值是一個隨機數)
而且工做人員把票的字符串和你的名字寫到一張表裏(後端設置一個session, 保存在服務器內存中, session的內容是以前的隨機數對應你的用戶信息)
票的內容是隻有工做人員才知道是否能夠入園的字符串
你要帶上這個票進公園(瀏覽器會在請求頭帶上cookie)
工做人員看到這個票, 經過判斷票的字符串是否和表的字符串匹配, 若是匹配,那麼說明能夠進入(後端拿到請求內容的cookie的隨機數, 會和sessions的內容進行比對, 看請求的cookie的隨機數有沒有在sessions上出現,若是出現了, 就會讓你進入登陸後的頁面)
localStorage.setItem("xxx", "yyy")
若是 yyy 是對象, 那麼要用 JSON 轉一下再存儲
localStorage.getItem("xxx")
localStorage.clear()
4,5,6,7同上
9不一樣: 在用戶關閉頁面(會話結束)後就失效 === 關閉頁面
未完成
那麼在第二次瀏覽器想請求一樣的大文件AA時, 服務器發現了, 直接不產生 HTTP 請求,
瀏覽器直接在本地內存拿到大文件AA
在實際工做中, 入口文件(通常是index)不設置Cache-Control, 其餘的文件都設置Cache-Control, 時間越長越好
首頁不能設置Cache-Control的緣由
www.baidu.com
, 那麼首頁在一天的時間內都不能得到最新的版本, 也能夠理解爲沒有接口去更新頁面了, 由於全部的路口都封鎖了這是原來的: <script src="./js/main.js">
這是如今的: <script src="./js/main.js?v=1">
Wed, 21 Oct 2015 07:28:00 GMT
, 而用戶有可能把本地的時間弄錯, 因此如今都使用 Cache-ControlMD5是一種摘要算法, 用於確認信息傳輸是否一致
如你下載一部電影, 網上的電影的文件對應一個MD5值,
你下載電影后, 本地的電影也對應一個MD5值
兩個MD5值若是徹底相同,就說明確實是一個文件了
特色: 若是兩個文件內容越類似, 那麼兩個MD5的值差別越大
那麼前端在從新請求這個文件的時候,請求內容就會帶上if-None-Match: MDXXXXXXX
這個請求頭
後端發現請求內容的if-None-Match: MDXXXXXXX
和服務器中相應文件的MD5相同, 那麼後端知道這個文件不須要下載
給前端的響應內容沒有第四部分,只有第一和第二部分, 而且返回的狀態碼是304
Cache-Control直接不請求, Etag直接不下載(要請求)
更多文章在個人github上