CDNフォールバック用のローカルJSおよびCSSリソースの提供


13

とすれば

  • CDNは、良いこと、彼らが近いクライアントにリソースを提供することができますので、クライアントはそれらをキャッシュすることができ、あなたは、あなた自身のサーバーの負荷を軽減することができます。
  • 最近のブラウザでは、サブリソースの整合性(SRI)のおかげで、サードパーティのサーバーからリソースをロードしてもセキュリティが低下しません。
  • 国によってはCDNがダウンまたはブロックされている場合があり、オフラインでの開発時には利用できません1

CDNを使用するだけでなく、CDNを使用できないように準備することも魅力的だと思います。このブログ投稿では、フォールバックを提供するためのさまざまなアプローチを紹介しています。Basicの例を見ると、jQueryとBootstrapだけにフォールバックを提供するためのかなり多くの定型コードが既に含まれていることがわかりますが、好まれたソリューションはFallback.jsの使用を提案しています。 。同様に、トピックに最も関連するSOの質問は、jQueryのフォールバックを提供することだけです。

ただし、ほとんどの実際のプロジェクトでは、5つ以上のjs / cssリソースがあると予想されるため、それらすべてのフォールバックを提供するために厄介なボイラープレートを繰り返す必要はないはずです。さらに、リソースを追加または更新するたびに、次のことを行う必要があります。

  • CDNリンクを更新する
  • 手動でダウンロードするか、npm / bower configのバージョンを変更して、ローカルフォールバックコピーを更新します
  • フォールバックへのリンクを更新します
  • SRIハッシュを更新する

一方、Ideal Worldでは、1つの構成ファイルでリソースを追加/更新し、他のすべてのステップを自動的に実行します(そして、更新が何かを壊すかどうかを確認するテストを実行します)。

これを達成するための確立されたワークフローは既にありますか?

それとも、CDN、特にSRIはまだ新しいのですか?

または、ほとんどの人は単にCDNリソースのフォールバックを提供することを気にしませんか?


1. CDNに依存しないdevビルドを作成することもできますが、これもフォールバックの一種であると考えています。


私は自分でCDNをいじることはしていませんが、標準の展開プロセスの一部として、これらの手順の1つを除くすべてを自動化することが可能であるべきであると思われます。
Ixrec

Fallback.js、それがためにメンテナンスされていないもう完璧に動作しますか? ソフトウェアが既に機能していれば、5分ごとに変更する必要はありません。
ロバートハーベイ

1
いいえ、私はそれが完全に機能しないと主張します。さもなければ、著者が新しいバージョン2で作業を開始した理由がわかりません。継続的にテストおよび改善されます。私が理解していることから、異なるブラウザにさらにテストとCIを追加することは、実際にはバージョン2の主な目標の1つです。現在、SRIのサポートもありません。
ValarDohaeris

回答:


1

おそらく、この種の回復力を必要とする大規模なサイトがCDNを使用していることを誤解していると思います。

jQueryやいくつかの画像をホストするだけの問題ではありません。サイトの大部分はCDNでホストされ、支払いページやショッピングバスケットなどの動的に生成されるもののみが「プライマリウェブファーム」でホストされます。

これらでさえも、サーバー側の処理を行わずにユーザー固有の情報を表示するために、JSとCookieを使用してローカルで処理されるようになってきています。

CDNに障害が発生し、すべてのトラフィックがWebサーバーに渡されるようになった場合、それは転倒する可能性があります。それ以外の場合、CDNは本当に必要ありません。


自動的にスケールアップするCDNバックアップを作成できます。また、CDNを使用すると、トラフィックだけでなく、より快適になり、コストを削減できます。低トラフィックのWebサイトでもCDNは理にかなっていると思います。
Sjoerd222888

1

私がCDNで作業しているサイトは、サイトにとってますます重要になっています。最初は、Images / CSS / JSをキャッシュするために使用していました。この段階では、これらのリソースのホスト名をwww.mysite.com/からwww.cdn.com/に書き換える構成プロパティがあったため、CDNがダウンした場合、このホスト値を変更するか、完全にオフにしてそのままにしておくことができます。ウェブサーバーを指すURL。

ただし、基本的には、AJAXを介して読み込まれるパーソナライズされたコンテンツを含むページ全体のキャッシュに移りました。私たちのCDNは私たちのサイトに不可欠なものになりました。私たちのCDNは、それなしで私たち自身のHTTPサーバーと同じくらい実行できました。弾力性とSLAによるアップタイムの約束があるため、CDNに良いお金を支払っています。プロバイダーに重大な問題がある場合に備えてDR計画を実施していますが、これは単純な自動化プロセスではなく、フォールバックCDNに移行するときに停止期間が発生します。

したがって、あなたの質問に対する答えは、CDNがあなたのサイトにどれだけ不可欠であるかにかかっています。CDNに配置するアセットだけで、httpサーバーがこのコンテンツを配信する負荷を処理できると想定している場合は、configスイッチを使用してCDNを実質的にオンまたはオフにできます。監視ツールと組み合わせて、スイッチのオン/オフを自動化できます。


0

CDNを使用する3つの非常に重要な理由がわかります。

  1. 遠隔地のユーザーのネットワーク遅延を削減します。グローバルな視聴者向けのWebサイトを持っている場合、北米でのホスティングは、南アジア、特に中国のユーザーにとって高速ではないように思われます。ユーザーエクスペリエンスの違いは非常に大きいため、ユーザーがサイトを使用することを思いとどまらせます。この場合、マルチリージョンCDNはビジネスに不可欠です。

  2. 可用性の高いリソースから可能な限りサービスを提供します。信頼性は、クラウドCDNを使用する主な理由の1つです。トラフィックは使用可能なノードに自動的に再ルーティングされ、クラウド地域全体がダウンした場合にトラフィックを再ルーティングするための追加の手段を追加できます。

  3. CDNは、動的コンテンツを提供するアプリケーションサーバーよりも保守が簡単で安価です。上記の問題に対処する必要がある場合、お金を節約するのは自然な方法です。

つまり、CDNの目的は、エンドユーザーへのコンテンツの可用性を高めることです。CDNが失敗するか、何らかの理由で遅くなると、クライアント側のフォールバックにより、ページの負荷が大幅に増加します。これは、最初にアクセスできないリソースを取得しようとするためです。より良い解決策は、「{CDN} /js/jquery-version-min.js」のようなリンクでベースURLの置換を行うサーバー側の設計を持つことです。これにより、CDNヘルスチェックが失敗した場合、トラフィックをCDNではなくアプリケーションサーバーに再ルーティングできます。クライアントは不要なリクエストを実行せず、アプリケーションサーバーに直接アクセスします。これにより、ローカルおよびステージングの展開の問題も解決されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.