2011-01-21 12 views
1

私はsimple websiteを少し使っていますが、ユーザー接続が遅い場合はjqueryのダウンロードをスキップしたいと思います。低帯域幅接続のjqueryインクルードを無効にする方法

理想的には、私は低速の接続を検出しますが、携帯電話がこのための妥当なプロキシである可能性があることを検出したと仮定します。

可能であれば、jqueryを使用するページの部分を削除し、jqueryがロードされている場合は動的に追加します。私が検討している

オプションは次のとおりです。

  • テストので、第二以降の小さな画像
  • ダウンロードjqueryのが、タイムアウトをダウンロードすることにより、接続速度(私はダウンロードを解除するための検索しか見つからなかった)
  • jqueryを一緒にドロップして、私が必要とするjavascriptを書いてください。(おそらくいくつかのブラウザで間違っているでしょう)
  • andriodまたはiphoneのユーザエージェントを確認するjavascriptでjqueryをラップします。
  • jqueryのダウンロードを制御するCSSメディアセレクタを使用するようにしてください。

私はどちらを納得させるべきかわかりません。

また、静的ページ(appengineのコールドスタートの問題を回避するため)ではサーバー側のトリックを使用できません。

+0

帯域幅テストは、すべての**ケースでは本当に悪い考えです単純な待ち時間としてユーザーに認識されるようになります(接続が遅くなると厳密に悪化することはありません:-) – Pointy

+0

なぜユーザーが選択できないのですか? jQueryを使用してデフォルトのページ出力をロードし、ユーザーに低帯域幅の代替方法に切り替えるオプションを与えます。 –

+0

CDNのバージョン(Googleのようなもの)を使ってjQueryのダウンロードを避けることができるので、ユーザーは既にjQueryをキャッシュに入れている可能性があります。 – Andrew

答えて

6

私はそれを忘れてしまう傾向があります。

jQueryライブラリの重さよりも多くのデータを転送するには、深刻な速度テストが必要です。

「低帯域幅のWebサイトを開く」のような選択肢をユーザに与え、その選択肢をクッキーに保存することができます。 Cookieの値をチェックし、jQueryをサーバー側に動的に埋め込むか、埋め込まないようにするか、または@ banjomonsterの答えがthis questionのようにJavaScriptを使用します。

それ以外は、私は先に進んでそれを含めるだけです。あなたがGoogleのCDNからそれを含めると、それはすでにとにかくユーザーのブラウザにあり、再度読み込む必要はありません。

+1

私は同意します。さらに、ページの一番下にすべてのスクリプトを含めると、jQueryがダウンロードされる前でもすべてのコンテンツを見ることができます。 –

0

私の前兆に同意します。 jQueryは、ユーザーキャッシュ、ISPキャッシュ、またはGoogleのようなCDNから非常に高速に配信されます。

A>本物の<あなたのスピードテストはできません。 (また、 "通常の"スピードテスト、1MBのダウン/アップは結果が非常にランダムです)

スピード解析を見るだけで、ページの頭の部分でタイマーを開始し、ページのonLoadイベント/ボトム(jQueryと他のjavascriptファイルをロードして実行する場所)に入ります。 タイムギャップは速度について何かを教えてくれます。しかし、その数は、ユーザシステムや他のアプリケーション(実行速度の低下)だけでなく、あなたのサーバが過負荷になっているかもしれないし、うんざりして応答していないかもしれません。

私が読んだところでは、「jqueryを一括してドロップし、必要なjavascriptだけを書く」と考えています。 私は、Google Closure Compilerがあなたのコードと機能をすべて見て、使い慣れていないすべての機能を取り除き、コードを大幅に縮小することを指摘したいと思います! また、jQueryの代わりにZeptoを使用することを検討します。jqueryと同じ機能を、より軽量なフットプリントで(しかし、mordernブラウザのみをサポートして)設定しています。 John Resig(jQuery)のような頭脳であるThomas Fuchs(Script.acolo.us fame)によって書かれたものです:)

関連する問題