2012-08-16 84 views
1

我在一個Web應用程序中工作,在該應用程序中,開發環境從本地Web服務器加載大約500個js文件(我試過IIS和Apache)。這些文件在prod中進行了優化,但對於我們所擁有的開發而言。我知道還有其他的戰略選擇可能會阻止加載這麼多js文件的需要,但目前我的手中沒有。我想要做的是加快這些請求。我瘋狂地認爲每個請求只需要10ms,這樣整個請求可能需要5s(10ms * 500個請求)?目前chrome和firefox都報告說這些請求需要大約100ms(甚至是304s)。爲什麼Chrome和Firefox在下載超小的JavaScript文件時比curl慢10倍?

我把這個下拉到最小公分母,並創建了一個1行js文件。我通過Firefox和Chrome向這個文件發出一個請求,並且每個報告都需要大於100ms。但奇怪的是,當我從curl發出同樣的請求時,只需要5ms-ish:

$ curl 'http://10.222.139.56:81/js/ben.js' -o /dev/null -w '%{time_total}' 
0.005 

什麼給出了?我會認爲捲曲數是正確的?爲什麼Chrome和Firefox需要更長的時間?

+4

** 500 JavaScript文件** ...哇 – Pointy 2012-08-16 18:52:32

+2

我們確定FF/Chrome是*只*計時實際下載,還是包括將其轉換爲字節碼/等?我不知道,但它會造成差異。 – 2012-08-16 19:00:49

+1

您的本地網絡服務器是否從您本地存儲加載js文件?我剛剛檢查過我的,一半JS文件從緩存(0ms)和半載~10ms。 – Brock 2012-08-16 19:01:34

回答

2

我的猜測是,對於Firefox和Chrome加載的每個js文件,報告的時間包括文件的瀏覽器解析,緩存等。即使是單線文件也要處理少量工作。另一方面,curl只是拉下內容並保存到磁盤或標準輸出。該操作速度更快。

+0

這是我最好的理論。所以,無論我加快響應速度的速度有多快,500個js文件都需要一段時間才能加載......但是,如果情況如此,那麼打包到1個文件中的js數量不會相同長? (它不) – andersonbd1 2012-08-16 19:07:54

+1

@ andersonbd1我的猜測是,在那裏設置了一些開銷,每個文件都是固定的金額。考慮到Chrome在他們的JS引擎中的驕傲,解析可能只是這100毫秒的一小部分。其餘的可能更多的是在緩存,註冊文件等方面。 – 2012-08-16 19:15:35

1

答案對我來說很簡單:餅乾。

在作爲「Content-Type:application/json」服務的單個json文件中,Chrome的網絡標籤始終顯示爲〜1400ms,而捲曲爲〜300ms(即使設置了瀏覽器用戶代理)。瀏覽器應該很少需要解析這個,因爲我禁用了漂亮的打印插件,並且在Chrome的開發工具中選中了「禁用緩存」。

最後我在一個隱身窗口中試了一下,看到了和Curl同樣的結果。然後,我回到原來的窗口並刪除了cookie,沒有其他任何東西,並獲得相同的速度提升。我終於意識到我的web應用程序在請求另一個驗證它的服務時使用了特定的驗證cookie。

相關問題