Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Feature Request: first request WebP, second request: AVIF

Open
#79 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
aws, typescript
Domain
backend, cloud

Research direction

Start by locating the TypeScript AWS Lambda entry point that handles image requests and the CloudFront response and caching configuration. Trace how the current AVIF conversion and If-None-Match handling work. Done means the first request can return WebP promptly, the follow-up can produce AVIF, and the documented Cache-Control behavior is covered by tests or verification.

Written by the indexing model from the issue text.

Description

Background

Lamada takes long time to transform image to avif format.

Image

Solution: Stale-While-Revalidate

stale-while-revalidate is a caching setting. It’s a parameter in the Cache-Control header, and it tells CDNs how long they can keep serving the image after it expires:

Cache-Control: max-age=3600, stale-while-revalidate=60
               ↑ how long a file can be cached for
                             ↑ how long a CDN can keep serving
                               the file after max-age expires

Here’s how we used it to make sure AVIF never makes image responses slow:

  1. First Request: WebP
    On the first request, we serve the image as WebP, not as AVIF.

We also set the Cache-Control header to max-age=0, stale-while-revalidate=31536000

  1. Immediate Expiry
    Because max-age is set to 0, the WebP image expires immediately. This prompts the CDN to forward the second request to us.

  2. Second Request: AVIF
    When the second request arrives, we serve the image as AVIF.

Responding to the second request can take several seconds because AVIF conversion is slow. But thanks to stale-while-revalidate, our CDN (CloudFront) keeps serving the WebP image until the conversion is complete.

We recognize the second request from the first by the If-None-Match header. Only the second request has it.

When the AVIF image is ready, we return it with Cache-Control: max-age=31536000. This allows the CDN to cache and serve it for a long time.

# See More

Dominant language
TypeScript
Stars
276
Forks
151
PR merge metrics
No merged PRs in 30d

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from aws-samples/image-optimization

All issues in aws-samples/image-optimization

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.