瀏覽器允許的併發請求資源數
瀏覽器的併發請求數目限制是針對同一域名的。
意即,同一時間針對同一域名下的請求有一定數量限制。超過限制數目的請求會被阻塞,這就是為什麼會有zhimg.com, http://twimg.com
之類域名的原因。
(這是其中一個原因,另一個主要原因是,向 http://zhihu.com
請求資源會把 http://zhihu.com
下本地的所有 cookie 傳送過去,這是請求圖片,js等資源不需要的,會造成很大的浪費,詳情見)
如圖,有的請求會持續很長時間,如果把 img, css, js...
都放到 http://zhihu.com
一個域名下面,其他請求就遲遲無法完成,瀏覽者看來就是『卡住了』。而把圖片放到 http://zhimg.com
img, css, js...
就可以併發請求了。
具體不同瀏覽器這個限制的數目
基於埠數量和執行緒切換開銷的考慮,瀏覽器不可能無限量的併發請求,因此衍生出來了併發限制
和HTTP/1.1的Keep alive
。 所以,IE6/7
在HTTP/1.1下的併發才2
,但HTTP/1.0卻是4
。 而隨著技術的發展,負載均衡
和各類NoSQL
的大量應用,基本已經足以應對C10K
的問題。 但卻並不是每個網站都懂得利用domain hash
也就是多域名來加速訪問
。因此,新的瀏覽器加大了併發數的限制,但卻仍控制在8以內。
瀏覽器即使放棄保護自己,將所有請求一起發給伺服器,也很可能會引發伺服器的併發閾值控制而被BAN
keep alive技術
的存在使得瀏覽器複用現有連線和伺服器通訊比建立新連線的效能要更好一些。
所以,瀏覽器的併發數其實並不僅僅只是良知的要求,而是雙方都需要保護自己的默契,並在可靠的情況下提供更好的效能。
稍微跑跑題據說有益身心健康。
=================== 我是健康的分割線 ========================
前端技術的逐漸成熟,還衍生了domain hash, cookie free, css sprites, js/css combine, max expires time, loading images on demand等等技術。這些技術的出現和大量使用都和併發資源數有關。
按照普通設計,當網站cookie資訊有1 KB、網站首頁共150個資源時,使用者在請求過程中需要傳送150 KB的cookie資訊, 在512 Kbps的常見上行頻寬下,需要長達3秒左右才能全部發送完畢。 儘管這個過程可以和頁面下載不同資源的時間併發,但畢竟對速度造成了影響。 而且這些資訊在js/css/images/flash等靜態資源上,幾乎是沒有任何必要的。 解決方案是啟用和主站不同的域名來放置靜態資源,也就是cookie free。 將css放置在頁面最上方應該是很自然的習慣,但第一個css內引入的圖片下載是有可能堵塞後續的其他js的下載的。 而在目前普遍過百的整頁請求數的前提下,瀏覽器提供的僅僅數個併發,對於進行了良好優化 甚至是前面有CDN的系統而言,是極大的效能瓶頸。 這也就衍生了domain hash技術來使用多個域名 加大併發量(因為瀏覽器是基於domain的併發控制,而不是page),不過過多的散佈會導致DNS解析上 付出額外的代價,所以一般也是控制在2-4之間。 這裡常見的一個性能小坑是沒有機制去確保URL的哈 希一致性(即同一個靜態資源應該被雜湊到同一個域名下),而導致資源被多次下載。 再怎麼提速,頁面上過百的總資源數也仍然是很可觀的,如果能將其中一些很多頁面都用到的 元素如常用元素如按鈕、導航、Tab等的背景圖,指示圖示等等合併為一張大圖,並利用css background的定位 來使多個樣式引用同一張圖片,那也就可以大大的減少總請求數了,這就是css sprites的由來。 全站的js/css原本並不多,其合併技術的產生卻是有著和圖片不同的考慮。 由於cs/js通常可能對dom佈局 甚至是內容造成影響,在瀏覽器解析上,不連貫的載入是會造成多次重新渲染的。因此,在網站變大需要保持 模組化來提高可維護性的前提下,js/css combine也就自然衍生了,同時也是minify、compress等對 內容進行多餘空格、空行、註釋的整理和壓縮的技術出現的原因。 隨著cookie free和domain hash的引入,網站整體的開啟速度將會大大的上一個臺階。 這時我們通常看到的問題是大量的請求由於全站公有header/footer/nav等關係, 其對應檔案早已在本地快取裡存在了,但為了確保這個內容沒有發生修改,瀏覽器還是需要請求一次伺服器, 拿到一個304 Not Modified才能放心。 一些比較大型的網站在建立了比較規範的釋出制度後, 會將大部分靜態資源的有效期設定為最長,也就是Cache-Control max-age為10年。 這樣設定後, 瀏覽器就再也不會在有快取的前提下去確認檔案是否有修改了。 超長的有效期可以讓使用者在訪問曾訪 問過的網站或網頁時,獲得最佳的體驗。 帶來的複雜性則體現在每次對靜態資源進行更新時,必須釋出 為不同的URL來確保使用者重新載入變動的資源。 即使是這樣做完,仍然還存在著一個很大的優化空間,那就是很多頁面瀏覽量很大,但其實使用者直接 很大比例直接就跳走了,第一屏以下的內容使用者根本就不感興趣。 對於超大流量的網站如淘寶、新浪等 ,這個問題尤其重要。 這個時候一般是通過將圖片的src標籤設定為一個loading或空白的樣式, 在使用者翻頁將圖片放入可見區或即將放入可見區時再去載入。 不過這個優化其實和併發資源數的關係就比較小了, 只是對一些散佈不合理,或第一頁底部的資源會有一定的幫助。 主要意圖還是降低頻寬費用。
總的來說,各類技術都是為了能讓使用者更快的看到頁面進行下一步操作,但卻不必將寶貴的資源浪費在沒有必要的重複請求、不看的內容上。
京東對靜態資源的處理,通過以下
js程式碼
使得頁面上的圖片資源
來自於不同域名的伺服器,就是對以上所說的優化: 相關推薦
瀏覽器允許的併發請求資源數是有限制的-分析
開始之前,我們先看下各個瀏覽器公佈的資源併發數限制個數,如下圖 瀏覽器的併發請求數目限制是針對同一域名的。 意即,同一時間針對同一域名下的請求有一定數量限制。超過限制數目的請求會被阻塞,這就是很多網站專門解決這個問題的原因。 有的請求會持續很長時間,如
瀏覽器允許的併發請求資源數
瀏覽器的併發請求數目限制是針對同一域名的。 意即,同一時間針對同一域名下的請求有一定數量限制。超過限制數目的請求會被阻塞,這就是為什麼會有zhimg.com, http://twimg.com 之類域名的原因。 (這是其中一個原因,另一個主要原因是,向 ht
瀏覽器允許的並發請求資源數是什麽意思?
端口 應用 ons 另一個 通信 完全 src ast 目的 這個問題藥系統的回答,還需要從前後端兩方面思考 這個問題實際上涉及非常多的考慮和因此而發生的優化技術: 首先,是基於端口數量和線程切換開銷的考慮,瀏覽器不可能無限量的並發請求,因此衍生出來了並發限制和HTTP
如何檢視Web伺服器併發請求連線數
1、檢視Web伺服器(Nginx Apache)的併發請求數及其TCP連線狀態: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' netstat -n|grep ^tcp|a
瀏覽器同域名請求的最大併發數限制
當我們在瀏覽網頁的時候,對瀏覽速度有一個重要的影響因素,就是瀏覽器的併發數量。併發數量簡單通俗的講就是,當瀏覽器網頁的時候同時工作的進行數量。 如果同時只有2個併發連線數數量,那網頁開啟的時候只能依賴於
[轉] 靜態資源的分佈對網站載入速度的影響/瀏覽器對同一域名下併發載入資源數量
靜態資源的分佈對網站載入速度的影響 / 瀏覽器對同一域名下併發載入資源數量 / browsers network-http-persistent-max-connections-per-server 引文:瀏覽器在同一個域名下併發載入的資源數量是有限的,訪問淘寶首頁需要載入126個資源,那麼如此小的併發連線
ssh瀏覽器不允許訪問本地資源的解決
做了個上傳圖片的系統,回顯的時候發現地址明明寫對了卻得不到圖片,瀏覽器報錯: Not allowed to load local resource 不允許訪問本地資源。這是瀏覽器為了安全不讓直接訪問本地的檔案,可以通過修改tomcat的server.xml來配置虛擬對映,讓我們能通
檢視Apache併發請求數及其TCP連線狀態
這兩天搭建了一組Apache伺服器,每臺伺服器4G記憶體,採用的是prefork模式,一開始設定的連線數太少了,需要較長的時間去響應使用者的請求,後來修改了一下Apache 2.0.59的配置檔案httpd.conf: 引用 # prefork MPM # Start
Apache的工作模式和最大併發請求數設定
什麼是apache的工作模式? 個人理解:apache的工作模式就是apache在執行時候的記憶體分配,程序和執行緒的使用方式。舉個例子:一臺apache正在執行的伺服器,如果有個使用者訪問這個apache,那麼apache是啟用一個程序來處理使用者的請求呢?還是在已有的
檢視 併發請求數及其TCP連線狀態
如何合理設定apache httpd的最大連線數? 手頭有一個網站線上人數增多,訪問時很慢。初步認為是伺服器資源不足了,但經反覆測試,一旦連線上,不斷點選同一個頁面上不同的連結,都能迅速開啟,這種現象就是說明apache最大連線數已經滿了,新的訪客只能排隊等待有空閒的連結,而如果一旦連線上,在keeyali
靜態資源的分佈對網站載入速度的影響/瀏覽器對同一域名下併發載入資源數量
靜態資源的分佈對網站載入速度的影響 / 瀏覽器對同一域名下併發載入資源數量 / browsers network-http-persistent-max-connections-per-server 引文:瀏覽器在同一個域名下併發載入的資源數量是有限的,訪問淘寶首頁需要載入
淺析ajax請求json數據並用js解析 [轉]
set gif .ajax -1 pen 技術分享 hide asc spa <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-
JMter請求參數中文顯示亂碼
參數 blog 效果 不出 tar logs 宋體 area ext 如上圖所示,上傳的參數為中文的時候,顯示不出來,解決方法如下: 1.進入Jmter安裝文件bin文件夾,找到文件jmeter.properties 2.在該文件找到jsyntaxtextarea.fon
簡單AJAX請求JSon數據
異步處理 xmlhttp enc public color span left exp lis Ajax 全名為Asynchronous JavaScript and XML(異步的 JavaScript 和 XML)。 它是一種在無需重新加載整個網頁的情況下,能夠更新部分
android OkHttpUtils 使用JSON數據作為請求參數
解碼 pre servlet tar con supported lag decode sse 如果就直接將JSON作為請求字符串,服務端會出現中文亂碼。所以只需要將請求的整個JSON參數字符串編碼一次,然後服務端解碼一次。我這裏服務端使用的servlet,下面會兩段代碼貼
【原】Http-用getInputStream()或者getParameterMap()獲得Post請求的數據
數據 clas data ons 找到 clu 類的屬性 瀏覽器 比較 【前言】 最近在寫一個接口,寫好以後想測試,自己寫ajax(Post方法)來調用接口倒是可以用action所在類的屬性的get/set方法獲得數據。但是不只是頁面的ajax會調用這個接口,還有外系統會調
Socket請求獲取數據
nbsp buffer 對象 edr 主線程 log pre iter write 用socket連接服務器的時候,需要在子線程進行網絡請求,請求完成之後可以通過Handler來處理主線程應該得到的通知(更新view) private void StartRequest
Jmeter 實現上步請求返回結果 用於下步請求參數
http 默認值 控制器 正則 ges png 技術分享 -1 使用 1、新建測試計劃,測試計劃下方新增:HTTP請求默認值、HTTP信息頭管理器、HTTP cookie管理器,見圖 2、新建線程組,線程組下方新建事務控制器,見圖 每一個事務控制器下方新增htt
跨域請求資源的幾種方式
get 合同 是否 超時 表單提交 沒有 容易 系列 htm 跨域請求資源的幾種方式 由於瀏覽器同源策略,凡是發送請求URL的協議、域名、端口三者之間任意一與當前頁面地址不同即為跨域。 (1)JSONP(jsonp跨域get請求) 這種方式主要是通過動態創建一個
jmeter beanShell修改http請求參數
body ans shell ces beanshell 需要 between 定義 with jmeter beanShell修改http請求參數 在使用jmeter進行測試時,需要對上一步響應的明文參數,如userName=‘tom‘ token=