由于Cookie的實現(xiàn)機制,一旦服務(wù)器端向客戶端發(fā)送了設(shè)置Cookie的意圖,除非Cookie過期,否則客戶端每次請求都會發(fā)送這些Cookie到服務(wù)器端,一旦設(shè)置的Cookie過多,會將導(dǎo)致報頭較大。大多數(shù)的Cookie并不需要每次都用上,因為這會造成寬帶的部分浪費。
-
減少
Cookie的大小
如果在域名的根節(jié)點設(shè)置
Cookie,幾乎所有子路徑下的請求都會帶上這些Cookie,這些Cookie在某些情況下是有用的,但在有些情況下是完全無用的,但是一旦有Cookie設(shè)置到相同域名下,他的請求就會帶上Cookie。
-
為靜態(tài)組件使用不同的域名
多個域名優(yōu)點:
- 為不需要
Cookie的組件換個域名可以實現(xiàn)減少無效Cookie的傳輸。所以很多網(wǎng)站的靜態(tài)文件會有特別的域名,使得業(yè)務(wù)相關(guān)的Cookie不再影響靜態(tài)資源。- 使用不同的域名不但可以減少
Cookie的發(fā)送,還可以突破瀏覽器下載線程數(shù)量的限制,因為域名不同,下載線程限制數(shù)量翻倍。
多個域名缺點:
額外的域名還是有一定的缺點,那就是將域名轉(zhuǎn)換為IP需要進行DNS查詢,多一個域名就多一次DNS查詢。頁面的性能規(guī)則上就有一條:減少dns查詢,但是好在大多數(shù)瀏覽器都活進行DNS緩存,以削弱這個副作用的影響。
-
Cookie的弊端
Cookie除了通過后端添加協(xié)議頭的字段設(shè)置外,前端瀏覽器中也可以通過JS進行修改,修改過后,后續(xù)的請求中就會攜帶上修改過后的值,目前廣告和在線統(tǒng)計領(lǐng)域是最為依賴Cookie的,通過簽入第三方的廣告或者統(tǒng)計腳本,將Cookie和當(dāng)前頁綁定,這樣可以標(biāo)識用戶,得到用戶的瀏覽行為,廣告商就可以定向投放了。 Cookie只能做到標(biāo)識,而不能做到任何具有破壞性的事情,但是Cookie并非完美。
除了前面的體積過大的問題,最嚴(yán)重的的問題就是
Cookie可以在前后端進行修改,因此數(shù)據(jù)就容易被篡改和偽造。所以Cookie對于敏感數(shù)據(jù)的保護是無效的。
總結(jié)
日常性能提升看上去,提升意義不大,但是性能細(xì)節(jié)方面影響諸多,聚小成多。整體性能提升不可小覷。