Documentation

Cloudflare Worker

This page explains how worker/index.js caches images at the Cloudflare edge and what to change before deploying it.

Before Deploying

handler builds the origin URL with new URL(url.pathname, "[URL]"). [URL] is a placeholder: replace it with the image server origin (for example https://img-origin.example.com) before deploying, otherwise new URL throws.

Scope

Path extension Behavior
.jpg, .jpeg, .png, .webp, .svg (case-insensitive) Cache and fetch from origin
Anything else (including .avif, .pdf, no extension) Returns 400 with body 400

The check uses the original path extension, not the t parameter; reading a .jpg original with t=avif is still handled. Uploaded PDFs cannot be read through this Worker.

Cache Behavior

Item Behavior
Cache key Origin URL including every query parameter; an X-Custom-Cache-Key header records the query
Storage caches.default, written asynchronously via event.waitUntil(cache.put(...))
Lifetime Response rewritten to Cache-Control: public, max-age=604800 (7 days)
Diagnostic headers CF-Cache-Status: HIT / MISS, X-Query-String

Origin fetches reuse the original request's method and headers, and the origin response status is not checked.

Relationship with Nginx

The Worker fetches from Nginx; on a miss, Nginx's proxy_cache and the Go service take over. See Caching Layers for the full lookup order.

中文