2011-06-19 39 views
20

我使用yepnope.js來動態加載JavaScript文件,而且我注意到我的腳本似乎根據Firebug和Webkit加載了兩次督察。是什麼導致我的腳本在使用Modernizr.load時被請求兩次(yepnope.js)

問題是,在Firebug的網絡面板(火狐4最新),他們的迴應是200,而不是304。它似乎比Chrome中慢。

我已經上傳this video顯示該問題。你可以看到如何加載文件jquery-1.6.1.min.jslibs.js額外的時間。

我使用的這個過程的代碼如下,簡化:

Modernizr.load({ 
       load: ['jquery-1.6.1.min.js', 'libs.js'], 
       complete: function() { 
        console.log("loaded"); 
       } 
}); 

Modernizr.load()yepnope()

+0

我有同樣的問題,+1 – HappyDeveloper

+0

@HappyDeveloper看看yepnopejs的網站 - 它也是這樣。也許它是如何工作的。但是,它似乎下載兩次? –

回答

25

他們的文檔中有一個關於此的註解:

http://yepnopejs.com/

我看到在我的dev的兩個請求 工具,爲什麼它裝載的一切 兩次?

根據您的瀏覽器和 您的服務器,這可能意味着幾個 不同的東西。由於 的性質,yepnope的工作方式如何,每個文件有兩個 請求。第一個請求是將資源 加載到緩存中,第二個請求 要執行它(但由於它在 緩存中,它應該立即執行 )。只要第二個 請求被緩存,看到兩個請求是 非常正常。如果您注意到 第二個請求沒有被緩存(並且 您的腳本加載時間翻倍),那麼請確保您發送了 正確的緩存標頭以允許 緩存腳本。這對於yepnope來說是至關重要的 。沒有 啓用適當的緩存,它將無法正常工作。實際上,我們 測試,以確保事情不會在我們的測試套件加載 的兩倍,因此,如果你想 我們可能有一個錯誤在您的瀏覽器 關於雙裝載,我們 建議您運行測試套件, 看看雙重加載測試通過。

+2

我後來意識到這一點,原諒我的無知,並感謝您的回答。 –

+2

我仍然不明白爲什麼他們必須這樣做。 Facebook的啓動加載器的東西沒有這樣的問題加載文件兩次.. – Rihards

+0

如果在網絡活動中的2個請求是一個問題,最好的'drop-in'替代品是什麼? – AwokeKnowing

相關問題