キャッシュとは何か?キャッシュされたデータがどのように処理速度を向上させるのか

キャッシュとは何か?キャッシュされたデータがどのように処理速度を向上させるのか

最新のCPUは、最も近いキャッシュから値を1ナノ秒未満で取得できます。同じ値を取得するためにメインメモリまでアクセスするには、およそ100倍の時間がかかります。そこで、チップは当然のことながら、必要になる可能性の高いデータのコピーをすぐ近くに保持します。このコピーがキャッシュであり、この仕組みはプロセッサのシリコンからこのページを配信したサーバーまで、コンピューティングのあらゆる層で繰り返されます。このガイドでは、キャッシュとは何か、キャッシュの仕組み、キャッシュがひっそりと存在する場所、そしてキャッシュをクリアする必要があるかどうかについて説明します。

キャッシュの定義:キャッシュとは一体何なのか

キャッシュとは一時的な記憶領域です。小さく、高速で、必要とする処理のできるだけ近くに配置されます。システムが再び必要とするであろうデータのコピーを保持し、必要なときに、時間のかかる処理やコストのかかる処理をやり直す代わりに、コピーを取得できるようにします。このページを2回目に開くと、その大部分はサーバーからではなく、既にマシンに保存されているコピーから読み込まれます。

ここで重要なのは「一時的」という言葉です。キャッシュされたデータは決してオリジナルではありません。それは速度向上のためだけに保持される複製であり、いつでも削除できます。削除しても、価値のあるデータは何も失われません。システムは単に元のデータソースに戻ってコピーを再構築するだけです。銀行の残高はキャッシュに保存されていませんが、その残高を表示するウェブページのコピーは保存されている可能性があります。真のデータソースと使い捨てのコピーとの間のこのギャップこそが、キャッシュをあらゆるものに安全に組み込むことができる理由です。最悪の場合、コピーが欠落しているか間違っている場合でも、システムは肩をすくめて元のデータソースからデータを取得し、処理を続行します。

キャッシュの仕組み:キャッシュヒット、キャッシュミス、キャッシュ削除

あらゆるキャッシュは、どこでも、たった一つの質問に基づいて動作します。「このデータのコピーは既に持っているか?」。「はい」の場合は、すぐに答えが出ます。コピーを提供して、遅い処理をスキップすれば完了です。「いいえ」の場合は、遅い処理を一度だけ実行します。ソースからデータを取得し、結果を返送し、送信時にコピーを保持して、今後のリクエストを迅速に処理できるようにします。これが全体の仕組みです。残りは、2つの厄介な問題、つまり、空き容量が少なくなったときに何を破棄するか、そして古くなったコピーを返送しないようにするにはどうすればよいか、といった問題に関する管理です。

キャッシュヒット vs キャッシュミス

見つかりましたか? それはキャッシュヒットです。見つかりませんでしたか? キャッシュミスで、より低速なバックエンドストアへのアクセスが強制されます。ヒットで終了するリクエストの割合はヒット率と呼ばれ、エンジニアが実際に監視する唯一の数値です。画像やスタイルシートなどの静的ファイルを配信するコンテンツ配信ネットワークは、95~99パーセントを目指します。これを達成すると、ほぼすべての訪問者が近くのコピーを取得でき、オリジンサーバーはほとんどアクセスされません。ヒット率が低いということは、キャッシュがほとんど装飾になっていることを意味します。

キャッシュがいっぱいになった場合:退去ポリシー

キャッシュは意図的に小さく作られています。高速ストレージにはコストがかかるため、すべてを格納できるスペースはなく、キャッシュがいっぱいになると、何かを削除する必要があります。削除対象を選ぶルールは、削除ポリシーです。一般的なデフォルトは、LRU(Least Recently Used:最も使用頻度の低いもの)です。これは、最も長くアクセスされていないものを削除し、最近無視しているものは今後も無視し続けるだろうという賭けです。他の方式ではカウント方法が異なります。LFU(Least Often Used:最も使用頻度の低いもの)は、各アイテムへのアクセス頻度を追跡します。FIFO(First In First Out:先入れ先出し)は、最も古いエントリを削除します。賭け方は同じですが、見た目が異なります。どのポリシーも、実際にはどのコピーが最も不要になるかを推測するものです。

コピーを常に最新の状態に保つ:TTLと書き込みポリシー

