Glossary

Caching

TL;DR

Caching is a technique that stores copies of frequently accessed data in faster storage media to reduce latency and improve application performance.


Concept

Caching is a technique used in computing to store copies of frequently accessed data in high-speed storage media, allowing faster retrieval and reducing the need to fetch data from slower underlying storage systems. It’s a fundamental optimization strategy used across all layers of modern software systems.

Key principles and concepts of caching include:

  1. Temporal Locality: Recently accessed data is likely to be accessed again in the near future.

  2. Spatial Locality: Data items close to recently accessed items are likely to be accessed soon.

  3. Cache Hit: When requested data is found in the cache, resulting in faster retrieval.

  4. Cache Miss: When requested data is not in the cache, requiring retrieval from the original source.

  5. Eviction Policies: Strategies for removing data from cache when space is needed:

    • Least Recently Used (LRU): Removes the least recently accessed items
    • Least Frequently Used (LFU): Removes the least frequently accessed items
    • First In First Out (FIFO): Removes the oldest items first

Types of caching include:

  • Browser Caching: Stores web resources locally in user browsers
  • Application Caching: Stores data in application memory or external cache systems
  • Database Caching: Caches query results or frequently accessed database records
  • CDN Caching: Stores static content at edge locations closer to users
  • CPU Cache: Hardware-level caching for frequently accessed memory locations

Caching strategies:

  • Write-Through: Data is written to both cache and underlying storage simultaneously
  • Write-Back: Data is written only to cache initially, then later to underlying storage
  • Write-Around: Data is written directly to underlying storage, bypassing cache

Benefits of caching include:

  • Improved Performance: Dramatically reduced response times for cached data
  • Reduced Load: Decreased load on backend systems and databases
  • Bandwidth Savings: Reduced network traffic for distributed systems
  • Scalability: Better handling of traffic spikes and increased user load
  • Cost Efficiency: Reduced resource utilization and infrastructure costs

Caching is commonly used for:

  • Web page and asset delivery
  • Database query optimization
  • API response caching
  • Session storage
  • Computation result caching
  • Content delivery networks
  • Distributed system performance

Organizations implement caching to improve user experience, reduce infrastructure costs, increase system scalability, and optimize resource utilization. It’s essential for high-performance web applications and large-scale distributed systems.

Related words: CDN Concurrency Indexing