WebプロジェクトにパブリックCDNを導入する際にはいくつか重要な考慮点があります。以下に具体的な選定基準と実装例を示します。
CDNホスティングサービスの選定基準
無料利用可能な主要CDNサービス
- BootCDN (https://www.bootcdn.cn/)
- CDNJSとのライブラリ同期
- 海外ノード対応(遅延あり)
- HTTP/2プロトコルサポート
- 中国地域のアクセス速度良好
- 又拍云 (http://jscdn.upai.com/)
- 事前登録必須
- HTTP/3実装
- グローバルノードの高速配信
- cdnjs (https://cdnjs.com/)
- 中国国内の一部地域での利用制限
- 海外サーバーの高速性
- jsDelivr (https://www.jsdelivr.com/)
- 中国地域の安定した配信
- グローバルでの均一なパフォーマンス
- NPMファイル配信機能搭載
- UNPKG (https://unpkg.com/)
- NPMベースのファイル配信
- 海外サーバーの高速性
- 中国地域の最適化配信
- グローバルノードの高速性
- HTTP/2非対応
- 75CDN (https://cdn.baomitu.com/)
- Google Fontsライブラリ収録
- HTTP/2プロトコルサポート
ネットワーク環境のリアルタイム検証ツール: https://www.17ce.com/
推奨利用パターン
- 国内専用プロジェクト: BootCDN, 又拍云, jsDelivr, 七牛, 75CDN
- 海外向けプロジェクト: UNPKG, jsDelivr, cdnjs, 七牛
- グローバル対応: jsDelivr, 七牛
フェールセーフ設計
メソッド1: スクリプトレベルの冗長化
<script src="http://cdn.staticfile.org/jquery/2.1.0/jquery.min.js"></script>
<script>
if (!window.jQuery) {
document.write('<script src="/local/jquery.min.js"><\/script>');
}
</script>
- ローカルキャッシュまたは代替CDNへの自動切り替え
- 非同期ロード時の処理複雑化に注意
メソッド2: ライブラリベースの監視
<script type="text/javascript">
var assetGuard = function() {
// ライブラリコアコード
}();
var config = assetGuard({
domainMap: {
'https://cdn.jsdelivr.net/npm/video.js@7.10.22/dist/':
'https://cdn.bootcdn.net/ajax/libs/video.js/7.10.1/'
}
});
</script>
<script src="https://cdn.jsdelivr.net/npm/video.js@7.10.22/dist/video.js"></script>
- イベントリスナーによるロード状態監視
- エラー発生時の代替URL自動切替
- GitHubリポジトリ: https://github.com/Grewer/assets-retry
性能向上効果
- 初回レンダリング時間短縮
- サーバー帯域負荷軽減
- 実装サンプル: https://github.com/Grewer/JsDemo/tree/master/CDNRetry