コピーは、ソースと一致している間だけ有効です。そのため、ほとんどのキャッシュは、各エントリに有効期限 (TTL) を付与します。これはカウントダウンで、この時間が経過するとコピーは期限切れとみなされ、再チェックまたは再取得が必要になります。Web では、Cache-Control ヘッダーがそのクロックを設定します。ルールブックはRFC 9111で、max-age ディレクティブにより、レスポンスは最大 1 年間、正確には 31,536,000 秒までキャッシュに保持されます。書き込みは問題のもう 1 分の 1 です。ライトスルーは、キャッシュとソースに同時に保存するため、安全ですが、速度が遅くなります。ライトバックは、キャッシュに今すぐ保存し、ソースには後で保存するため、高速ですが、2 つのデータが一致しない短い期間が発生します。トレードオフを選択してください。

キャッシュとは何ですか?

キャッシュの種類:CPUからコンテンツ配信ネットワークまで

ほとんどの説明で見落とされているのが、この部分です。ブラウザキャッシュとL1 CPUキャッシュは全く別物のように聞こえますが、実際には同じ概念を異なる距離で実現しています。各層は、アクセスに時間がかかるデータのコピーを、それを必要とするものの近くに保持します。内側から外側へと階層を辿っていくと、このパターンが全体を通して繰り返されます。

メモリキャッシュ:CPUキャッシュレベルL1、L2、L3

最も高速なキャッシュはプロセッサ自体で行われます。最新のCPUは、メインメモリに使用されるDRAMよりもはるかに高速で、バイトあたりの価格がはるかに高いSRAMから構築された3レベルのキャッシュを備えています。L1は非常に小さく、ほぼ瞬時に応答し、コアあたり数十キロバイトで、約1ナノ秒で応答します。L2はそれよりも大きく、わずかに低速です。L3はさらに大きく、コア間で共有されます。Intel のCore i9-14900Kには36MBのL3が搭載されており、AMDのRyzen 9 7950X3DではL3が128MBにまで拡張されています。これらすべては、1つのギャップを埋めるために存在します。L1からデータを取得するのにかかる時間は1ナノ秒未満ですが、DDR5メインメモリでは約70ナノ秒かかり、約100倍の差があります。キャッシュが機能するのは、プログラムが同じデータとその近くにあるデータを再利用する習慣、つまり参照の局所性と呼ばれる習慣があるからです。

標準サイズ標準的なアクセス時間中身
L1 CPUキャッシュコアあたり32~80KB約0.7~1ナノ秒次の指示と値
L2 CPUキャッシュコアあたり0.5~2MB約3~4ナノ秒最近コア付近で使用されたデータ
L3 CPUキャッシュ16~128MB共有約10~20ナノ秒コア間で共有されるデータ
メインメモリ(RAM) 8~64GB約70~100ナノ秒実行中のプログラムとアクティブなデータ
SSDストレージ256GB~4TB約50~100マイクロ秒ファイルとオペレーティングシステム
CDNエッジノード変動するネットワーク経由で約20ミリ秒訪問者の近くにあるウェブコピー
オリジンサーバー変動する領域間移動時間:約100~200ミリ秒真実の源

ディスク、OS、およびアプリケーションのキャッシュ

ハードウェアの上位には、ソフトウェアが独自のキャッシュを保持しています。オペレーティングシステムは、最近読み込んだファイルなど、頻繁にアクセスされるデータを予備のRAMに保持し、それらを瞬時に再オープンできるようにします。データベースは、一般的なクエリの結果をキャッシュします。アプリケーションは、アプリケーションとデータベースの間に、RedisやMemcachedなどの専用のインメモリ層を追加し、繰り返しのリクエストにマイクロ秒単位で応答します。その役割はCPUと全く同じで、ホットなデータをより高速なストレージに保持することで、処理速度の遅さによるコストを二重に負担しないようにします。

サーバーサイドキャッシングとCDN

最外層はインターネット全体に広がっています。Webサーバーが完成したページをキャッシュすると、訪問者ごとにページを再構築する必要がなくなります。コンテンツ配信ネットワーク(CDN)はさらに一歩進んで、これらのアセットを世界中に分散したエッジサーバーにコピーし、各リクエストがユーザーの物理的に近いマシンから応答されるようにします。CDNのエッジサーバーへのリクエストは、リクエストが大陸を越えてオリジンサーバーに到達する必要がある場合の100~200ミリ秒に対し、約20ミリ秒で応答します。このモデルは現在Webを支配しており、2024年までにサードパーティコンテンツの約75%がCDN経由で配信されるようになりました。

ブラウザキャッシュ:ウェブブラウザが保存する情報

