【總結(jié)】面試中常遇到的一些冷門問題(1)
一、緩存
1、強(qiáng)緩存:強(qiáng)制瀏覽器在一定時間內(nèi)直接從本地緩存讀取數(shù)據(jù),不向服務(wù)器發(fā)送請求。強(qiáng)緩存可以通過設(shè)置響應(yīng)頭信息實(shí)現(xiàn),常見的響應(yīng)頭有 Expires 和 Cache-Control。
2、協(xié)商緩存:在強(qiáng)緩存失效時,瀏覽器會向服務(wù)器發(fā)送請求,詢問服務(wù)器該資源在最后一次訪問后是否有修改。如果沒有修改,服務(wù)器會返回 304 狀態(tài)碼,告訴瀏覽器可以繼續(xù)使用本地緩存,否則會返回新的資源內(nèi)容。協(xié)商緩存可以通過設(shè)置響應(yīng)頭信息實(shí)現(xiàn),常見的響應(yīng)頭有 Last-Modified 和 ETag。
3、瀏覽器緩存的主要流程可以概括為以下幾個步驟:
????3.1、瀏覽器收到 HTTP 請求時,會根據(jù) URL 判斷該資源是否已經(jīng)被緩存。如果已經(jīng)被緩存,則直接從本地緩存讀取資源。
????3.2、如果未被緩存或者緩存已經(jīng)過期,瀏覽器會向服務(wù)器發(fā)送請求,并在請求中帶上一些信息,例如上次訪問時間、Etag 等。
????服務(wù)器收到請求后,根據(jù)請求中的信息判斷資源是否有更新。如果資源沒有更新,則返回一個 304 響應(yīng)碼,告訴瀏覽器可以繼續(xù)使用本地緩存;如果資源已經(jīng)更新,則返回新的資源內(nèi)容和一些緩存相關(guān)的頭信息。
????3.3、瀏覽器收到響應(yīng)后,會根據(jù)響應(yīng)頭信息來更新本地緩存,并將新的資源內(nèi)容展示給用戶
二、跨域
跨域是指訪問一個不同于當(dāng)前頁面所在域名、協(xié)議或端口的資源。常見的跨域問題包括 Ajax 請求、跨域?qū)懭?Cookie 等。
解決跨域問題的一些方法包括:
1、JSONP:通過動態(tài)生成 script 標(biāo)簽,實(shí)現(xiàn)跨域獲取數(shù)據(jù)。
JSONP的限制:
????1.1、只能用于 GET 請求:由于 JSONP 利用
