【キャッシュ】システムにはたくさんのキャッシュの種類がある?! ひとくくりにしてはいけないよ!(part1)
アプリ開発をしていると必ず出てくると言ってもいい「キャッシュ」
キャッシュを用意することで処理時間を削減し、パフォーマンスを良くすることができます
「そんなことは知っているよ!」という人は多いとは思いますが、
キャッシュにはいろんな種類があることはご存じでしょうか?
皆さんがよく目にするのは「ブラウザのキャッシュ」ですね
良く知るものですが、実際どんなデータを保管しているのでしょうか?
これは一部の「キャッシュ」ですが、
改めてどんな種類があるのか、どんなデータを保管しているのか確認していきましう!!
以下にITアプリに関するキャッシュの主要な種類をまとめました。
今回は3つ紹介していきます!!
1. ブラウザキャッシュ
Webブラウザによって取得されたリソース(HTML、画像、JavaScript、CSSなど)を保存するキャッシュです
ウェブサイトやWebアプリケーションのコンテンツを一時的に保存するためにブラウザによって使用されるメカニズムのことです
キャッシュは、同じページを再び読み込む必要がある場合に、ウェブサイトの読み込み速度を向上させることができます
ブラウザキャッシュには、通常、以下の2つのタイプがあります
【メモリキャッシュ】
コンピュータのメモリに保存され、ウェブページの読み込み速度を高速化するために使用されます
しかし、メモリキャッシュは、ブラウザを閉じると同時にすべての情報が削除されるため、キャッシュされた情報は一時的に保管されるイメージです
【ディスクキャッシュ】
ディスクに保存され、ウェブページの読み込み速度を高速化するために使用されます
ディスクキャッシュは、再起動やブラウザの再起動後も情報を保持し、ブラウザを開くたびにブラウザが使用することができます
また、ブラウザキャッシュをクリアすることもできます
これにより、ブラウザが以前に保存した情報が削除され、ウェブサイトの最新バージョンを取得することができます
ただし、キャッシュをクリアすることで、ウェブサイトの読み込み速度が低下する場合があるため、注意が必要です
一般的に、ブラウザキャッシュはウェブサイトの読み込み速度を高速化するために便利なツールであると言えますが、一部のウェブサイトでは、キャッシュが古い情報を使用してしまうため、最新の情報を確実に取得するために、キャッシュをクリアする必要がある場合がありますよ
2. アプリケーションキャッシュ
アプリケーションが使用するデータ(画像、音声、フォントなど)を保存するキャッシュです
ブラウザキャッシュとは異なり、オフライン環境でもウェブページやアプリケーションの機能が利用可能であることが特徴です
つまり、ユーザーがオフラインでアプリケーションを開いた場合でも、アプリケーションキャッシュに保存されているリソースを使用してアプリケーションを実行することができます
アプリケーションキャッシュは、ウェブ開発者が明示的に指定することで、ブラウザによって使用されます。HTML5のアプリケーションキャッシュAPIを使用して、アプリケーションキャッシュを設定することができます
具体的には、HTMLファイルのheadセクションにキャッシュするファイルのリストを指定するマニフェストファイルを記述することが必要です
ただし、アプリケーションキャッシュは、キャッシュされたリソースの更新が遅れる場合があるため、最新の情報が反映されない場合があります
また、キャッシュされたリソースの管理には注意が必要であり、不要なリソースがキャッシュされたままになってしまうと、ストレージ容量を圧迫し、パフォーマンスが低下する原因になる可能性があります
3. データベースキャッシュ
データベースから取得したデータを保存するキャッシュです
データベースシステムがクエリを実行する際に、クエリ結果やその他のデータを一時的に保存するメモリ上の領域のことです
データベースキャッシュにより、クエリを実行するたびにディスクからデータを読み込む必要がなくなり、データベースシステムのパフォーマンスが向上します
データベースキャッシュは、複数のレベルで構成されることがあります
一般的に、データベースシステムには以下のようなキャッシュがあります
【ブロックキャッシュ】
データベースのブロック単位でキャッシュを行います
ブロックはディスク上のデータベースの最小単位であり、キャッシュによりディスクからのアクセスが減り、パフォーマンスが向上します
【プランキャッシュ】
SQLクエリの実行計画をキャッシュします
クエリを実行するたびに実行計画を生成するのはコストが高く、キャッシュにより再利用が可能になります
【テーブルキャッシュ】
テーブルのメタデータをキャッシュします
メタデータには、テーブルのカラム情報やインデックス情報が含まれます
テーブルキャッシュにより、ディスクアクセスが減り、パフォーマンスが向上します
【データキャッシュ】
データベースのテーブルの行データをキャッシュします。データキャッシュにより、クエリの実行に必要なデータがメモリ上にあるため、ディスクアクセスが減り、パフォーマンスが向上します
データベースキャッシュは、データベースシステムのパフォーマンスを向上させるために非常に重要です
ただし、キャッシュが大きくなりすぎると、システムのメモリを圧迫する可能性があります
また、キャッシュが古くなっている場合、正しい結果を取得できない可能性があります
よって、データベースキャッシュの適切な管理(メンテナンス)が重要です
いかがでしょう、今回は代表的な「ブラウザキャッシュ」、「アプリケーションキャッシュ」、「データベースキャッシュ」を見ていきました
これらをマスターするだけで、かなりの効率化(パフォーマンスUP)できそうですね
実際アプリ開発でも良く注視されています
キャッシュはまだあります!!
次回の記事でも紹介していきます!!
ではっ
是非フォローしてください
最新の情報をお伝えします