ブラウザのキャッシュは、ほとんどの人が実際に目にするものです。ウェブサイトを読み込むと、ブラウザはHTML、スタイルシート、スクリプト、画像、フォントなど、ウェブサイトの構成要素を静かにデバイスに保存します。後で再びアクセスすると、これらのファイルは再度ダウンロードされるのではなく、保存されたディスクから直接読み込まれるため、2回目のアクセスでは1回目よりも速くページが開きます。サイトのロゴはどうでしょうか?一度ダウンロードされれば、表示されるすべてのページで再利用されます。

私が最も気になるのは、そのスピードのほとんどが活用されていないことです。2021年の時点で、 デスクトップWebレスポンスの約90.4%がキャッシュ可能だったにもかかわらず、52%のサイトは標準的なブラウザキャッシュ監査で25パーセンタイルを下回っていました。せっかくのメリットが目の前にあるのに、ほとんどのWebサイトはそれを無視しているのです。キャッシュを適切に設定すれば、すぐに効果が現れます。再訪問時の応答速度が向上し、モバイルデータ使用量が減り、オリジンサーバーが同じ重複リクエストを処理する必要がなくなります。

キャッシュとは何ですか?

キャッシュの利点:なぜ処理速度が向上するのか

キャッシュはトレードオフです。少量のメモリを消費し、少し古い情報を提供するという小さなリスクを受け入れる代わりに、速度、負荷の軽減、コストの削減というメリットが得られます。これらの3つの利点があるため、キャッシュは1つのレイヤーだけでなく、あらゆるレイヤーで利用されています。

速度面では、明らかに大きなメリットがあります。近くのストレージからコピーを提供すれば、結果を再計算したり、ネットワーク経由で転送したりするよりもずっと効率的です。2つ目のメリットは、ソース側の負荷軽減です。キャッシュによって応答されるリクエストは、データベースやオリジンサーバーが処理する必要のないリクエストとなるため、トラフィックが急増してもシステムを安定稼働させることができます。3つ目は、コスト削減です。エッジノードからキャッシュされたバイトを提供する方が、中央サーバーから新たに生成して送信するよりも安価であり、データに繰り返しアクセスする必要がある場合は、その節約効果が急速に大きくなります。

アプリケーションのパフォーマンス向上によるユーザーにとってのメリットは、現実的かつ測定可能です。Googleが2018年に実施したモバイルサイトに関する調査では、読み込み時間を1秒短縮するだけでコンバージョン率が最大27%向上することが明らかになりました。また、広く引用されている2012年のアバディーン・グループの調査では、1秒の遅延でコンバージョン率が7%低下するとされています。ページの表示速度が速ければ、ユーザーはサイトに長く滞在します。キャッシュは、それを実現するための最も安価な方法の一つです。

キャッシュタイプ生息地何を保管しているか誰が管理するのか標準的な寿命
CPUキャッシュ(L1/L2/L3)プロセッサ上でホットな指示とデータハードウェア、自動的にマイクロ秒
ブラウザのキャッシュお使いのデバイスHTML、CSS、JS、画像、フォントお使いのウェブブラウザ数時間から1年
アプリケーションキャッシュアプリケーションサーバーメモリクエリ結果、セッション開発者(Redis、Memcached)数秒から数時間
サーバー/CDNキャッシュ世界中のエッジサーバーページ、メディア、API応答サイト所有者とCDNキャッシュ制御TTLごと
DNSキャッシュOS、ルーター、リゾルバードメインとIPアドレスの照合DNSリゾルバ5分から24時間

キャッシュされたデータをクリアすべきか、またクリアするタイミングはいつなのか?

キャッシュのクリアを、メンテナンスチェックリストの面倒な作業のように捉える人がいますが、そんなチェックリストは無視しましょう。キャッシュはあくまでトラブルシューティングツールであり、それ以上の意味はありません。ほとんどの場合、キャッシュされたデータはそのままにしておきましょう。なぜなら、キャッシュされたデータは、あなたが再訪するすべてのサイトの読み込み速度を静かに向上させているからです。

では、キャッシュをクリアする価値があるのはどんな時でしょうか?正直なところ、たった3つの状況です。サイトがアップデート後に壊れてしまったり、古いキャッシュされたバージョンが表示され続けたりする場合、ブラウザのキャッシュにある古いコピーがほぼ常に原因です。キャッシュをクリアすると、クリーンなダウンロードが強制されます。共有コンピュータや公共のコンピュータを使用していて、閲覧したコンテンツのローカルな痕跡を消去したい場合。または、スマートフォンの容量が残り1ギガバイトしかなく、空き容量を確保する必要がある場合。ブラウザのキャッシュは、いつの間にか数ギガバイトに膨れ上がってしまうことがあるからです。これらの場合以外では、キャッシュをクリアしても何のメリットもありません。ブラウザがコピーを再構築する間、すべてのサイトへの次回のアクセスが遅くなり、一部のブラウザではその過程でログアウトされてしまいます。人々が最も誤解しているのは、キャッシュをクリアしてもCookieや保存されたパスワードは削除されないということです。これらは別のストレージに保存されており、ユーザーが特にチェックボックスをオンにしない限り、キャッシュをクリアしても残ります。

