http --- 前端的緩存

前端的緩存分為: http緩存 和 瀏覽器緩存
http緩存:

// 當客戶端向服務器請求資源時,會先抵達瀏覽器緩存,如果瀏覽器有"要請求資源"的副本
// 就會從瀏覽器緩存中提取而不是從原始服務器中提取這個資源// 常見的http緩存,只能緩存get請求響應的資源,對于其他類型的響應則無能為力,所以后續說的請求緩存都是指GET請求// http緩存都是從第二次請求開始的.第一次請求資源時,服務器返回資源,并在response header頭中回傳資源的緩存參數
// 第二次請求時,瀏覽器判斷這些請求參數,命中強緩存就直接200,否則就把請求參數加到request header頭中傳給服務器
// 看是否命中協商緩存,命中則返回304,否則服務器會返回新的資源// 注1:強制緩存如果生效,會返回狀態碼200,且不需要和服務器進行交互
//     協商緩存無論是否生效,會返回狀態碼304,都需要和服務器進行交互// 注2:強制緩存是否失效(根據Cache-Control的max-age有沒有超時,或expires的緩存有沒有過期判斷)// 協商緩存:
// 當第一請求時服務器返回的響應頭中沒有Cache-Control和Expire或者Cache-Control和Expires過期
// 亦或者它的屬性設置為no-cache,那么瀏覽器第二次請求時,就會與服務器進行協商
// 與服務器端對比判斷資源是否進行了修改更新.如果服務器端的資源沒有修改,那么就會返回304狀態碼
// 告訴瀏覽器可以使用緩存中的數據,這樣就減少了服務器的數據傳輸壓力.// 注3:私有緩存(瀏覽器緩存):Cache-Control: Private
// 注4:共享緩存(代理級緩存):Cache-Control: Public

為什么使用http緩存:

// 1.減少冗余的數據傳輸,節省流量
// 2.緩解服務器的壓力,提高服務器的性能
// 3.加快了頁面加載的速度

瀏覽器緩存:

// 常見的有3種:cookie,sessionStorage和localSotrage
// cookie:兼容各種瀏覽器,每次都會和后臺交互,可設置過期時間
// sessionStorage:不兼容低版本瀏覽器,本地存儲,不會每次和后臺交互,會話關閉,緩存失效
// localStorage:不兼容低版本瀏覽器,本地緩存,不會每次和后臺交互,需要手動刪除

總結:

1.強制緩存:服務器會告訴瀏覽器一個過期時間,在規定時間內,無需告知服務器,直接使用緩存,過期則使用協商緩存
2.將緩存中的Etag和Last-Modified通過請求告訴服務器,由服務器校驗,返回304狀態碼時,瀏覽器直接使用緩存

參考 https://mp.weixin.qq.com/s?__biz=MzUyNDYxNDAyMg==&mid=2247484343&idx=1&sn=efb2f0eacc32e24ca2dd8bed0900f85e&chksm=fa2be35ecd5c6a48246107307ea838c42e807fb6ddf4838228ef552a387e0a02f0c64f1a4606&mpshare=1&scene=23&srcid=#rd

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/251088.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251088.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251088.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ES5-拓展 隱式數據類型轉換

