研究使用 HTTP/1.1、HTTP/2 和 HTTP/2 + 伺服器推送協定存取伺服器來檢索資源集合的各種方法的效能的結果。該研究還評估了在瀏覽器快取中尋找請求的資料以及在應用程式邏輯層級操作資源(將資源減少到單一 JSON 區塊)對效能的影響。
測試 25 個請求的效能顯示了總體上可預測的結果 - 透過 HTTP/1.1 的請求在空快取的情況下明顯滯後,並且在一個區塊中資源利用率領先(標記為「複合」的測試)。 Firefox 和 Chrome 的效能大致相同,但快取中資料的存在並沒有帶來預期的效率提升。
但在處理500 個請求的測試中,在傳輸大量請求時,Chrome 和Firefox 之間出現了明顯的滯後,在使用Server Push 機制以及大部分使用HTTP/2 的情況下,Firefox 和Chrome 之間也出現了明顯的延遲。 Chrome 表現出更有效率的快取處理,Firefox 表現出更有效率的外部請求處理。
測試結果表明,HTTP/2 能夠相當有效率地處理針對大量資源的獨立請求。簡單的資源共享方案與將資源聚合到單一資料區塊中的方法之間的效能差異並不足以證明顯著增加應用層處理邏輯的複雜性是合理的。 服務器聚合僅在效能至關重要的場景下才有意義。如果簡化邏輯和提供簡潔的 API 更為重要,則使用獨立的資源處理更為合理。
另一個結論是,使用HTTP/2 時的瀏覽器快取不會對請求處理效能產生重大影響(在Firefox 中,完全執行501 個請求比51% 快取滿時執行90 個請求慢1.2 倍,在Firefox 中慢2.3 倍)。使用伺服器推播在 Firefox 中並未顯示出顯著的優勢,但在 Chrome 中載入大量資源時非常有效。研究作者也指出,優化伺服器端比優化在瀏覽器中運行的客戶端程式碼對效能的影響更大。
來源: opennet.ru
