回覆列表
  • 1 # 網路圈

    感興趣的朋友可以研究一下當前各大網站的前端原始碼,你會發現這些大型網站在前端領域做了很多最佳化以最大限度提升效能。

    以淘寶為例,我們可以看到它的原始碼裡將很多JS檔案以一個script標籤引入(即script標籤裡的src屬性裡有多個半形逗號隔開的檔案路徑),而不是傳統的每一個js用一個script標籤引入,這是啥操作呢?其實這就是所謂的請求合併。

    什麼是請求合併?

    所謂請求合併其實就是將多個同類型的資源一次性的向伺服器端發出請求,然後一起由伺服器端返回給客戶端,而不是每個資源都單獨向伺服器發出請求。

    這裡強調了是同類型的資源(如CSS和CSS,JS和JS檔案),其實不同型別的資源也可以合併,但為了確保資料解析正確還是建議同類型資源請求合併。

    為什麼要請求合併?

    想要弄清楚這個問題,我們得先了解HTTP請求的過程:

    看似簡單的HTTP請求卻經過了這麼多步聚,每個步聚都是要消耗時間的。如果我們將多個請求合併為一個請求,那就節省了很多中間環節消耗的時間,從而大大加快了資源的下載速度、網頁的渲染速度。

    另外,每種瀏覽器都是有併發數限制的,這就意味著如果頁面上的靜態資源過多,而瀏覽器一次最多隻能處理幾個請求,其它的請求全都處於阻塞等待中,使得頁面渲染速度慢。所以說請求合併對於大型網站而言是必須要做的最佳化措施。

    請求合併的原理

    請求合併的實施是需要伺服器端支援的,伺服器端獲取到請求檔案時先判斷是否滿足特定的格式(比如檔名中是否存在半形逗號分隔符等),如果存在則根據分隔符將檔名分割成多個檔案路徑,然後在伺服器端找到對應的檔案後將內容拼接在一起返給客戶端。

    比如Nginx就有一個mod_concat模組來實現請求合併,Tengine預設就有此模組,大家可以嘗試一下。

  • 中秋節和大豐收的關聯?
  • 一個六十多歲的老婆婆,一個冬天吃二三十斤柿子,對身體有影響嗎?