ブラウザキャッシュをクリアする方法
クロム設定、プライバシーとセキュリティ、閲覧データの削除、キャッシュされた画像とファイル
ファイアフォックス設定、プライバシーとセキュリティ、Cookieとサイトデータ、データの消去
サファリ設定、Safari、履歴とWebサイトデータを消去
設定、プライバシー、クリアする項目を選択

キャッシュ、クッキー、バッファ:混乱を解消する

3つの単語は、データ保存に関することなので、よく混同されますが、それぞれ役割が異なります。キャッシュはコンテンツのコピーを保持し、次回アクセス時に素早くアクセスできるようにします。クッキーは、サイトがユーザーを記憶するために残す小さなメモです。ログインセッション、言語設定、保存された設定などが含まれます。クッキーはコンテンツではなく、IDを保持します。バッファはまた異なります。ストリーミングで視聴している場所より数秒間先に読み込まれる動画のように、転送中のデータを保持します。これらを区別する最も簡単な方法は、キャッシュされたデータは再利用のために保持され、クッキーはユーザーを記憶し、バッファは使用された瞬間に空になる、と理解することです。

キャッシュとキャッシングについて覚えておくべきこと

キャッシュを「処理の遅いデータのコピーを必要な場所の近くに保管しておく」というだけのものとして捉えるようになれば、それはもはやハードウェアの機能ではなく、CPUでの0.7ナノ秒のフェッチから、あなたの街の近くのエッジサーバーに保存されているこのページのコピーに至るまで、コンピューティング全体に共通する習慣のように思えてくるでしょう。ウェブがまだ学んでいないのは、このスピードの大部分は無料で得られるものであり、ほとんどのサイトはそれを無視しているという、実践的な教訓です。次にページが瞬きする間もなく開いたとき、どのコピーが処理時間を短縮してくれたのかがはっきりとわかるでしょう。

質問は?

高速な場所にデータのコピーを保管しておくことを想像してみてください。データの取得に時間がかかる場合、コンピュータは近くにコピーを保存し、次回はそれを利用することで処理をやり直す必要がなくなります。あなたのCPUはこれをナノ秒未満で行います。ウェブサイトは大陸を越えてこれを行います。同じ原理ですが、規模が全く異なります。

定期的にではなく、時々キャッシュをクリアしましょう。サイトが壊れていたり、情報が古くなっていたりする場合、共有コンピュータを使用している場合、またはストレージ容量が不足している場合にクリアしてください。それ以外の時は、キャッシュされたデータこそが再訪問時の高速化に貢献しているのです。理由もなくキャッシュをクリアしてしまうと、かえって動作が遅くなってしまいます。

キャッシュはファイルのコピーを保持することで、再訪問時の読み込み速度を向上させます。削除すべきでしょうか?通常は不要です。削除が正当化されるのは、不具合のあるサイトや古いサイト、共有マシンでのプライバシー保護、またはストレージ容量不足のスマートフォンの3つの理由のみです。これらの理由がない場合は、そのままにしておきましょう。キャッシュは十分に役立っています。

実際に何かが故障した時だけ行うべきで、ほとんどの人にとってそれは年に数回程度です。毎週行うのは無意味です。また、特定のサイトで不具合が頻繁に発生する場合は、キャッシュ全体を削除して他のアクセスするサイトすべてに悪影響を与えるのではなく、そのサイトのデータだけをクリアすれば良いでしょう。

いいえ、デフォルトでは削除されません。キャッシュされたファイルと保存されたパスワードは別々の場所に保存されるため、通常のキャッシュクリアではログイン情報は影響を受けません。パスワードが削除されるのは、キャッシュされた画像やファイルとは別のメニューにあるクリアメニューで、パスワードのチェックボックスを意図的にオンにした場合にのみです。そのチェックボックスをオンにしたままにしておけば、ログイン情報は保持されます。

キャッシュは画像、スクリプト、フォントなどのコンテンツのコピーを保持することで、ページの読み込み速度を向上させます。クッキーはこれとは異なります。クッキーは、ログインセッションやサイト設定など、ユーザーを識別するための小さなタグを保存します。キャッシュは速度向上を目的としていますが、クッキーはユーザーを記憶する役割を果たします。これらは別々の保存場所であるため、一方を削除してももう一方には影響しません。

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.