SAA-C03 Design Cost-Optimized Architectures Practice Question
A team serves static content (JavaScript, CSS, images) from S3 through CloudFront. After a recent release, CloudFront reports a low cache hit ratio and the S3 origin receives a much higher request rate. The site still works, but billing shows higher origin and data transfer costs. Which change is most likely to improve cache hit ratio and reduce origin load?
⚠ Common exam trap
Test-takers frequently think forwarding query strings (Option D) ensures freshness, but it actually destroys cacheability for static assets, while the real solution is to use versioned filenames and increase TTLs to maximize edge caching.
Answer choices
Why each option matters
Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.
Correct answer & explanation
✓
Configure a CloudFront cache policy (or update HTTP cache-control headers) to increase TTLs for versioned static assets and enable compression for text assets.
Increasing TTLs for versioned static assets via a CloudFront cache policy or HTTP Cache-Control headers ensures that CloudFront caches these immutable objects for longer periods, reducing the number of requests forwarded to the S3 origin. Enabling compression for text assets reduces the data transferred from origin to edge, further lowering origin load and costs. This directly addresses the low cache hit ratio and high origin request rate described in the scenario.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
- ✓
Configure a CloudFront cache policy (or update HTTP cache-control headers) to increase TTLs for versioned static assets and enable compression for text assets.
Why this is correct
CloudFront cache hit ratio improves when objects are cacheable for longer and requests can be served from edge caches. Proper TTLs for versioned assets prevent unnecessary revalidation. Compression reduces payload size for eligible content types, lowering transfer costs.
- ✗
Disable CloudFront access logging so fewer requests are recorded and billing decreases automatically.
Why it's wrong here
Disabling CloudFront access logging does not lower the per-request or data-transfer charges that drive your bill; those charges are incurred when CloudFront receives requests and serves bytes to viewers, regardless of whether log files are written. Access log delivery to S3 has its own small storage and PUT costs, so turning it off only removes that separate cost and, more importantly, eliminates visibility into cache hit behavior. Since the core problem is a low cache hit ratio causing excessive origin fetches and data transfers, disabling logging does not address the root cause and may even make it harder to diagnose which objects are generating the most origin traffic. The correct approach is to make objects more cacheable by increasing TTLs and enabling compression, not to stop recording metadata about the requests.
- ✗
Set the distribution’s origin to use S3 Transfer Acceleration to reduce the number of requests hitting S3.
Why it's wrong here
Transfer Acceleration affects how data is delivered to S3 when accessed, but it doesn’t change whether CloudFront caches objects. If cache hit ratio is low due to TTL or cacheability headers, origin request volume remains high.
- ✗
Force CloudFront to forward query strings to the origin for all static content so the latest versions are always fetched.
Why it's wrong here
Forwarding query strings to the origin for all static content makes CloudFront treat each unique query string as a separate cache key entry, so even if the underlying file never changes, multiple query string permutations fragment the cache and often result in cache misses. This fragmentation lowers the cache hit ratio and drives more requests back to the S3 origin, which increases origin request costs and data transfer fees—exactly the opposite of the goal. Moreover, using query strings to 'fetch the latest version' is an anti-pattern; modern versioned static assets should embed a version or hash in the object path (e.g., /js/app.v1.js) or use a cache policy with TTLs that reflect immutability, not force revalidation via query parameters. To improve cost, you should configure CloudFront to ignore query strings for static content or use a cache policy that does not include them in the cache key, letting each versioned file be cached and reused efficiently.
Visual reference
Quick reference
AWS S3 Storage Class Comparison
| Storage Class | Min Duration | Retrieval | Use Case |
|---|---|---|---|
| S3 Standard | None | Immediate | Frequently accessed data |
| S3 Standard-IA | 30 days | Immediate | Infrequent access, rapid retrieval |
| S3 One Zone-IA | 30 days | Immediate | Non-critical infrequent data |
| S3 Intelligent-Tiering | None | Immediate–hours | Unknown or changing access patterns |
| S3 Glacier Instant | 90 days | Milliseconds | Archive with instant retrieval |
| S3 Glacier Flexible | 90 days | Minutes–hours | Archive, flexible retrieval |
| S3 Glacier Deep Archive | 180 days | Hours | Long-term compliance archive |
Go deeper
Related to this question
About these practice questions
Courseiva writes every SAA-C03 question from scratch — 935 in total, each with an explanation and a wrong-answer breakdown. None are copied from real exams or dumps. Learn why practice questions differ from exam dumps →
JA
Written by Johnson Ajibi, MSc IT Security
Senior Network & Security Engineer · founder of Courseiva
This SAA-C03 practice question is part of Courseiva's free Amazon Web Services certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the SAA-C03 exam.