← Back to LocalStorage Chapter
Storage Types

📦 Cache API — HTTP Responses Store Karo

caches.open("my-cache").then(cache => cache.add(request))

Cache API HTTP request/response pairs store karta hai — localStorage jaisa key-value strings nahi. Service Workers ke saath offline functionality enable karne ke liye designed hai. API responses store karo, offline pe serve karo.

Request aur Response objects ke saath kaam karta hai (fetch API se). Named cache open karo, phir entries add/put/delete karo. cache.match() request se response dhundhta hai. Per origin multiple caches — version ya type se organize karo. PWAs ke liye zaroori.

🛺
Regular data ke liye nahi: Cache API HTTP responses store karta hai, arbitrary data nahi. Objects/key-value ke liye → IndexedDB use karo. Cache API SIRF network responses ko offline serve karne ke liye hai.

Code Example

HTML — Cache API — HTTP Responses Store Karo
// Cache open (ya create) karo
const cache = await caches.open("biryani-api-v1");

// Ek request/response add karo
await cache.add("/api/menu");

// Multiple requests add karo
await cache.addAll([
  "/api/menu",
  "/api/orders",
  "/static/menu.css",
  "/static/app.js"
]);

// Custom response add karo (put)
const response = new Response(JSON.stringify({ item: "Biryani", price: 450 }), {
  headers: { "Content-Type": "application/json" }
});
await cache.put("/api/custom", response);

// Cache se retrieve karo
const cachedResponse = await cache.match("/api/menu");
if (cachedResponse) {
  const data = await cachedResponse.json();
  console.log(data);
}

// Cache se delete karo
await cache.delete("/api/menu");

// Saare cached requests list karo
const keys = await cache.keys();
console.log("Cached URLs:", keys.map(k => k.url));

// Poori cache delete karo
await caches.delete("biryani-api-v1");

// Saare caches list karo
const cacheNames = await caches.keys();
console.log("All caches:", cacheNames);

// ─── Service Worker Pattern (offline support) ───
// service-worker.js mein:
self.addEventListener("fetch", (event) => {
  event.respondWith(
    caches.match(event.request).then(cached => {
      return cached || fetch(event.request).then(response => {
        if (response.ok) {
          const clone = response.clone();
          caches.open("dynamic-v1").then(cache => cache.put(event.request, clone));
        }
        return response;
      });
    }).catch(() => {
      return caches.match("/offline.html");
    })
  );
});
caches.open(name)Named cache open ya create karo
cache.add(url)URL fetch karo aur response cache karo
cache.addAll(urls)Multiple URLs fetch aur cache karo
cache.put(request, response)Manually request/response pair store karo
cache.match(request)Request se cached response dhundho
cache.delete(request)Cache se entry remove karo
cache.keys()Saare cached requests list karo
caches.delete(name)Poori named cache delete karo
response.clone()Consume karne se pehle clone karo (ek baar hi padh sakte ho!)
Service Worker fetchNetwork requests intercept karo, cache se serve karo

✅ When to Use

  • PWA offline support (Service Workers ke saath)
  • API responses ko offline serve karne ke liye cache karo
  • Static assets pre-cache karna (CSS, JS, images)
  • Stale-while-revalidate caching strategies
  • Version-based cache management

❌ When NOT to Use

  • Regular key-value data (IndexedDB use karo)
  • Simple preferences (localStorage use karo)
  • Service Workers ke bina (limited use case)
  • User-generated data store karna (IndexedDB use karo)
💡
Cache API sirf secure contexts mein kaam karta hai (HTTPS ya localhost). Response objects sirf EK BAAR consume ho sakte hain — cache karne se pehle agar body padhni hai toh clone karo. Deploy pe cache updates ke liye versioning use karo (v1, v2).