最終的に、フロントエンド最適化(FEO)とも呼ばれるサイトのWebパフォーマンス最適化(WPO)を実行している場合は、両方の手法を採用することをお勧めします。彼らは驚くほど手をつないで働くことができます。どちらか一方を選択する必要がある場合でも、いつでもキャッシュを選択することは間違いありません。実際、CDNを使用する場合でも、すべてのWebプロジェクトに適切なリソースキャッシュを設定することが不可欠だと思います。
キャッシング
ヘッダーの設定Expires
とリソースのキャッシュは必須であり、リソースに対して100%の時間実行する必要があります。キャッシングを行わない理由は本当にありません。Apacheでは、これを有効にmod_expires.c
した後、設定するのは非常に簡単mod_headers.c
です。HTML5 Boilerplateプロジェクトの.htaccessファイルには優れた実装例があり、サーバーがnginx、lighttpd、IISなどの他のサーバーである場合は、これらの他のサーバー構成を確認してください。
キャッシングについて学ぶことに興味がある人は、次のように読んでください。MarkNottinghamのキャッシングチュートリアル
コンテンツ配信ネットワーク
あなたが言及Google Code, jQuery latest, AJAX CDN
し、私はあなたが支払い、あなた自身のリソースをホストするものを含む一般的なCDNに触れたいと思いますが、単にjqueryホストファイルcdnを使用している場合、またはhttp://cdnjs.com/から何かをロードしている場合も同じです。例。
CDNは、サーバー側のヘッダーキャッシュを設定するよりも重要ではないと思いますが、CDNを使用するとパフォーマンスを大幅に向上させることができますが、コンテンツ配信ネットワークのパフォーマンスはプロバイダーによって異なります。
これは、トラフィックが世界中のオーディエンスであり、CDNプロバイダーが世界中のエッジ/ピアロケーションを多数持っている場合に特に当てはまります。また、リソースを提供するために作業の一部をCDNにオフロードするため、Webホスティング帯域幅とCPU使用率(少し)が大幅に削減されます。
まれに、CDNの遅延がサーバーよりも遅くなると、CDNがパフォーマンスに悪影響を与える可能性があります。また、リソースの並列化を過度に最適化して使用すると(cdn1、cdn2、cdn3などのマルチサブドメインを使用)、ユーザーエクスペリエンスが低下し、追加のDNSルックアップでオーバーヘッドが発生する可能性があります。ここではバランスが必要です。
発生する可能性のあるもう1つの悪影響は、CDNがダウンしている場合です。それは起こった、そしてまた起こるだろう。これは、無料のCDNの場合により当てはまります。なんらかの理由でCDNがダウンすると、サイトもダウンします。これは、さらに別の潜在的な単一障害点(SPOF)です。javascriptリソースの場合、賢くなり、CDNからリソースをロードできます。失敗した場合は、どのような場合でも、ローカルコピーを検出してロードします。フォールバック(HTML5ボイラープレートから取得)を使用してajax.googleapis.comからjQueryをロードする例を次に示します。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.8.2.min.js"><\/script>')</script>
明らかな無料のAPIリソース(jquery、google apiなど)に加えて、CDNを使用している場合は、使用料を支払う必要がある場合があるため、ホスティングコストが増加します。もちろん、一部のCDNでは、特定の場所にアクセスするために追加料金を支払う必要があります。たとえば、アジアのノードは北米よりも追加コストがかかる場合があります。