不管怎么(me)樣的(de)ETag,在(zai)服(fu)(fu)務器(qi)端(duan)都要進行計算,計算就有開銷,會(hui)帶(dai)來性能(neng)損失。一些(xie)網站把ETag禁用了,這(zhe)其實不符合HTTP1.1的(de)規定,因為HTTP/1.1總(zong)是鼓勵服(fu)(fu)務器(qi)盡可能(neng)的(de)開啟ETag。為了確定ETag對性能(neng)造成的(de)具(ju)體影響。我們在(zai)服(fu)(fu)務器(qi)上(CPU Intel E5-2620 2.00GHz,內存65G,Web Server使(shi)用此CPU的(de)兩個(ge)核心(xin))進行壓力測試(shi),在(zai)逐漸增加并發(fa)用戶數目的(de)情(qing)況(kuang)(kuang)下(xia),查看(kan)CPU消耗率和服(fu)(fu)務器(qi)吞吐(tu)率在(zai)有無設置ETag情(qing)況(kuang)(kuang)下(xia)的(de)具(ju)體對比。
CPU利用率
如下圖(tu)所示,其(qi)為(wei)測(ce)試中服務(wu)器使用(yong)的平(ping)均CPU利(li)用(yong)率(lv),縱坐(zuo)標為(wei)百分比(bi),橫坐(zuo)標為(wei)開始測(ce)試的時(shi)(shi)間,其(qi)中不用(yong)ETag時(shi)(shi),平(ping)均CPU利(li)用(yong)率(lv)為(wei)18.62805%;啟(qi)用(yong)ETag時(shi)(shi),平(ping)均CPU利(li)用(yong)率(lv)為(wei)21.20956%。
吞吐率
如下圖(tu)所示,圖(tu)中橫坐(zuo)標(biao)為并發連接數,可見有無啟用ETag對服務器吞吐率的(de)影響不(bu)大(da)。
CPU利用率
如下圖所示,其為(wei)(wei)測(ce)試中(zhong)服務器(qi)使用(yong)的(de)平(ping)均(jun)(jun)CPU利用(yong)率(lv),縱坐(zuo)標(biao)為(wei)(wei)百分比,橫坐(zuo)標(biao)為(wei)(wei)開(kai)始測(ce)試的(de)時間(jian),其中(zhong)不啟用(yong)ETag時,平(ping)均(jun)(jun)CPU利用(yong)率(lv)為(wei)(wei)8.679665%;啟用(yong)ETag時,平(ping)均(jun)(jun)CPU利用(yong)率(lv)為(wei)(wei)9.776242%。
吞吐率
如下圖(tu)所示(shi),圖(tu)中(zhong)橫坐(zuo)標為(wei)并發(fa)連(lian)接數,可見有(you)無啟用ETag對(dui)服務器吞吐率的影響不大。
從(cong)實(shi)際實(shi)驗可以看出(chu)有(you)無設置(zhi)(zhi)ETAg對服(fu)務器在高(gao)并(bing)發下的吞吐率幾乎無影響(xiang)(xiang),設置(zhi)(zhi)ETag后(hou)的負(fu)面影響(xiang)(xiang)主要為增加(jia)了CPU負(fu)載1%~3%。