keep-alive可以讓TCP連接被復(fù)用,避免不必要的斷開與重新連接。從這個設(shè)定上看它絕對是個好東西,但并不是所有連接都適合用keep-alive。在不適合keep-alive的場景使用keep-alive反而會帶來負(fù)面影響。它實(shí)際上就是一種以內(nèi)存換取網(wǎng)絡(luò)的策略。
當(dāng)一個頁面打開時,頁面需要請求js、css以及頁面上的圖片等。網(wǎng)絡(luò)請求是需要時間的,這些請求不會瞬間完成,但他們卻是瞬間發(fā)起的。瀏覽器的并發(fā)數(shù)限制一般允許6個并發(fā)請求,客戶端需要的前6個資源會被同時使用不同的連接向服務(wù)器發(fā)起請求。如果服務(wù)器對所有請求都使用keep-alive,那么打開一個頁面就相當(dāng)于建立6個長連接。如果頁面上需要加載的資源很多,或者程序有多個連接同時使用的需求,這個6個連接當(dāng)然可以有效的復(fù)用。但如果需要加載的資源少于6個呢?這就意味著,這些連接一次都不會被復(fù)用到,而服務(wù)器卻需要維持這個連接。這種情況keep-alive就沒有作用了。
普通的網(wǎng)頁通常都會超過6個資源需要加載,網(wǎng)頁中存在大量圖片是很正常的。但如果這資源開啟了cache,也就是說頁面二次訪問時他們不會重新發(fā)起請求,那么頁面需求的資源就很有可能小于6個,這種情況下keep-alive就成了個累贅。所以使用keep-alive時也要考慮緩存方面的設(shè)置,對于特殊的情況可能需要服務(wù)器判斷是否要為特定連接使用keep-alive。
keep-alive可以自己控制超時的時間。注意這個時間不是整個連接的壽命,而是當(dāng)這個連接空閑那么個時間后自動斷開。對于普通的靜態(tài)資源請求使用5到15秒超時的keep-alive比較合適,這些時間主要用于彌補(bǔ)網(wǎng)絡(luò)延遲。瀏覽器對這些資源的訪問是接踵而至的,中間幾乎不會有間隔的時間,所以完全沒必要太長的超時。對于一些程序連接也同樣可以使用這樣的短超時,比如上一篇文章中的keep-alive和長輪詢一起使用的情況??傊?,只要請求是接連不斷的向服務(wù)器發(fā)起的,超時就沒必要太長。
對于特定的程序,也可以設(shè)置個比較長的超時。這種情況就應(yīng)該考慮一個成本問題。是先斷開連接等到需要時重新建立,還是讓服務(wù)器維持一段時間的連接。前者的開銷在于網(wǎng)絡(luò),后者的開銷在于內(nèi)存,這就比較不好把握了。比如一個瀑布流的頁面,滾動條拖到末尾會自動加載內(nèi)容,這時可能就會用一個超時比較長的keep-alive,因?yàn)橛脩艉芸赡軙^續(xù)加載更多,但是在此之前會先瀏覽已經(jīng)加載了的數(shù)據(jù)。
最后總結(jié)一下,在請求多而連續(xù)時適合使用keep-alive,其它情況一般沒必要使用,如果非要使用就得斟酌超時的設(shè)定。
本文來源于成都網(wǎng)站建設(shè)公司與成都網(wǎng)站設(shè)計(jì)制作公司-創(chuàng)新互聯(lián)成都公司!
網(wǎng)頁名稱:HTTPkeep-alive的適用性
文章URL:http://www.rwnh.cn/news44/324044.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、營銷型網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、動態(tài)網(wǎng)站、網(wǎng)站建設(shè)、商城網(wǎng)站
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)