撩課-Web大前端天天5道面試題-Day27

1.瀏覽器緩存?

瀏覽器緩存分爲強緩存和協商緩存。當客戶端請求某個資源時,獲取緩存的流程以下:

先根據這個資源的一些 http header 判斷它是否命中強緩存,
若是命中,則直接從本地獲取緩存資源,不會發請求到服務器;

當強緩存沒有命中時,客戶端會發送請求到服務器,
服務器經過另外一些request header驗證這個資源是否命中協商緩存,稱爲http再驗證,
若是命中,服務器將請求返回,但不返回資源,
而是告訴客戶端直接從緩存中獲取,客戶端收到返回後就會從緩存中獲取資源;

強緩存和協商緩存共同之處在於,
若是命中緩存,服務器都不會返回資源;

區別是,強緩存不對發送請求到服務器,但協商緩存會。

當協商緩存也沒命中時,服務器就會將資源發送回客戶端。

當 ctrl+f5 強制刷新網頁時,直接從服務器加載,跳過強緩存和協商緩存;

當 f5 刷新網頁時,跳過強緩存,可是會檢查協商緩存;

 

2.如何實現sleep的效果(es5或者es6)?

(1)while循環的方式
function sleep(ms){
   var start=Date.now(),expire=start+ms;
   while(Date.now()<expire);
   console.log('1111');
   return;
}
執行sleep(1000)以後,休眠了1000ms以後輸出了1111。上述循環的方式缺點很明顯,容易形成死循環。

(2)經過promise來實現
function sleep(ms){
  var temple=new Promise(
  (resolve)=>{
  console.log(111);setTimeout(resolve,ms)
  });
  return temple
}
sleep(500).then(function(){
   //console.log(222)
})
//先輸出了111,延遲500ms後輸出222

(3)經過async封裝
function sleep(ms){
  return new Promise((resolve)=>setTimeout(resolve,ms));
}
async function test(){
  var temple=await sleep(1000);
  console.log(1111)
  return temple
}
test();
//延遲1000ms輸出了1111

(4).經過generate來實現
function* sleep(ms){
   yield new Promise(function(resolve,reject){
             console.log(111);
             setTimeout(resolve,ms);
        })  
}
sleep(500).next().value.then(function(){console.log(2222)})

 

3.http和https的基本概念?

http: 超文本傳輸協議,是互聯網上應用最爲普遍的一種網絡協議,
是一個客戶端和服務器端請求和應答的標準(TCP),
用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議,
它可使瀏覽器更加高效,使網絡傳輸減小。

https: 是以安全爲目標的HTTP通道,簡單講是HTTP的安全版,
即HTTP下加入SSL層,HTTPS的安全基礎是SSL,
所以加密的詳細內容就須要SSL。
https協議的主要做用是:
創建一個信息安全通道,來確保數組的傳輸,確保網站的真實性。

 

4.http和https的區別?

http傳輸的數據都是未加密的,也就是明文的,
網景公司設置了SSL協議來對http協議傳輸的數據進行加密處理,
簡單來講https協議是由http和ssl協議構建的可進行加密傳輸和身份認證的網絡協議,
比http協議的安全性更高。

主要的區別以下:
Https協議須要ca證書,費用較高。
http是超文本傳輸協議,信息是明文傳輸,https則是具備安全性的ssl加密傳輸協議。
使用不一樣的連接方式,端口也不一樣,通常而言,http協議的端口爲80,https的端口爲443
http的鏈接很簡單,是無狀態的;
HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。

 

5.https協議的工做原理?

客戶端在使用HTTPS方式與Web服務器通訊時有如下幾個步驟:

客戶使用https url訪問服務器,則要求web 服務器創建ssl連接。
web服務器接收到客戶端的請求以後,會將網站的證書(證書中包含了公鑰),
返回或者說傳輸給客戶端。
客戶端和web服務器端開始協商SSL連接的安全等級,也就是加密等級。
客戶端瀏覽器經過雙方協商一致的安全等級,創建會話密鑰,
而後經過網站的公鑰來加密會話密鑰,並傳送給網站。
web服務器經過本身的私鑰解密出會話密鑰。
web服務器經過會話密鑰加密與客戶端之間的通訊。
相關文章
相關標籤/搜索