コンテンツ主導のウェブ アプリケーションのホスティングを最適化するには、パフォーマンスとユーザー エクスペリエンスを向上させるためのさまざまな戦略が必要です。主なアプローチとしては、CDN を使用した効率的なコンテンツ配信、静的アセットを含むコンテンツのキャッシュ保存、セキュリティの最適化、モニタリング、スケーラビリティ オプションの検討、レイテンシの最小化などがあります。効率的な検索オプションとセキュリティ統合により、ホスティングがさらに強化されます。ユーザーの進化する要求に応えるには、パフォーマンスに基づいた取り組みを継続的に改善することが不可欠です。
静的アセットのホスティング
静的アセットとは、リクエストごとにサーバーが動的に生成しないファイルです。静的アセットは、変更されないか、更新頻度が低く、通常、サーバーサイド レンダリングなしでユーザーのブラウザに配信されます。
静的ファイルのタイプ | |
---|---|
画像 | 写真、アイコン、イラスト、グラフィック、ロゴなどの画像は、静的ファイルです。ファイル形式としては、JPEG、PNG、WebP、GIF、SVG などがあります。 |
スタイルシート | スタイルシート(CSS)は、ユーザー インターフェースのレイアウト、フォント、色、視覚的側面を制御します。通常は静的で、ブラウザの HTML コンテンツに適用されます。 |
映像と音声 | 音声ファイルと動画ファイルは静的アセットであり、アプリケーションに埋め込んだり、メディア プレーヤーで提供したりできます。 |
JavaScript | 静的 JavaScript(JS)ファイルには、アプリケーションのインタラクティビティに貢献するクライアント側コードが含まれています。これらのスクリプトはユーザーのブラウザで実行され、フォームの検証や動的コンテンツの読み込みを処理します。jQuery などのサードパーティの JavaScript ライブラリやプラグインは、それらがウェブ アプリケーションの機能を強化する場合、静的ファイルとして含まれます。 |
WASM | WebAssembly(WASM)は、ハードウェアのパフォーマンスに近いブラウザ内でスタックベースの VM を実行し、さまざまな言語にコンパイルできるファイルです。 |
通常、静的アセットはウェブサーバーに保存されるか、CDN を介して提供されます。デベロッパーは、アセットの最適化、圧縮、圧縮などの手法を利用して静的アセットのファイルサイズを小さくできます。これによりページのパフォーマンスが向上します。また、ユーザーがウェブサイトに再度アクセスするときにダウンロードを繰り返す必要性を低減するために、適切なキャッシュ戦略を組み入れる必要があります。
CSS と HTML について詳しくは、web.dev をご覧ください。
データとアセットをキャッシュに保存する
コンテンツ ドリブン ウェブ アプリケーションのキャッシュには、以前に取得または生成されたデータやアセットの保存と再利用が含まれます。これは、特に頻繁にアクセスされるデータや静的アセットの場合に、ユーザーにコンテンツを迅速に配信するうえで役立つ重要な最適化手法です。キャッシュにより、コンテンツ主導のウェブ アプリケーションのパフォーマンスを改善し、サーバーの負荷を軽減し、レイテンシを最小限に抑えることができます。
次の表で、さまざまな種類のキャッシュについて説明します。
型 | |
---|---|
ブラウザ キャッシュ | ユーザーのブラウザで、画像、スタイルシート、JavaScript ファイルなどの静的アセットをキャッシュに保存できます。ユーザーが同じウェブサイトに戻ったとき、これらのアセットをローカル キャッシュから読み込むことができます。 |
サーバーサイド キャッシュ | コンテンツ ドリブン型アプリケーションでは、サーバーサイドのキャッシュ メカニズムを使用して、静的コンテンツ、データベース クエリの結果、さらにはウェブページ全体を保存するのが一般的です。サーバー側の一般的なキャッシュ手法には、リバース プロキシ(Nginx、Varnish)、メモリ内キャッシュ(Redis、Memcached)、データベース クエリ結果のキャッシュなどがあります。 |
CDN キャッシュ | CDN は、静的アセットをキャッシュに保存してユーザーに近いエッジサーバーに配信できるため、配信速度が向上します。 |
データベース クエリのキャッシュ保存 | データベース クエリのキャッシュは、頻繁に行われるデータベース クエリの結果をメモリまたはキャッシュ ストアに保存します。このタイプでは、類似のリクエストに対して同じクエリを再実行する必要性が軽減されるため、データベースのパフォーマンスが向上します。 |
Service Worker のキャッシュ | Service Worker のキャッシュ保存を使用すると、ウェブ アプリケーションは、ウェブページのメイン実行スレッドとは独立して、HTML、CSS、JavaScript ファイルなどのリソースをキャッシュに保存し、管理できます。これらはバックグラウンドで実行され、アプリとネットワークの間の仲介役として機能します。メリットとしては、オフライン機能や帯域幅使用量の削減などがあります。 |
アセットをキャッシュに保存する方法
ユーザーがウェブ アプリケーションにアクセスする際に、ユーザーが最新のコンテンツを受信し、快適に利用できるよう、キャッシュ保存とタイムリーな更新のバランスをとることが重要です。すべてのアセットをキャッシュに保存する必要はありません。サーバー側のスクリプトによって生成された HTML ページなどの動的コンテンツをキャッシュに保存する必要はありません。静的アセットは、一定期間、またはサーバーで更新されるまでキャッシュに保存できます。キャッシュ戦略の実装計画は、選択するキャッシュの種類によって異なります。たとえば、HTTP レスポンスで Cache-Control ヘッダーを使用してブラウザ キャッシュを実装したり、Cache API を使用してサービス動作キャッシュを実装したりできます。
キャッシュに保存されたアセットにはバージョニング システムを使用することをおすすめします。これにより、キャッシュに保存されたアセットを無効にせずに更新できます。必ずキャッシュ使用量をモニタリングし、必要に応じて調整してください。web.dev のキャッシュ保存についての詳細をご覧ください。
スケーリング
コンテンツ主導のウェブ アプリケーションをスケーリングするには、アプリケーションの効率と信頼性を維持しながら、増加するトラフィックとデータを処理する戦略的計画を実装する必要があります。スケーリング プロセスには、変動するトラフィック パターンやデータ量を管理するための計画、モニタリング、柔軟性が必要です。ウェブ アプリケーションをスケーリングする場合は、パフォーマンスの最適化とインフラストラクチャ コストの管理のバランスを取る必要があります。
ロードバランサは異なるサーバー間でトラフィックを分散します。これにより、アプリケーションで増加したトラフィックを効果的に処理できます。キャッシュ メカニズムを実装すると、サーバーの負荷を軽減できます。CDN は、静的アセットのキャッシュ保存やコンテンツの配信にも役立つため、レイテンシを短縮できます。オートスケーラーを利用して、必要に応じてアプリケーションを自動的にスケールアップまたはスケールダウンすることもできます。オートスケーラーは、現在のレベルのトラフィックの処理に必要なリソースをアプリケーションに配置できます。スケーリングのアプローチと戦略では、効果的なモニタリングとパフォーマンス調整が必要です。パフォーマンス データを定期的に分析し、インフラストラクチャとコードに必要な調整を行ってください。
レイテンシ
レイテンシとは、ユーザーがウェブ アプリケーションを操作したときに発生する時間の遅延またはタイムラグです。ウェブ リクエストがユーザーのブラウザまたはデバイスからウェブサーバーに送信され、レスポンスがユーザーのデバイスに戻るまでにかかる時間です。通常、ミリ秒(ms)単位で測定されます。レイテンシはユーザーの不満や失望につながるため、ユーザー エクスペリエンスに大きく影響します。
レイテンシに影響する要因は次のとおりです。
要素 | |
---|---|
ネットワーク レイテンシ | ウェブ アプリケーションのユーザーとサーバー間の距離、データのルーティング、ネットワーク接続の品質は、ネットワーク レイテンシに影響する可能性があります。 |
サーバー処理時間 | サーバーの処理時間は、リクエストの複雑さとサーバーのパフォーマンスによって異なります。 |
コンテンツの配信時間 | コンテンツの配信時間は、サーバーのロケーション、CDN、アセットの最適化の影響を受けます。ウェブページのレンダリングに必要な画像、スタイルシート、スクリプトなど、アセットを読み込むのにかかる時間を指します。 |
コンテンツの読み込み方法 | プリフェッチ、コンテンツの非同期読み込み、遅延読み込みなどの戦略は、多くの場合、重要なコンテンツの読み込みを優先するため、認識されるレイテンシに影響します。 |
コンテンツ キャッシュ、コンテンツ配信の最適化、サーバー パフォーマンスの調整、CDN の使用による RTT の最小化などの手法を組み込むことで、レイテンシを改善できます。