Boolean轉換原則:非假即真 6種虛值 原始值轉換為原始值 對象轉換為原始值 Date()和new Date() new Date可以不寫括號(new方式返回的一定是對象),返回Date對象Date()返回函數執行,返回時間字符串 引用值轉原始值 先找valueOf方法(一般…

Swagger的簡單入門【轉載】

一、Swagger簡介 上一篇文章中我們介紹了Spring Boot對Restful的支持,這篇文章我們繼續討論這個話題,不過,我們這里不再討論Restful API如何實現,而是討論Restful API文檔的維護問題。 在日常的工作中,我們往往需要給前…

visual studio code搭建本地服務器(node.js+express)

一、安裝node.js(常規軟件安裝流程,比較簡單,不用贅述) 二、安裝express框架 1. 打開Windows命令提示符,輸入: npm install express -g,等待,安裝好如下所示: npm instal…

es6 --- 手寫一個promise

一個promise實例: var getJSON function(url) {var promise new Promise(function(resolve, reject) {// XHR對象發現ajax請求var client new XMLHttpReqeust();client.open("GET", url);client.onreadystatechange handler;client.responseType "json&qu…

最大流模版 EK

EK算法基于增廣路的思想,易于理解,但由于低效并不被經常使用 #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #include <queue> using namespace std; const int MAXN10005,MAXM100005…

Restrictions查詢用法

Restrictions查詢用法 HQL運算符 QBC運算符 含義 Restrictions.eq() 等于equal <> Restrictions.ne() 不等于not equal > Restrictions.gt() 大于greater than > Restrictions.ge() 大于等于greater than or equal < Restrictions.lt() 小…

chrome調試

技術拓展直播課8 按chrome的官方文檔 長按刷新 清除緩存&#xff08;不一定好使&#xff09; Ctrl f 查找類 console控制臺見b站 bilibili source面板直接打斷點 效果和debugger一樣 單步調試 進入到函數的下一步 網速 no throttling 是否需要過濾 domcontentloaded d…

es6 --- promise和async/await的區別

首先需要了解async函數: async是Generator函數的語法糖: // 使用Generator依次讀取兩個文件 var fs require(fs); var readFile function (fileName) {return new Promise(function (resolve, reject) {fs.readFile(filename, function(error, data) {if (error) return re…

Ueditor百度編輯器中的 setContent()方法的使用

百度編輯器Ueditor所提供的setContent()方法作用是&#xff1a;設置或者改變編輯器里面的文字內容或html內容 函數說明&#xff1a;setContent(string,boolean); 參數string 是需要設置到編輯器里面的內容&#xff0c;可以含有HTML代碼&#xff0c;最后插入到編輯器中的內容是經…

小程序UI

從input組件說起 <input maxlength"10" placeholder"最大輸入長度10" /> <div id"wrapper" disabled$"{{disabled}}">\n <p id"placeholder" class$"{{_getPlaceholderClass(placeholderClass)}}"…

61-1 認識webpack

認識webpack 面向過程開發的不便引入外部js執行順序面向對象開發 加載多個文件耗時更多 增加了http請求 引入過多js變量來源不明 優化 使用前先import 但使用import語法需要借助工具webpack翻譯為瀏覽器可以解析的語法安裝node自動攜帶npmwebpack若沒有全局安裝 需要使用npx…

css font簡寫

一、字體屬性主要包括下面幾個 font-family&#xff0c;font-style&#xff0c;font-variant&#xff0c;font-weight&#xff0c;font-size&#xff0c;fontfont-family&#xff08;字體族&#xff09;: “Arial”、“Times New Roman”、“宋體”、“黑體”等;font-style&…

javascript --- 原生的拖拽功能實現

準備一個方塊: <style>.drag{background-color:#aaf;position:absolute;} </style> <div class"drag" style"width:100px;height:100px;top:0;left:0"></div>監聽鼠標的按住事件: let dragDiv document.getElementsByClassName…

web安全學習-驗證機制存在的問題

驗證機制是應用程序防御惡意攻擊的中心機制。它處于防御未授權的最前沿&#xff0c;如果用戶能夠突破那些防御&#xff0c;他們通常能夠控制應用程序的全部功能&#xff0c;自由訪問其中的數據。缺乏安全穩定的驗證機制&#xff0c;其他核心安全機制&#xff08;如回話管理和訪…

ES5-拓展 原型鏈、繼承、類

Symbol不是構造函數 Object不是原型是實例對象 他的構造器繼承原型上的構造器 undefined是未定義 null是空指針 一、原型鏈 1. 函數也是實例對象 2. 構造函數Object是由Function構造出來的 3. 有一種說法是&#xff0c;原型鏈的終點是null Object.prototype.__proto__指向nul…

Mysql中各種與字符編碼集(character_set)有關的變量含義

mysql涉及到各種字符集&#xff0c;在此做一個總結。 字符集的設置是通過環境變量來設置的&#xff0c;環境變量和linux中的環境變量是一個意思。mysql的環境變量分為兩種&#xff1a;session和global。session變量是僅在這次會話紅中有效&#xff0c;在mysql中&#xff0c;一次…

spring boot 加載application配置文件

這就要注意了 轉載于:https://www.cnblogs.com/huochaihe/p/9397849.html

javascript --- 防抖與節流

先做一個監聽鼠標移動的base: <style>#content{height:150px;width:200px;text-align:center;color:#fff;background-color:#ccc;font-size: 70px;} </style> <div id"content"></div> <script>let content document.getElementById…

DOM-9 【實戰】模塊化開發Todolist(面向過程)

模塊化分類 按dom結構劃分按功能劃分&#xff08;組件化開發&#xff09; 模塊與模塊之間可以相互依賴&#xff0c;但互不影響 模塊&#xff1a;IIFE賦值給一個變量&#xff0c;當引入模塊時&#xff0c;IIFE會立即執行 單標簽閉合才符合W3C規范display、position放在上面css是…

mysql在linux下的安裝(5.7版本以后)

1.添加mysql組和mysql用戶&#xff0c;用于設置mysql安裝目錄文件所有者和所屬組。 ①groupadd mysql ②useradd -r -g mysql mysql 2.將二進制文件解壓到指定的安裝目錄&#xff0c;通用的/usr/local ①解壓二進制文件&#xff0c; tar -zxvf /usr/local/mysql-5.7.13-linux-…