A compact, non-exhaustive reference for the values that appear across the notes. Prefer the linked source for the authoritative rule; these tables are memory aids.

HTTP status and cache freshness

CodeMeaningUsed for
200 OKThe resource exists and the representation is returnedbaseline for a healthy route
301 Moved PermanentlyThe URI changed permanentlydeciding between the old and new URI in logs
308 Permanent RedirectNon-GET methods keep their method across the redirectthe redirects note
206 Partial ContentA range request was honoredthe range-requests note
304 / 412Validators drive conditional requeststhe conditional-requests note
404Not foundthe handle_errors page in the Caddyfile
500 / 502 / 503Origin or proxy failurerelease smoke tests and restart loops
Directive or headerEffect
Cache-Control: public, max-age=31536000, immutablelong lease for content-hashed assets
Cache-Control: private, max-age=300 plus ETagshort freshness with cheap revalidation for HTML
Cache-Control: no-storenever store; for session-bound responses
ETag / If-None-Match leading to 304strong validation without re-downloading the body
Last-Modified / If-Modified-Sinceweaker timestamp validation when no ETag exists

See also: cache headers, conditional requests, compression, method semantics.

Security headers at the public edge

HeaderA short version of the policy
Content-Security-Policydefault-src 'self'; script-src 'none' keeps the page script-free
Strict-Transport-Securitymax-age=31536000; includeSubDomains forces HTTPS for a year
X-Content-Type-Optionsnosniff stops MIME-type guessing
X-Frame-OptionsDENY prevents framing
Referrer-Policystrict-origin-when-cross-origin limits referrers
Set-CookieSecure; HttpOnly; SameSite=Lax narrows cookie scope by default

See also: security headers, HSTS rollout, cookie scope, content type.

DNS and TLS checks

Record or checkWhat it answers
A / AAAAwhich address the name resolves to
CNAMEwhich canonical name the alias follows
CAAwhich certificate issuers are authorized
TTLhow long resolvers may cache the answer; lower it before a change window
# where a name resolves, and for how long
dig +nocmd +noall +answer +ttl example.com A

# print the served chain and expiry without changing anything
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null 2>/dev/null | openssl x509 -noout -dates -issuer

See also: CAA records, DNS change window, certificate chain, expiry check.

Caddy and release smoke tests

StepCheck
Buildone complete artifact directory per release
Manifestevery published byte named with a checksum
Publishswitch the served directory only after verification; keep the previous one
Edgerequest a page, a file, and a missing path; compare status codes and content types
TLStest the HTTP-to-HTTPS redirect and the certificate name on the public hostname
# per file
sha256sum <file>

# plain-text checks from the operator kit
check-http-headers.sh https://www.xbcatm.com/
check-tls-expiry.sh www.xbcatm.com 30

See also: static root, release checklist, read the edge, atomic switch, release manifest, resources.

Sources