共用方式為


適用於 HTTP 的以 zstd 為基礎的共用字典壓縮考慮

本文提供適用於 HTTP (ZSDCH) 功能之以 zstd 為基礎的共用字典壓縮的企業考慮。

基礎結構考慮主要也適用於已由 Chromium 項目實作的壓縮字典傳輸功能。 壓縮字典傳輸功能可透過 Microsoft Edge 119 和更新版本中的原始試用機制提供給網站使用。

什麼是 ZSDCH?

ZSDCH 是 Microsoft Edge 中的實驗性功能,可讓瀏覽器使用共用字典來解壓縮透過 HTTPS 提供的回應。 當使用者造訪網站 (bing.com 時,例如) 使用此功能時,透過伺服器將頁面傳回給使用者的頻寬需求降低,讓他們受益於改善的效能。

壓縮字典傳輸功能以相同的案例為目標,並以類似的方式運作。

ZSDCH 如何運作?

ZSDCH 的運作方式是讓瀏覽器在 「Accept-Encoding」 要求標頭中傳送新的值 「zsdch」,以向伺服器指出瀏覽器支援 ZSDCH 壓縮。

如果伺服器想要針對未來的回應使用 ZSDCH,它會提供具有非 ZSDCH 內容編碼的一般回應,但提供額外的「get-dictionary」回應標頭。 此標頭提供瀏覽器位置的指標,以擷取 ZSDCH 字典供日後使用。

在瀏覽器擷取並快取字典之後,未來對伺服器的要求會在 “avail-dictionary” 標頭中包含可用字典的清單。 如果伺服器可以使用其中一個可用的字典來提供壓縮的回應,它會使用 字典提供回應,並指定 「zsdch」 的 「Content-Encoding」。。

壓縮字典傳輸功能如何運作?

同樣地,當用戶端在要求期間可以使用壓縮字典傳輸字典時,壓縮字典傳輸會公告額外的「接受編碼」要求標頭值, (“sbr” 和/或 “zstd-d”) 以及 “Sec-Available-Dictionary” 要求標頭。

這些功能正在測試哪些網站?

為了驗證各種網路拓撲的效能提升和相容性,Edge 會在向 bing.com、bing.cn 和 msn.com 要求內容時公告 ZSDCH 支援。 Edge 也支援本機測試,方法是使用 「localhost」 主機名將它公告給伺服器。

壓縮字典傳輸功能正由各種網站測試,包括使用原始試用版機制的非Microsoft網站。

可能與網路中間箱互動

有些企業會使用網路中間箱來提供快取和/或網路流量檢查功能。 有時候,這些產品必須能夠剖析回應;否則,它們可能會以中斷頁面的方式修改或封鎖回應。

需要 Content-Encoding 為其了解編碼的中間框必須確保它們修改要求的 Accept-Encoding 標頭值,以移除不支持的編碼。 否則,網頁伺服器可能會選擇提供中間箱無法譯碼的回應。

對於不需要檢查回應的快取層,它們也必須正確支援 「Vary」 標頭,以確保在 「Vary」 值中包含 「avail-dictionary」 和/或 “sec-available-dictionary” 標頭名稱的伺服器回應正確處理,且壓縮的回應不會傳回給沒有適當字典的用戶端。

這些做法是泛型的,而且也適用於瀏覽器所支援的任何新未來內容編碼。

Proxy 或中間箱只有在使用私人攔截憑證解密 TLS 流量時,才能干擾 TLS 連線的壓縮。

若要將未遵循上述最佳做法的企業環境風險降到最低,Edge 會在偵測到這類解密中間框時停用 ZDSCH 功能。

針對壓縮字典傳輸功能,會提供明確的企業原則 (CompressionDictionaryTransportEnabled) 。 受影響的企業可以使用原則來停用功能,同時與廠商合作來更新其產品,以正確處理不熟悉的新內容編碼。

確認 ZSDCH 在您的環境中造成問題

如果您認為 ZSDCH 在您的環境中造成不想要的問題,您可以透過下列步驟在 Edge 中停用 ZSDCH:

  1. 開啟 edge://flags
  2. 搜尋 “#edge-enable-zsdch-content-encoding”。
  3. 將功能的值設定為 [已停用]。
  4. 重新啟動Edge,讓變更生效。
  5. 執行遇到問題的案例,以判斷其是否仍發生或已解決。