🗂

キャッシュについて(主に戦略)

2024/02/28に公開

キャッシュ

キャッシュ(cache)とは?

キャッシュの役割

・キャッシュはコンピューターにおいてデータや計算結果を一時保存しておくメモリ領域のこと。
・キャッシュが一時保存してくれるおかげで無駄なサーバーへのアクセスが減りパフォーマンスの向上に役立っている

"キャッシュはシステムのパフォーマンスを向上させる!"

それぞれのキャッシュ

ブラウザキャッシュ:

ウェブブラウザは訪れたウェブページのデータ(画像、HTMLファイル、CSS、JavaScriptファイルなど)をローカルに保存する。これにより、同じページを再度訪れたときに、データをサーバーから再度ダウンロードする必要がなくなり、ページの読み込み速度が向上する。

CPUキャッシュ:

CPUには小容量だが高速なキャッシュメモリが内蔵されており、頻繁に使用されるデータや命令を一時的に保存している。これにより、CPUがデータにアクセスする際の遅延が減り、パフォーマンスが向上する。

ディスクキャッシュ:

OSはハードドライブやSSDから読み取ったデータをRAMにキャッシュしている。これにより、同じデータへのアクセスが高速になる。

WEBキャッシュ:

WEBキャッシュサーバーは、WEBページやWEBオブジェクト(画像、スタイルシートなど)をキャッシュして、WEBトラフィックを減少させ、アクセス速度を向上させる。特に大規模なウェブサイトや人気のあるコンテンツに対して有効。

アプリケーションキャッシュ:

多くのアプリケーションは、ユーザーの設定や一時的なデータをローカルにキャッシュすることで、パフォーマンスを向上させる。

CDN(コンテンツデリバリーネットワーク)キャッシュ:

CDNは世界中に分散されたサーバーネットワークで、コンテンツ(ウェブページ、ビデオ、画像など)をキャッシュして、ユーザーに近い場所から迅速に提供している。

キャッシュ戦略

ローカルキャッシュ:

適用例: デスクトップアプリケーション、モバイルアプリ、ウェブブラウザ

・ユーザーのデバイス上に直接データを保存することで、アプリケーションの応答速度を向上させ、オフラインでの使用を可能にする。例えば、モバイルアプリで最近の操作履歴や一時的なデータをローカルに保存しておくことで、ネットワーク接続が不安定な場合でもスムーズに動作させることが可能。

リモートキャッシュ:

適用例: クラウドベースのウェブサービス、大規模なウェブアプリケーション

・リモートキャッシュ(例:Redis、Memcached)を使用することで、複数のサーバー間でデータを共有し、スケーラブルなアーキテクチャを実現可能。これは、大規模なトラフィックを処理するウェブサービスに特に有効である。

リードキャッシュ:

適用例: データベースを多用するアプリケーション、コンテンツ管理システム(CMS)

・データの読み取り操作をキャッシュすることで、データベースへのアクセス回数を減らし、全体的な応答時間を短縮できる。例えば、CMSではページコンテンツやクエリ結果をキャッシュして、高速なページ表示を実現可能。

ライトキャッシュ:

適用例: トランザクション処理システム、リアルタイムデータ処理システム

・データの書き込み操作を一時的にキャッシュすることで、データベースへの負担を軽減し、高負荷時のパフォーマンスを向上させる。トランザクション処理では、一時的な書き込み操作をキャッシュしてからバッチ処理でデータベースに反映させることがある。

インラインキャッシュ:

適用例: ウェブアプリケーション、コンテンツ配信ネットワーク(CDN)

・インラインキャッシュは、静的リソース(画像、CSS、JavaScriptファイル)を直接コード内に埋め込むことで、追加のHTTPリクエストを減らし、ウェブページのロード時間を短縮できる。特に初回ページロードの高速化に有効。

アサイドキャッシュ:

適用例: エンタープライズアプリケーション、大規模ウェブアプリケーション

・アプリケーションが必要に応じてデータをキャッシュから取得し(キャッシュアサイド)、キャッシュにデータがない場合にのみデータソース(データベースなど)にアクセスする。データソースへのアクセスを最適化し、パフォーマンスを向上させる。また、キャッシュの更新が柔軟に行えるため、データの整合性を維持しやすい。

まとめ

・これらの戦略を組み合わせ、かつシナリオに合わせて選択することが重要
・ベストプラクティスを求め試行錯誤することが重要

Discussion