← Back to blog

Traffic scaling economics · July 18, 2026

Egress, images, CDNs, and queues: the expensive shape of growing traffic

Traffic does not turn into infrastructure cost at one fixed rate. Payload size, cache hit ratio, image variants, upload bursts, worker throughput, and object-store operations decide whether a launch costs dollars or creates a backlog and a four-figure transfer bill.

15 minute readDocumentedModeled

Method

What this comparison measures

  1. Model public transfer separately from storage, request operations, image transformations, and application compute.
  2. Use four explicit traffic points and a 3 MB average uncached response; change either assumption to critique the result.
  3. Use published Supabase and Cloudflare rates checked July 18, 2026; taxes, regional exceptions, and enterprise discounts are excluded.
  4. Treat queue charts as deterministic capacity models, not measurements from a particular customer application.

Payload size is a traffic multiplier

One million page views at 3 MB each transfer roughly 3 TB before protocol overhead and repeat downloads. Reducing the average response to 1 MB removes about 2 TB without changing CPU, database, or user count. For content products, byte budgeting can dominate server tuning.

Supabase currently documents $0.09 per GB of uncached egress and $0.03 per GB of cached egress beyond separate 250 GB Pro allowances. Cloudflare R2 documents no Internet egress charge, but storage and Class A or B operations still bill, and connecting another metered service can add its own charge.[1][2]

The graph isolates transfer only. It assumes 3 MB per visit, a paid Supabase organization, and no compression change as traffic grows. R2's zero line does not mean a zero storage system bill.

Modeled transfer charge for a 3 MB visitMonthly transfer-only cost after the published 250 GB Supabase allowances. Cloudflare R2 Internet egress is published as free; storage and operations are excluded.
Modeled transfer charge for a 3 MB visitMonthly transfer-only cost after the published 250 GB Supabase allowances. Cloudflare R2 Internet egress is published as free; storage and operations are excluded.

An image pipeline is a capacity system

Responsive markup prevents a phone from downloading a desktop hero. Modern formats and quality settings reduce bytes further. Visual content, browser support, and the quality target change the result, so measure production images instead of assuming one compression ratio.[4][5]

Cloudflare Images counts unique transformations, stored images, and delivered images differently. Its Free plan currently includes 5,000 unique transformations; new transformations return an error after the limit while cached variants continue. Paid delivery counts every image requested by the browser.[3]

The chart uses one illustrative 2.4 MB source photo. It is not a benchmark of codecs. Its purpose is to show why resizing to display dimensions is usually a larger first win than switching formats while preserving an oversized canvas.

Illustrative bytes delivered for one product imageModeled outputs from a 2.4 MB source. Exact results depend on content and encoder settings; the values are transparent editorial assumptions, not vendor benchmarks.
Illustrative bytes delivered for one product imageModeled outputs from a 2.4 MB source. Exact results depend on content and encoder settings; the values are transparent editorial assumptions, not vendor benchmarks.Original upload2,400 KBNo resize or delivery optimizationResponsive JPEG420 KBDisplay-sized rasterResponsive WebP280 KBSame modeled display dimensionsResponsive AVIF210 KBSame modeled display dimensionsKB/image

Uploads should not hold the web request hostage

A server that proxies a 500 MB upload consumes inbound bandwidth, an application connection, memory buffers, and often outbound bandwidth to object storage. A time-limited presigned URL lets the client upload directly to a specific object without receiving general storage credentials.[6]

Image decoding, virus scanning, transcription, and derivative generation are bounded worker tasks. The web request should validate intent and enqueue work; workers should pull at a controlled rate. This is not a Sharp-specific recommendation—Sharp is one possible image worker, while queue admission and concurrency are system properties.

A queue absorbs a burst only when its drain rate eventually exceeds the arrival rate. If work arrives at 5,000 jobs per minute and workers complete 1,000, the backlog grows by 4,000 each minute. Adding a queue without a capacity and expiry policy merely delays the outage.

Queue backlog through a five-minute launch burstModeled 5,000 jobs/min arriving for five minutes, workers draining 1,000/min throughout, then no new arrivals. The queue needs 20 additional minutes to return to zero.
Queue backlog through a five-minute launch burstModeled 5,000 jobs/min arriving for five minutes, workers draining 1,000/min throughout, then no new arrivals. The queue needs 20 additional minutes to return to zero.

Measure the cache and queue as product behavior

A high cache hit ratio can move traffic away from the origin, but stale or uncacheable personalized responses still reach compute. Record response bytes, cache status, origin bytes, transformation count, object operations, and user-visible freshness together.

For asynchronous work, publish accepted, started, completed, failed, retried, expired, and dead-letter counts. A fast HTTP 202 with a twelve-hour backlog is not a fast product.

Amazon's Builders' Library recommends admission control before a queue becomes impossible to drain. Prioritization, load shedding, and bounded retries belong in the launch plan too.[7][8]

  • Set a byte budget for each page and API operation alongside the request-rate target.
  • Track cache hit ratio by object class and count origin bytes after CDN caching.
  • Pre-generate common image variants; bound arbitrary transformation dimensions.
  • Upload large objects directly to storage with short-lived, narrowly scoped credentials.
  • Set queue age and completion-time SLAs alongside HTTP latency.
  • Load test burst arrival, sustained drain, retries, and poison jobs in an isolated contour.

Source register

Specifications and prices change. The links make this snapshot auditable.

Sources and commercial facts were checked on 2026-07-18. Prices exclude tax unless the source says otherwise.

  1. Manage Egress usageSupabase · billing
  2. Cloudflare R2 pricingCloudflare · pricing
  3. Cloudflare Images pricingCloudflare · pricing
  4. Image performanceweb.dev · product
  5. Responsive imagesweb.dev · product
  6. Uploading objects with presigned URLsAmazon Web Services · product
  7. Avoiding insurmountable queue backlogsAmazon Web Services · product
  8. Avoiding overload in distributed systemsAmazon Web Services · product