Http1 1客戶端快取總結以及hapi實踐

2021-09-11 11:37:53 字數 2210 閱讀 9740

簡介:

http快取可被分為客戶端快取以及伺服器快取。

伺服器快取一般指的是通過反向**伺服器或 cdn 快取,將需要頻繁訪問的網路內容存放在離使用者較近、訪問速度更快的系統中,以提高內容訪問速度,從而減輕實際的 web server 的壓力;

客戶端快取一般指的是瀏覽器快取,這種快取會根據進來的請求儲存輸出內容的複本,例如html頁面、檔案等,然後,當下乙個請求來到時,如果是相同的url,快取直接使用複本相應請求訪問,而不是向源伺服器再次傳送請求,從而提公升web應用程式效能和可伸縮性。

http1.1客戶端快取:

常見的 http 快取只能儲存get響應,對於其他型別的響應則無能為力。快取的關鍵主要包括request method和目標uri(一般只有get請求才會被快取)。 普遍的快取案例:

快取控制:

cache-control策略:請求頭以及響應頭都支援該屬性。通過它來定義基本的快取策略,即:

具體使用:

強制確認快取(如下頭部定義,此方式下,每次有請求發出時,快取會將此請求發到伺服器,伺服器端會驗證請求中所描述的快取是否過期,若未過期,則快取才使用本地快取副本):

私有快取以及公有快取:

設定過期機制:

設定快取驗證:

etag:http響應頭是資源的特定版本的識別符號。這可以讓快取更高效,並節省頻寬,因為如果內容沒有改變,web伺服器不需要傳送完整的響應。而如果內容發生了變化,使用etag有助於防止資源的同時更新相互覆蓋。

基本快取策略:

hapi實踐:

hapi框架中,預設的快取處理是cache-control: no-cache,也就是強制確認快取。所以只需要對靜態檔案進行處理。

server.route(',

method: 'get',

handler: function (request, h) );

if (request.params.ttl)

return response;

},options:

}});複製**

通過配置route中的options屬性:

expiresin(快取時間max-age

statuses:允許快取的http響應狀態碼(預設200)

等所以在控制路由的時,可以將靜態檔案區分開,然後再通過路徑去控制具體快取策略。例如

const path = require('path');

const relativepath = ;

module.exports = [

',handler: (request, h) => = request.params;

const = relativepath;

const filepath = path.join(image, filename);

return h.file(filepath);

},options: ,

tags: ['api', 'static', 'image'],

description: '靜態資源',}},

',handler: (request, h) => = request.params;

const = relativepath;

const filepath = path.join(cssfile, filename);

return h.file(filepath);

},options: ,

tags: ['api', 'static', 'style'],

description: '靜態樣式資源',}},

',handler: (request, h) => = request.params;

const = relativepath;

const filepath = path.join(jsfile, filename);

return h.file(filepath);

},options:

},];複製**

參考:segmentfault.com/a/119000001…

developer.mozilla.org/zh-cn/docs/…

HTTP快取機制 客戶端快取

http快取機制分為兩種,客戶端快取和服務端快取,本文主要對客戶端快取進行簡單的分析。服務端快取又分為 伺服器快取 和 反向 伺服器快取 也叫閘道器快取,比如 nginx反向 squid等 其實廣泛使用的 cdn 也是一種服務端快取,目的都是讓使用者的請求走 捷徑 並且都是快取 檔案等靜態資源。客戶...

客戶端快取

你的 在併發訪問很大並且無法承受壓力的情況下,你會選擇如何優化?很 多人首先會想從伺服器快取方面著手對程式進行優化,許多不同的伺服器快取方式都有他們自己的特點,像我曾經參與的一些專案中,根據快取的命中率不同使用過 com enterprise libiary caching windows服務,靜態...

php http 快取 客戶端快取

expires 過期時間 cache control 響應頭資訊 max age 秒 快取過期時間 請求時間開始到過期時間的秒數 s maxage 秒 快取過期時間 public 標記認證內容能被快取,一般而言輸出是不能被快取的,no cache 無快取,表示直接讀取資料源,no store 強制快...