Bird
Raised Fist0
Supabasecloud~10 mins

Caching strategies in Supabase - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to set a cache expiration time of 60 seconds.

Supabase
const { data, error } = await supabase.from('items').select('*').cache({ ttl: [1] });
Drag options to blanks, or click blank then click option'
A60
B0
C120
D30
Attempts:
3 left
💡 Hint
Common Mistakes
Using 0 disables caching instead of setting expiration.
Choosing a very high number causes stale data.
2fill in blank
medium

Complete the code to enable cache for the query.

Supabase
const { data, error } = await supabase.from('users').select('*').[1]();
Drag options to blanks, or click blank then click option'
AnoCache
Bcache
CdisableCache
DclearCache
Attempts:
3 left
💡 Hint
Common Mistakes
Using noCache() disables caching.
Using clearCache() removes cached data.
3fill in blank
hard

Fix the error in the cache invalidation code.

Supabase
await supabase.cache.[1]('users');
Drag options to blanks, or click blank then click option'
AclearCache
BrefreshCache
CinvalidateCache
DresetCache
Attempts:
3 left
💡 Hint
Common Mistakes
Using clearCache is not a valid method.
Using refreshCache does not exist in Supabase.
4fill in blank
hard

Fill both blanks to create a cache with a 5-minute expiration and force refresh.

Supabase
const { data, error } = await supabase.from('products').select('*').cache({ ttl: [1], forceRefresh: [2] });
Drag options to blanks, or click blank then click option'
A300
Btrue
Cfalse
D60
Attempts:
3 left
💡 Hint
Common Mistakes
Using 60 seconds instead of 300 for 5 minutes.
Setting forceRefresh to false does not force reload.
5fill in blank
hard

Fill all three blanks to cache a query with a 10-minute TTL, disable force refresh, and specify a cache key.

Supabase
const { data, error } = await supabase.from('orders').select('*').cache({ ttl: [1], forceRefresh: [2], key: '[3]' });
Drag options to blanks, or click blank then click option'
A600
Bfalse
Corders_cache
Dtrue
Attempts:
3 left
💡 Hint
Common Mistakes
Using true for forceRefresh when disabling is needed.
Using a numeric value instead of a string for the cache key.

Practice

(1/5)
1. What is the main purpose of caching in Supabase applications?
easy
A. To store data temporarily and speed up data access
B. To permanently save all user data
C. To delete old data from the database
D. To encrypt data for security

Solution

  1. Step 1: Understand caching basics

    Caching temporarily stores data to avoid repeated database calls.
  2. Step 2: Identify caching purpose in Supabase

    It speeds up app performance by quickly providing stored data.
  3. Final Answer:

    To store data temporarily and speed up data access -> Option A
  4. Quick Check:

    Caching = Temporary storage for speed [OK]
Hint: Caching means temporary storage to speed up access [OK]
Common Mistakes:
  • Thinking caching permanently saves data
  • Confusing caching with encryption
  • Believing caching deletes data
2. Which of the following is the correct way to set a cache TTL (time-to-live) in Supabase client code?
easy
A. cache.set('key', value, { ttl: 300 })
B. cache.set('key', value, ttl=300)
C. cache.set('key', value, timeout: 300)
D. cache.set('key', value, expire: 300)

Solution

  1. Step 1: Review Supabase cache TTL syntax

    Supabase uses an options object with a ttl property to set time-to-live.
  2. Step 2: Match correct syntax

    cache.set('key', value, { ttl: 300 }) uses { ttl: 300 } which is the correct way to specify TTL in seconds.
  3. Final Answer:

    cache.set('key', value, { ttl: 300 }) -> Option A
  4. Quick Check:

    TTL set with { ttl: seconds } object [OK]
Hint: TTL uses { ttl: seconds } object in cache.set [OK]
Common Mistakes:
  • Using ttl=300 instead of { ttl: 300 }
  • Using wrong property names like timeout or expire
  • Passing TTL as a separate argument without object
3. Given this Supabase cache check code:
const cachedData = cache.get('user_123');
if (cachedData) {
  console.log('Cache hit:', cachedData);
} else {
  const data = await supabase.from('users').select('*').eq('id', 123);
  cache.set('user_123', data, { ttl: 600 });
  console.log('Cache miss, fetched:', data);
}

What will be logged if the cache already has data for 'user_123'?
medium
A. Cache miss, fetched: [new data]
B. Cache hit: [cached data]
C. Error: cache.get is not a function
D. No output

Solution

  1. Step 1: Check cache.get return value

    If cache has data for 'user_123', cachedData is truthy.
  2. Step 2: Follow code logic on cache hit

    Code logs 'Cache hit:' plus cachedData without fetching from database.
  3. Final Answer:

    Cache hit: [cached data] -> Option B
  4. Quick Check:

    Cache hit logs cached data [OK]
Hint: Cache hit means cachedData exists, logs cache hit [OK]
Common Mistakes:
  • Assuming it fetches from database even if cache exists
  • Confusing cache miss and hit outputs
  • Expecting errors when cache is valid
4. You wrote this code to cache user data but it always fetches from the database:
const cached = cache.get('user_1');
if (!cached) {
  const data = await supabase.from('users').select('*').eq('id', 1);
  cache.set('user_1', data, { ttl: 300 });
}
console.log(cached);

What is the main issue causing the cache miss?
medium
A. TTL is too short to keep data
B. cache.get syntax is incorrect
C. You never update the cached variable after setting cache
D. Database query is wrong

Solution

  1. Step 1: Analyze variable assignment

    Variable 'cached' is assigned once before cache.set, so it stays null.
  2. Step 2: Understand cache update logic

    After setting cache, 'cached' is not updated to new data, so console.log shows null.
  3. Final Answer:

    You never update the cached variable after setting cache -> Option C
  4. Quick Check:

    cached variable must update after cache.set [OK]
Hint: Update cached variable after cache.set to avoid misses [OK]
Common Mistakes:
  • Assuming cache.set updates cached variable automatically
  • Blaming TTL without checking variable assignment
  • Thinking cache.get syntax is wrong without error
5. You want to optimize a Supabase app by caching user profile data but ensure updates are reflected quickly. Which caching strategy is best?
hard
A. Cache data without TTL and manually clear cache daily
B. Use very long TTL (e.g., 24 hours) to minimize database calls
C. Never cache user profiles to avoid stale data
D. Use short TTL (e.g., 60 seconds) and refresh cache after updates

Solution

  1. Step 1: Consider update frequency and freshness

    User profiles may change, so cache must refresh often to avoid stale data.
  2. Step 2: Choose caching strategy balancing speed and freshness

    Short TTL with cache refresh after updates keeps data fresh and speeds access.
  3. Final Answer:

    Use short TTL (e.g., 60 seconds) and refresh cache after updates -> Option D
  4. Quick Check:

    Short TTL + refresh = fresh and fast cache [OK]
Hint: Short TTL plus refresh keeps cache fresh and fast [OK]
Common Mistakes:
  • Using long TTL causing stale data
  • Avoiding cache entirely losing speed benefits
  • Not refreshing cache after updates
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard