キャッシング(Caching)

頻繁にアクセスされるデータを高速な一時ストレージに保存し、処理速度を向上させる技術。

キャッシュはあらゆるレベルで機能します。ハードウェア(CPUキャッシュ)、アプリケーション(RedisなどのインメモリDB)、ネットワーク(静的ファイルをユーザーの近くに保存するCDN)、そしてウェブブラウザのローカルキャッシュなどです。

        graph LR
  Center["キャッシング(Caching)"]:::main
  Rel_file_systems["file-systems"]:::related -.-> Center
  click Rel_file_systems "/terms/file-systems"
  Rel_cpu_cache["cpu-cache"]:::related -.-> Center
  click Rel_cpu_cache "/terms/cpu-cache"
  Rel_cache["cache"]:::related -.-> Center
  click Rel_cache "/terms/cache"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 5歳でもわかるように説明

お母さんに電話するたびに、別の部屋にある分厚い電話帳を探すのは大変ですよね。キャッシングは、付箋に番号を書いてパソコンの画面に貼っておくようなものです。付箋は小さいですが、すぐに見ることができます。

🤓 Expert Deep Dive

ハードウェアキャッシュ(L1/L2/L3)は時間的・空間的局所性に基づいています。キャッシュの容量は限られているため、LRU(Least Recently Used)などのデータ破棄アルゴリズム(Eviction Policy)が使われます。ソフトウェア工学において最も難しい問題の一つが「キャッシュの無効化(Cache Invalidation)」です。これは、元のデータが変更されたときにキャッシュ上の古いデータを正しく破棄するプロセスです。

❓ よくある質問

Why not just make the cache big enough to hold everything?

Cost and physics. Cache storage (like SRAM inside a CPU or RAM for a database) is extremely fast but very expensive per gigabyte. Primary storage (like hard drives or SSDs) is much cheaper but much slower. Caching provides the best of both worlds.

What does it mean to 'clear your cache'?

When you clear your web browser's cache, you are deleting the temporary files (images, scripts) it saved from websites you visited. This is often necessary if a website updates its design but your browser is stubbornly loading the old, cached version.

What is a 'cache miss'?

A cache miss occurs when a system looks for data in the cache but doesn't find it. It must then fetch the data from the slower primary storage, which takes longer, and then it typically copies that data into the cache for next time.

📚 出典