Response headers (Cache-Control, ETag) in Rest API - Time & Space Complexity
When working with response headers like Cache-Control and ETag, it's important to understand how their use affects the time your API takes to respond.
We want to know how the time to handle these headers changes as the number of requests or resources grows.
Analyze the time complexity of the following code snippet.
GET /resource HTTP/1.1
Host: example.com
Response:
Cache-Control: max-age=3600
ETag: "abc123"
Content-Type: application/json
{
"data": "..."
}
This snippet shows a server sending Cache-Control and ETag headers with a resource response to help clients cache data efficiently.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Checking and generating ETag for each resource requested.
- How many times: Once per request, but depends on resource size and number of requests.
As the number of requests or resource size grows, the server must generate or verify ETags and set Cache-Control headers for each response.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 requests | 10 ETag checks and header sets |
| 100 requests | 100 ETag checks and header sets |
| 1000 requests | 1000 ETag checks and header sets |
Pattern observation: The work grows linearly with the number of requests handled.
Time Complexity: O(n)
This means the time to handle response headers grows directly with the number of requests processed.
[X] Wrong: "ETag generation is free and does not affect response time."
[OK] Correct: Generating or verifying ETags requires reading or hashing resource data, which takes time proportional to resource size and request count.
Understanding how response headers affect performance shows you can think about real-world API efficiency and scalability, a valuable skill in software development.
"What if we cache ETag values instead of generating them on every request? How would the time complexity change?"
Practice
Cache-Control header in an HTTP response?Solution
Step 1: Understand the role of Cache-Control
The Cache-Control header instructs browsers and caches how long they can store the response data before requesting it again.Step 2: Compare options with Cache-Control purpose
Only To tell browsers how long to keep the response data correctly describes this behavior. Other options describe unrelated functions.Final Answer:
To tell browsers how long to keep the response data -> Option DQuick Check:
Cache-Control = Duration for caching [OK]
- Confusing Cache-Control with security headers
- Thinking Cache-Control sets content type
- Assuming Cache-Control reveals server info
Solution
Step 1: Recall Cache-Control max-age syntax
The correct way to specify caching time in seconds is usingmax-age=seconds.Step 2: Check each option's correctness
Only "Cache-Control: max-age=3600" usesmax-age=3600, which is valid. Others use invalid directives.Final Answer:
"Cache-Control: max-age=3600" -> Option AQuick Check:
max-age sets cache time [OK]
- Using 'timeout' instead of 'max-age'
- Confusing Cache-Control with Expires header syntax
- Using unsupported directives like 'duration'
Cache-Control: max-age=0, must-revalidate ETag: "abc123"
What happens when the browser sends a request with header
If-None-Match: "abc123"?Solution
Step 1: Understand ETag and If-None-Match interaction
The ETag header is a unique identifier for the content version. The browser sends If-None-Match with the ETag value to check if content changed.Step 2: Interpret Cache-Control and server response
With max-age=0 and must-revalidate, the browser asks server to validate content. If ETag matches, server responds with 304 Not Modified, saving bandwidth.Final Answer:
Server returns 304 Not Modified if content unchanged -> Option AQuick Check:
ETag + If-None-Match = 304 if unchanged [OK]
- Assuming server always sends full content
- Confusing 304 with error codes
- Ignoring Cache-Control directives
Cache-Control: max-age=abc. What is the likely result?Solution
Step 1: Analyze max-age value validity
The max-age directive requires a numeric value in seconds. 'abc' is invalid.Step 2: Understand browser behavior on invalid Cache-Control
Browsers typically ignore invalid Cache-Control headers and treat the response as non-cacheable.Final Answer:
The browser ignores the Cache-Control header and does not cache -> Option CQuick Check:
Invalid max-age causes no caching [OK]
- Thinking server returns error for header syntax
- Assuming browser caches with invalid value
- Confusing max-age with other headers
Solution
Step 1: Identify headers that enable conditional requests
ETag provides a unique identifier for content versions, allowing clients to ask if content changed.Step 2: Understand Cache-Control no-cache directive
no-cache forces the browser to validate with the server before using cached data, ensuring fresh content without unnecessary full data transfer.Step 3: Evaluate other options
Options without ETag cannot validate changes efficiently; no-store disables caching; max-age=0 without ETag disables validation.Final Answer:
Cache-Control: no-cache and ETag with unique value -> Option BQuick Check:
no-cache + ETag = bandwidth saving [OK]
- Omitting ETag disables change detection
- Using no-store disables caching entirely
- Assuming max-age alone reduces bandwidth
Ready to prove it?
Pass the test and this pattern moves unknown
