Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is response caching in GraphQL?
Response caching stores the results of GraphQL queries so that repeated requests can be served faster without re-executing the query.
Click to reveal answer
beginner
Name a common strategy for caching GraphQL responses.
One common strategy is query-based caching, where the exact query string and variables are used as a key to store and retrieve cached results.
Click to reveal answer
intermediate
What is the difference between client-side and server-side caching in GraphQL?
Client-side caching stores responses in the user's browser or app to reduce network calls. Server-side caching stores responses on the server to reduce database or resolver load.
Click to reveal answer
intermediate
How does cache invalidation affect response caching?
Cache invalidation removes or updates cached data when the underlying data changes, ensuring clients get fresh and accurate responses.
Click to reveal answer
beginner
What role do Cache-Control headers play in GraphQL response caching?
Cache-Control headers tell clients and proxies how long to keep a cached response and whether it can be reused, helping control caching behavior.
Click to reveal answer
Which of the following is a key used in query-based caching for GraphQL?
AThe exact query string and variables
BOnly the query name
CThe server IP address
DThe client's user agent
✗ Incorrect
Query-based caching uses the full query string and variables as the key to ensure the cached response matches the request exactly.
What does cache invalidation ensure in response caching?
AThat cached data is always kept forever
BThat cached data is updated or removed when underlying data changes
CThat cache size is unlimited
DThat only client-side caching is used
✗ Incorrect
Cache invalidation updates or removes cached data to keep responses accurate when the original data changes.
Where is client-side caching stored?
AIn the database
BOn the server
CIn the user's browser or app
DIn the network router
✗ Incorrect
Client-side caching stores data locally in the user's browser or app to reduce network requests.
What does the Cache-Control header NOT control?
AThe exact data format of the response
BWhether a response can be reused
CHow long to keep a cached response
DCaching behavior for clients and proxies
✗ Incorrect
Cache-Control headers control caching behavior but do not specify the data format of the response.
Which caching strategy reduces load on the database or resolvers?
AClient-side caching
BDNS caching
CBrowser caching
DServer-side caching
✗ Incorrect
Server-side caching stores responses on the server to reduce the need to run expensive database queries or resolver functions.
Explain how response caching improves performance in GraphQL APIs.
Think about what happens when the same query is asked multiple times.
You got /4 concepts.
Describe the difference between client-side and server-side caching in GraphQL.
Consider where the cached data lives and what it helps reduce.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of response caching in GraphQL?
easy
A. To store query results and speed up repeated requests
B. To encrypt data sent between client and server
C. To validate user permissions for queries
D. To log all queries for debugging
Solution
Step 1: Understand response caching concept
Response caching saves the answers of queries so that if the same query is asked again, the server can quickly return the saved answer instead of recalculating it.
Step 2: Identify the main benefit
This speeds up repeated requests and reduces server load.
Final Answer:
To store query results and speed up repeated requests -> Option A
Quick Check:
Response caching = store and speed up [OK]
Hint: Caching saves answers to reuse later, speeding up requests [OK]
Common Mistakes:
Confusing caching with encryption
Thinking caching controls permissions
Believing caching logs queries
2. Which of the following is the correct way to set a cache duration using the @cacheControl directive in GraphQL SDL?
easy
A. @cacheControl(duration: 60)
B. @cacheControl(maxAge: 60)
C. @cacheControl(cacheTime: 60)
D. @cacheControl(time: 60)
Solution
Step 1: Recall the correct directive syntax
The @cacheControl directive uses the argument maxAge to specify cache duration in seconds.
Step 2: Match the correct argument name
Only maxAge is valid; other argument names like duration, cacheTime, or time are incorrect.
Final Answer:
@cacheControl(maxAge: 60) -> Option B
Quick Check:
@cacheControl uses maxAge [OK]
Hint: Use maxAge to set cache seconds in @cacheControl [OK]
Common Mistakes:
Using wrong argument names like duration or time
Omitting the argument name
Using invalid directive syntax
3. Given this GraphQL query with caching set to @cacheControl(maxAge: 120), what happens if the same query is requested twice within 2 minutes?
medium
A. The server returns the cached response on the second request
B. The server returns an error on the second request
C. The server recalculates the response both times
D. The cache is ignored and data is fetched fresh every time
Solution
Step 1: Understand maxAge meaning
The maxAge: 120 means the response is cached for 120 seconds (2 minutes).
Step 2: Analyze repeated request timing
If the second request happens within 2 minutes, the cached response is still valid and returned immediately.
Final Answer:
The server returns the cached response on the second request -> Option A
Quick Check:
maxAge 120 means cache valid 2 minutes [OK]
Hint: Within maxAge, cached response is reused [OK]
Common Mistakes:
Thinking cache expires immediately
Assuming server errors on repeated queries
Believing cache is ignored always
4. You set @cacheControl(maxAge: -10) on a field. What is the likely problem?
medium
A. Negative maxAge causes a syntax error
B. Negative maxAge disables caching for that field
C. Negative maxAge is treated as zero, caching forever
D. Negative maxAge causes cache to expire immediately
Solution
Step 1: Understand maxAge value meaning
maxAge defines how long the response is cached in seconds. Negative values are invalid for duration.
Step 2: Interpret negative maxAge effect
Negative maxAge is treated as cache expired immediately, so no caching occurs effectively.
Final Answer:
Negative maxAge causes cache to expire immediately -> Option D
Quick Check:
Negative maxAge means cache expires instantly [OK]
Hint: Negative maxAge means cache expires right away [OK]
Common Mistakes:
Expecting syntax error from negative value
Thinking negative disables caching explicitly
Assuming negative means cache forever
5. You want to cache a GraphQL query response for a user profile that updates frequently but not every second. Which caching strategy is best?
hard
A. Set @cacheControl(maxAge: 5) to cache for 5 seconds
B. Set @cacheControl(maxAge: 3600) to cache for 1 hour
C. Set @cacheControl(maxAge: 300) to cache for 5 minutes
D. Do not use caching to always get fresh data
Solution
Step 1: Consider data freshness needs
User profiles update frequently but not every second, so caching too long risks stale data.
Step 2: Choose a balanced cache duration
5 seconds is too short to gain caching benefits; 1 hour is too long risking stale data. 5 minutes (300 seconds) balances freshness and performance.
Final Answer:
Set @cacheControl(maxAge: 300) to cache for 5 minutes -> Option C
Quick Check:
Moderate maxAge balances freshness and speed [OK]
Hint: Pick cache time balancing freshness and speed [OK]