cookie?
1. 服務(wù)器通過 Set-Cookie 響應(yīng)頭設(shè)置 Cookie
response.setHeader('set-cookie','key:value')
2.瀏覽器(前端)得到的響應(yīng)頭里的 cookie,之后每次請求都會帶著cookie
cookie:id驰怎;
3.?服務(wù)器通過讀取 Cookie 就知道登錄用戶的信息
request.header.cookie? //? 然后對比數(shù)據(jù)庫驗證用戶信息
由于直接使用cookie, 會很容易的被用戶偽造cookie,所以引出sessison來解決這個問題
cookie = new Cookie("cookiename","cookievalue");
//設(shè)置Cookie最大生存時間,以秒為單位,負(fù)數(shù)的話為瀏覽器進程,關(guān)閉瀏覽器Cookie消失?
cookie.setMaxAge(3600);
//設(shè)置cookie過期時間為1個小時
cookie.setPath("/");
//設(shè)置路徑励背,這個路徑即該工程下都可以訪問該cookie 如果不設(shè)置路徑,那么只有設(shè)置該cookie路徑及其子路徑可以訪問?
response.addCookie(cookie);
// 將Cookie添加到Response中,使之生效
setCookie(name, "", -1);//刪除一個cookie, 讓 setCookie函數(shù)的第二個參數(shù)為空就會刪除這個name coikie
sessions
1. 在服務(wù)器創(chuàng)建一個對象?
sessions = []
sessionsID? = Math.random*100000? ? //使用一個隨機數(shù)當(dāng)用戶的sessionsID
sessions[sessionsID] = 用戶信息? ?//把這個ID放入后臺臨時數(shù)據(jù)庫(sessions對象)中
response.setHeader('set-cookie',?sessionsID )
2.瀏覽器(前端)得到的響應(yīng)頭里的 cookie,之后每次請求都會帶著cookie
cookie: sessionsID砸西;
3.?服務(wù)器通過讀取 Cookie 就知道登錄用戶的信息
request.header.cookie? //? 然后對比數(shù)據(jù)庫驗證用戶信息
與直接使用cookie相比叶眉,用sessions隨機數(shù)生成ID暴露給前端隨機數(shù),顯得更加安全
localstorage
一個?Storage?可被用于訪問當(dāng)前遠(yuǎn)端( origin )的本地存儲空間的對象.
LocalStorage 跟 HTTP 無關(guān)芹枷,localstorage永久有效衅疙,除非用戶清理緩存,每個域名 localStorage 最大存儲量為 5Mb 左右鸳慈,
只有相同域名的頁面才能互相讀取 LocalStorage
具體的集中使用方法
localStorage.setItem('myCat', 'Tom'); //設(shè)置饱溢,為本地storage對象添加一個key,value.
var cat = localStorage.getItem("myCat");//讀取localstorage對象的“ myCat ”的?value
localStorage.removeItem("myCat");//移除一個key及value
sessionstorage
與localstorage相同,唯一不同點是SessionStorage 在用戶關(guān)閉頁面(會話結(jié)束)后就失效走芋。
Cache-Control
通過設(shè)置Cache-Control時間绩郎,讓相同的url時瀏覽器會在這個時間內(nèi),阻斷請求翁逞,利用緩存加載肋杖,達(dá)到性能優(yōu)化目的。
//后端設(shè)置響應(yīng)頭
response.setHeader('Cache-Control','maxage-600')? ?// 相同的url 600S內(nèi)不請求
Expires
?與Cache-Control功能一樣挖函,不同點是Cache-Control是設(shè)置多長時間后過期状植。Expires是直接設(shè)置一個過期的日期,格式為GMT
MD5
Message Digest Algorithm MD5(中文名為消息摘要算法第五版)為計算機安全領(lǐng)域廣泛使用的一種散列函數(shù).
ETag
//后端設(shè)置響應(yīng)頭
response.setHeader('ETag',md5)?
//客戶端收到響應(yīng)頭
//會有ETag:? '當(dāng)前文件MD5'
//同一個文件客戶端下一次請求時會帶上
IF-None-Math:"當(dāng)前文件MD5"
//后端收到請求會進行對比MD5怨喘,如果相同代表不需要更新津畸。
Cache-Control, Expires 必怜,ETag的區(qū)別
Cache-Control肉拓,?Expires是通過設(shè)置時間讓瀏覽器阻斷請求,ETag是沒有阻斷請求梳庆,是后端驗證MD5是否改變來做出相應(yīng)的響應(yīng)暖途。