1. 程式人生 > >《HTTP 權威指南》筆記:第十六章&第十七章 國際化、內容協商與轉碼

《HTTP 權威指南》筆記:第十六章&第十七章 國際化、內容協商與轉碼

二進制 首部 指南 生成文檔 緩存 -type nat lang 緩存代理

《HTTP 權威指南》筆記:第十六章 國際化

客戶端通過在請求報文中的 Accept-Language 首部和 Accept-Charset 首部來告知服務器:“我理解這些語言.”
服務器通過 Content-type 首部中的 charset 參數和 Content-Language 來告知客戶端文件可用的字母表和語言.
兩者進行協商,得到最佳的結果.

MIME charset

術語

字符編碼方案:將二進制代碼轉化為字符代碼
字符集:將字符代碼轉換為字符
MIME 字符集:是將特定的編碼方案和特定的已編碼字符集組合而成.

常見的 MIME charset:

  • us-ascii
  • iso-8859-1
  • utf-8

如果客戶端無法推斷出字符編碼,就假定使用的是 ios-8859-1.

類型

  1. 固定寬度
  2. 可變寬度+無模態:對不同的字符代碼采用不同數量的比特.
  3. 可變寬度+有模態:可以通過轉義處理相互有重疊的字符集

語言標記

定義:語言標記是命名口語的標準化字符串短語.
子標記定義:語言標記包括一個或多個部分,每個部分稱為一個子標記.
類型:

  1. 主子標記:第一個子標記,其值是標準化的;通常表示語言的類型.
  2. 可選子標記:第二個子標記,通常表示某一種語言所在的地區的方言
  3. 其他子標記都是未註冊的.·

應用:
在響應報文中的 Content-Language 這個 header 和請求報文中的 Accept-Language 中出現.

《HTTP 權威指南》筆記:第十七章 內容協商與轉碼

內容協商的目標是在保證一個 URL 的情況下,為客戶端提供不同的、最適合的頁面.
可以通過三種方法來進行內容協商:

  1. 客戶端驅動(存在多個 URL 的問題)
  2. 服務器驅動
  3. 透明協商

服務器驅動的協商

服務器通過對客戶端的請求報文進行解析,得到相關的信息,然後決定回應的報文主體,主要的方式有兩種:

  1. 通過內容協商首部
  2. 通過其他首部進行變通,例如 User-Agent 首部

內容協商首部——Accpet

內容協商首部是客戶端發向服務器的請求報文中的 Accept 首部,它包括:

  • Accept
  • Accept-Language
  • Accept-Charset
  • Accept-Encoding

透明協商

定義:透明協商是緩存代理在來代表服務器對客戶端進行協商的過程,其能夠減少服務器的負擔.
當緩存中的內容協商首部的值與請求中的協商首部的值不同的時候,需要從原始服務器中請求一份新的文檔.

Vary 首部

在緩存存儲來自服務器的文件時,在緩存中包含了 Vary 首部.
當第二次有不同的內容協商的請求報文的時候,能夠從服務器更新並儲存一個 alternate,另外一個名稱叫做 variant

內容轉碼

內容協商的機制中存在一個缺陷:服務器無法滿足客戶端的內容協商的要求,沒有能提供的相應的格式的文件.
這種情況下,可以通過內容轉碼來進行實現.
常見的類型有下面三種:

  1. 格式轉換:將 HTML 格式文件轉化為 WML 格式文件,便於無線的客戶端查看
  2. 信息綜合: 將小節標題生成文檔的大綱
  3. 內容註入:不減少內容,,例如自動廣告生成器和用戶追蹤系統





《HTTP 權威指南》筆記:第十六章&第十七章 國際化、內容協商與轉碼