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