準備寫一個http類型的服務器,基於應用層,知識查看於https://www.php.cn/manual/view/35624.html
ETag
HTTP 響應報頭爲資源的特定版本的標識符。它允許緩存更高效,並節省帶寬,因爲如果內容沒有改變,Web 服務器不需要發送完整的響應。另一方面,如果內容發生了變化,etags 有助於防止資源的同時更新互相覆蓋(“空中衝突”)。
如果給定 URL 處的資源發生更改,則
Etag
必鬚生成新值。因此,Etags 與指紋相似,也可能用於某些服務器的跟蹤目的。它們的比較可以快速確定資源的兩個表示是否相同,但它們也可能被設置爲無限期地由跟蹤服務器持續存在。語法:
ETag: W/"<etag_value>"ETag: "<etag_value>"
Last-Modified
響應HTTP報頭包含在其原始服務器認爲該資源的最後修改日期和時間。它被用作驗證器來確定接收或存儲的資源是否相同。不如
ETag
標題準確,它是一種回退機制。包含條件請求If-Modified-Since
或If-Unmodified-Since
標題使用此字段。
Date
語法: Date: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT
通用 HTTP 報頭包含在該消息起源的日期和時間。
Location
和Content-Location
Location
指示重定向的 URL ,同時Content-Location
指示用於訪問資源的直接 URL ,而未來未進一步內容協商。
Location
是與響應關聯的頭部,Content-Location
與返回的數據相關聯。沒有示例,這種區分看起來很抽象。
Content-Length
實體報頭指示該實體主體的大小,以字節爲單位的十進制數,發送到接收方
If-Range
HTTP 請求報頭使得範圍請求的條件:如果條件被滿足,該範圍的請求將被髮出,並且服務器發送回一個
206
Partial Content
與適當的身體的答案。如果條件未滿足,則會返回具有200
OK
狀態的完整資源。這個頭文件可以與
Last-Modified
驗證器一起使用,也可以與一個ETag
,但不與兩者一起使用。最常見的用例是恢復下載,以確保自從收到最後一個片段後,存儲的資源未被修改。
Content-Range
響應的 HTTP 報頭指示其中一個完整的身體信息的部分消息所屬。
Content-Range: bytes 200-1000/67589Content-Range: <unit> <range-start>-<range-end>/<size>Content-Range: <unit> <range-start>-<range-end>/* Content-Range: <unit> */<size>比如我使用分塊傳輸,文件上傳下載,則需要content-range配合206狀態碼使用。
Transfer-Encoding
頭指定用於將安全地傳輸編碼的形式的實體提供給用戶。
常用的比如chunked ,數據以一系列塊的形式發送。該
Content-Length
標題省略在這種情況下,並在每個需要添加十六進制格式的當前塊的長度,其次是塊“的開始\r\n
”,然後是塊本身,緊接着又“\r\n
”。終止塊是一個常規塊,除長度爲零外。其後是拖車,它由一個(可能是空的)實體標題字段序列組成。compress
使用 Lempel-Ziv-Welch(LZW)算法的格式。值名取自實施此算法的 UNIX 壓縮程序。