2011-01-04 9 views
13

jQueryがCDNから前にロードされていた場合、クライアントをチェックする方法はありますか?私はjQueryのがロードされていることを確認する必要はありませんが、それはCDNからロードされた、具体的場合jQueryがすでにキャッシュに入っているかどうかを確認する方法は?

if (jQuery.isLoadedFromCDN) 
//DoNothing 
else 
//load from internal resource 

注:私はこのようなコードを持つことを意味します。

コンテキストは、jQueryを使用する内部LAN Webアプリケーションがあることです.LANからのjQueryの読み込み速度ははるかに速いですが、既にCDN(おそらくケース)からダウンロードされていれば、それ以外の場合は、私たちの内部リソースからそれを取得したいと思います。帯域幅の節約は確かに巨大ではありませんが、技術的に可能かどうかを知ることはより興味があります。

答えて

0

私の知る限り、これは実際には不可能です。 2のものは、あなたを助けることができるが、心にジャンプ:

  1. 使用Etags:Webサーバ側のリソースを識別します。このようにして、あなたのブラウザはあなたのために働きます:リソースが既にロードされているかどうかを確認します。ロードされたドメインとは無関係です。
  2. どのドメインからjQueryがロードされたのか本当に分かっていればダミーのAJAXリクエストができます。あなたのライブラリがロードされたのと同じドメインからのみAJAXリクエストを行うことができます(JSONPリクエストを実行したのと同じ)。したがって、jQueryがLANリソースからロードされている場合は、LAN WebサーバーへのAJAX要求にトリプルが掛かり、CDNが除外されます。

は、私はあなたがjQueryのはGoogle Libraries APIからロードされたかどうかを確認するためにチェックしている推測している

バート

3

、それが役に立てば幸い?

あなたのブラウザは、CDNまたはLANからjQueryをキャッシュします。 CDNからの前回の検索ですでにキャッシュに入っている場合は、LANよりも読み込み速度が速くなります。サイトへの前回の訪問から、または同じCDNを使用している別のサイトからキャッシュにまだ入っていない場合は、一度読み込むだけで済みます。その後の訪問はキャッシュから読み込まれます。

jQueryのURLをCDNとLANの間で分割すると、2つのコピーがキャッシュされます。ブラウザのキャッシュには、それが意図したとおりに行われるようにします。 :)

1

これはそれを行う必要があります。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script> 
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.4.js"%3E%3C/script%3E'))</script> 

あなたのドメインに配置する必要がありますフォールバックのためのパスを適応させる必要があります。

+0

1.4.4で何が問題なのですか? – lonesomeday

+0

@lonesomeday:ちょうどそれを修正しました、私は古いソースからそれらの行をコピーしました。 – jAndy

+0

@ jAndy unescapeは非推奨です!より良い選択肢を提案できますか? – equitharn

関連する問題