Docs

Preview, URLs, cache purge, and cost analysis

This page covers the delivery side of the product: previewing assets, generating URLs, purging cache paths, and reading cost estimates without inventing precision.

WindowsmacOSLinux
PreviewURLsCacheCost

How asset preview works, when public and signed URLs differ, how cache purge is enabled, and what the cost view is actually estimating.

  • Inline preview eligibility
  • Public URL and signed URL behavior
  • Cloudflare cache purge requirements
  • Cost analysis estimate model
Applies to
WindowsmacOSLinux
Covers
PreviewURLsCacheCost

Preview, URLs, cache purge, and cost analysis

Inline preview support

The app supports inline preview for selected image and text formats.

Image preview candidates:

  • jpg
  • jpeg
  • png
  • webp
  • gif
  • svg
  • avif

Text preview candidates include:

  • plain text
  • json
  • md
  • html
  • css
  • js
  • ts
  • tsx
  • yml
  • yaml
  • xml

Preview eligibility also depends on the configured maximum preview file size. If the object is larger than the preview threshold, the app reports that preview is disabled for size, not that the object is broken.

Preview settings that matter

Preview behavior is controlled from Settings > Preview:

  • Enable image preview
  • Enable inline text preview
  • Max preview file size
  • Signed URL preview expiry

If inline preview is disabled in settings, the product reports that directly. It does not silently fall back to frontend-side credential use.

Signed URLs

Signed URLs are generated in the backend.

Important boundaries:

  • object-level signed URL generation is an R2 backend operation
  • preview signed URLs are also backend-generated
  • the frontend does not sign URLs itself

Signed URL expiry is clamped for safety:

  • preview URL generation uses a short-lived expiry window
  • object action signed URLs can use a longer expiry, but still within bounded limits

Use signed URLs when the object is private and you need time-limited access or sharing.

Public URLs

Public URL generation is mapping logic, not a permission grant.

Current mapping order:

  1. profile CDN domain, if configured
  2. profile public base URL, if configured
  3. raw R2 endpoint path

If no CDN or public base URL exists, the app can still return an endpoint-based URL. That does not mean the object is publicly readable. It only means the product can construct a URL shape.

Cache purge requirements

Cache purge is available only when the active profile includes:

  • Cloudflare Zone ID
  • Cloudflare API token with purge permission
  • a public URL mapping that resolves the selected object to the actual public URL

If any of those are missing, purge actions are unavailable by design.

The product supports:

  • purging selected object URLs
  • purging arbitrary URLs from the cache tools area
  • validating whether the active profile has enough purge configuration

Use purge only when the selected URL maps to the real public asset path. If the object cannot be mapped to a public URL, the product blocks purge instead of guessing.

Preview and delivery workflow

A reliable delivery workflow usually looks like this:

  1. Upload or sync the asset.
  2. Confirm metadata and cache-control in object details.
  3. Preview the asset if the file type is supported.
  4. Copy the public URL or generate a signed URL.
  5. Purge the public URL if you are replacing cached content.

That keeps storage, delivery, and cache operations attached to the same object context.

Cost analysis is an estimate layer

The cost view is not pretending to be authoritative Cloudflare billing data.

Current purpose:

  • show bucket footprint
  • show prefix footprint
  • highlight largest prefixes
  • highlight largest objects
  • estimate monthly storage cost from your configured storage price

Use it for operational visibility and prioritization, not for invoice reconciliation.

Cost settings that matter

In Settings > Cost Analysis, the current operator-facing controls are:

  • currency
  • storage price per GB per month

Those values shape how the estimate is rendered. If your pricing assumptions are wrong, the estimate will also be wrong.

Common mistakes

"Public URL" does not work in the browser

Check:

  • whether the object is actually served publicly
  • whether the CDN domain or public base URL is correct
  • whether the copied URL shape matches the public delivery path

Preview is unavailable for a supported file type

Check:

  • preview file size threshold
  • preview settings toggles
  • object content type and extension

Purge is unavailable

Check:

  • Zone ID
  • API token
  • token scope
  • URL mapping for the selected object

Cost numbers look low or high

Check:

  • storage price setting
  • whether you are reading bucket vs prefix scope
  • whether you expected invoice-grade billing instead of a storage estimate