2011-01-21 48 views
1

我有一個simple website這讓很少使用jQuery的,但讓我想跳過jQuery的下載,如果用戶的連接速度很慢它不是必需的。如何禁用jQuery的包括低帶寬連接

理想情況下,我會檢測到一個緩慢的連接,但我想檢測手機可能是一個合理的代理。

如果可以我會再除去使用jquery頁面的部分,若jQuery是加載動態地添加他們。

選項我考慮是:

  • 測試通過一秒鐘左右後下載一個小圖像
  • 下載的jQuery但超時連接速度(我搜索了取消下載,但什麼也沒發現)
  • 把jquery全部放在一起,只是寫我需要的JavaScript(我可能會錯誤的一些瀏覽器雖然)
  • 包裝jquery下載中的一些JavaScript,它檢查andriod或iPhone的useragent
  • 嘗試使用CSS媒體選擇控制的jQuery下載

,但我不知道要persue。

另外,我無法使用服務器端的技巧,因爲它是一個靜態頁面(避免AppEngine上冷啓動問題)。

+0

帶寬測試似乎是一個非常糟糕的主意,因爲在**所有**情況下它都會被用戶認爲是簡單的等待時間(並且在較慢的連接上它更糟糕,恰恰當你不希望它變得更糟時:-) – Pointy 2011-01-21 23:13:08

+0

爲什麼不讓用戶選擇?使用jQuery加載默認頁面輸出,然後爲用戶提供切換到低帶寬替代方案的選項。 – 2011-01-21 23:13:29

回答

6

我傾向於說忘記它。

任何嚴重的速度測試都需要傳輸比jQuery庫更多的數據。

你可以給用戶提供了選擇(如「打開低帶寬的網站」),並選擇存儲在cookie中。然後,您可以檢查cookie的值,並在服務器端動態地嵌入或不嵌入jQuery,或使用JavaScript,如@ banjomonster對this question的回答中所示。

除此之外,我會繼續幷包括它。如果你從Google的CDN中包含它,那麼很可能已經在用戶的瀏覽器中,並且不必再次加載。

0

我同意我的前體。 jQuery很可能位於用戶緩存中,位於ISP緩存中,或者來自CDN(如Google)的非常快速的服務。

A>真正<速度測試不能在您的SZENARIO完成。 (另外,「正常」速度測試,下/加1MB的結果是非常隨機的)

只看速度分析,你可以在頁面的頭部部分啓動一個計時器,並測量花費的時間進入頁面的onLoad事件/底部(您可以在其中加載jQuery和其他JavaScript文件並執行它們)。時間間隔會告訴你一些有關速度的信息。但是這個數字會受到用戶系統和其他正在運行的應用程序(減慢執行速度)的迷惑,以及您的服務器可能超載並且沒有響應速度。

當我讀到,你想「刪除jQuery的一起,只寫你需要的JavaScript」。 我想指出的是,Google Closure Compiler會查看您使用的所有代碼和函數,並去除您從不需要的所有函數,從而大大縮小您的代碼! 此外,我會考慮使用Zepto而不是jQuery - 它具有與jquery相同的功能,並且佔用空間更小(但僅支持現代瀏覽器)。它由Thomas Fuchs(Script.acolo.us名氣)所寫,這是一個像John Resig(jQuery)那樣的聰明人:)