成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Http 響應(yīng)頭中的 ETag 值是如何生成的

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
1. 盡量便于計(jì)算,不會(huì)特別耗 CPU。這樣子利用摘要算法生成 (MD5, SHA128, SHA256) 需要慎重考慮,因?yàn)樗麄兪?CPU 密集型運(yùn)算。

?關(guān)于 etag 的生成需要滿足幾個(gè)條件,至少是寬松滿足

  1. 當(dāng)文件更改時(shí),etag 值必須改變。
  2. 盡量便于計(jì)算,不會(huì)特別耗 CPU。這樣子利用摘要算法生成 (MD5, SHA128, SHA256) 需要慎重考慮,因?yàn)樗麄兪?CPU 密集型運(yùn)算
  3. 必須橫向擴(kuò)展,分布式部署時(shí)多個(gè)服務(wù)器節(jié)點(diǎn)上生成的 etag 值保持一致。這樣子 inode 就排除了

以上幾個(gè)條件是理論上的成立條件,那在真正實(shí)踐中,應(yīng)該如何處理?

我們來看一下 nginx 中是如何做的

nginx 中 ETag 的生成

我翻閱了 nginx 的源代碼,并翻譯成偽代碼如下:由 last_modified 與 content_length 拼接而成

etag = header.last_modified + header.content_lenth

可見源碼位置,并在以下貼出: ngx_http_core_modules.c

etag->value.len = ngx_sprintf(etag->value.data, "\"%xT-%xO\"",
r->headers_out.last_modified_time,
r->headers_out.content_length_n)
- etag->value.data;

總結(jié):nginx 中 etag 由響應(yīng)頭的 Last-Modified 與 Content-Length 表示為十六進(jìn)制組合而成。

隨手在我的k8s集群里找個(gè) nginx 服務(wù)測(cè)試一下

$ curl --head 10.97.109.49
HTTP/1.1 200 OK
Server: nginx/1.16.0
Date: Tue, 10 Dec 2019 06:45:24 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 23 Apr 2019 10:18:21 GMT
Connection: keep-alive
ETag: "5cbee66d-264"
Accept-Ranges: bytes

由 etag 計(jì)算 Last-Modified 與 Content-Length,使用 js 計(jì)算如下,結(jié)果相符

> new Date(parseInt('5cbee66d', 16) * 1000).toJSON()
"2019-04-23T10:18:21.000Z"
> parseInt('264', 16)
612

Nginx 中的 ETag 算法及其不足

協(xié)商緩存用來計(jì)算資源是否返回 304,我們知道協(xié)商緩存有兩種方式

  • Last-Modified/if-Modified-Since
  • ETag/If-None-Match

既然在 nginx 中 ETag 由 Last-Modified 和 Content-Length 組成,那它便算是一個(gè)加強(qiáng)版的 Last-Modified 了,那加強(qiáng)在什么地方呢?

Last-Modified 是由一個(gè) unix timestamp 表示,則意味著它只能作用于秒級(jí)的改變,而 nginx 中的 ETag 添加了文件大小的附加條件

那下一個(gè)問題:如果 http 響應(yīng)頭中 ETag 值改變了,是否意味著文件內(nèi)容一定已經(jīng)更改

答案:不能。

因此使用 nginx 計(jì)算 304 有一定局限性:在 1s 內(nèi)修改了文件并且保持文件大小不變。但這種情況出現(xiàn)的概率極低就是了,因此在正常情況下可以容忍一個(gè)不太完美但是高效的算法。

文章出自:??前端餐廳??,如有轉(zhuǎn)載本文請(qǐng)聯(lián)系前端餐廳ReTech今日頭條號(hào)。

github:https://github.com/zuopf769

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2021-07-23 15:55:31

HTTPETag前端

2021-05-26 05:18:51

HTTP ETag Entity Tag

2017-02-08 14:29:04

2021-07-27 14:50:15

axiosHTTP前端

2019-12-13 09:14:35

HTTP2協(xié)議

2019-07-02 08:24:07

HTTPHTTPSTCP

2019-04-08 15:11:12

HTTP協(xié)議Web

2015-07-09 10:32:23

Windows Ser云計(jì)算應(yīng)用架構(gòu)

2019-01-27 14:37:47

數(shù)據(jù)HTTP服務(wù)

2010-05-07 12:20:38

負(fù)載均衡etag

2022-07-03 16:26:43

比特幣貨幣加密貨幣

2009-06-04 10:41:52

Struts工作原理

2023-09-19 22:41:30

控制器HTTP

2015-09-15 15:20:35

2024-05-16 07:55:54

NettyRedisRESP協(xié)議

2011-10-14 09:23:14

2023-11-08 09:49:19

Java實(shí)踐

2024-09-30 08:43:33

HttpgolangTimeout

2021-01-18 05:13:04

TomcatHttp

2021-05-12 08:20:53

開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: av影音资源 | 玖玖国产精品视频 | 国产中文字幕在线观看 | 在线观看av网站 | 国产精品夜夜春夜夜爽久久电影 | 国产成人精品久久 | 日韩一区和二区 | 欧美一级大片免费观看 | 九色在线视频 | 国产精品久久久久久久久污网站 | 日韩一区二区三区视频 | 成人亚洲片 | 中文字幕精 | 99精品欧美一区二区三区综合在线 | 国产69精品久久99不卡免费版 | 综合久久久 | 99精品国产一区二区青青牛奶 | 久久综合久色欧美综合狠狠 | 精品国产一区一区二区三亚瑟 | 在线看中文字幕 | 99国产精品一区二区三区 | 国家一级黄色片 | 国产69久久精品成人看动漫 | 四虎影院免费在线播放 | 国产精品99久久久久久宅男 | 国产清纯白嫩初高生视频在线观看 | 成人高清在线 | 免费在线国产视频 | 亚洲国产精品一区在线观看 | 国产视频1 | 超碰导航 | 久久国产精品视频免费看 | 国产精品91视频 | 成人免费看电影 | 亚洲成人一区 | 中文字幕在线观看一区 | 国产一区二区三区色淫影院 | 人成精品 | 亚洲综合色网站 | 成人小视频在线观看 | 久久av网 |