This commit is contained in:
Mateusz Gruszczyński committed 2026-10-22 23:00:07 +02:00
1 parent d8bdc6e780
commit 70388578cb
5 files changed
+143 -122

No files matched your search

+29 -8
View File
@@ -2211,22 +2211,43 @@
One byte range can be served from a complete cached object;
multipart/unsupported ranges pass through.</p>
<div class="cache-varnish-setting">
<label class="check"><input id="cache-varnish-compatible" type="checkbox" /><span
data-i18n="cacheVarnishCompatible">Varnish-compatible cache policy (recommended; enabled by default)</span></label>
<label class="check"><input id="cache-varnish-compatible"
type="checkbox" /><span
data-i18n="cacheVarnishCompatible">Varnish-compatible cache policy
(recommended; enabled by default)</span></label>
<details class="metric-info cache-varnish-info">
<summary data-i18n-aria="cacheVarnishCompatibleInfoLabel"
aria-label="Varnish-compatible cache behavior">i</summary>
<div class="metric-info-popover" role="note">
<p class="fine" data-i18n="cacheVarnishCompatibleHelp">A browser Shift+F5 (no-cache, max-age=0 or Pragma: no-cache) uses a fresh cache HIT without replacing it or resetting Age.</p>
<p class="fine" data-i18n="cacheVarnishCompatibleSafeguards">Preserves client no-store, only-if-cached (504 on MISS; no origin contact or background refresh), min-fresh and max-stale (including max-stale=0 during grace); existing cookie rules, Authorization, Vary, PURGE/BAN, HOT/COLD and transformations stay active.</p>
<p class="fine" data-i18n="cacheVarnishCompatibleBackendHelp">Origin no-cache with a validator remains revalidatable. If an explicit fallback TTL is set, public no-cache responses may instead be reused for that TTL, even without a validator. Private/no-store/Set-Cookie and Surrogate-Control: no-store remain blocked. Zero-TTL objects may be retained for stale-if-error or revalidation; explicit stale-while-revalidate=0 is respected.</p>
<p class="fine" data-i18n="cacheVarnishCompatibleModeHelp">Implicit grace (60 seconds by default, configurable below) only applies to eligible fresh-at-storage responses without an explicit stale-while-revalidate directive. Off restores strict client reload semantics. Changing the mode invalidates existing cached objects. This is not full Varnish VCL emulation.</p>
<p class="fine" data-i18n="cacheVarnishCompatibleHelp">A browser
Shift+F5 (no-cache, max-age=0 or Pragma: no-cache) uses a fresh
cache HIT without replacing it or resetting Age.</p>
<p class="fine" data-i18n="cacheVarnishCompatibleSafeguards">Preserves
client no-store, only-if-cached (504 on MISS; no origin contact or
background refresh), min-fresh and max-stale (including max-stale=0
during grace); existing cookie rules, Authorization, Vary,
PURGE/BAN, HOT/COLD and transformations stay active.</p>
<p class="fine" data-i18n="cacheVarnishCompatibleBackendHelp">Origin
no-cache with a validator remains revalidatable. If an explicit
fallback TTL is set, public no-cache responses may instead be reused
for that TTL, even without a validator. Private/no-store/Set-Cookie
and Surrogate-Control: no-store remain blocked. Zero-TTL objects may
be retained for stale-if-error or revalidation; explicit
stale-while-revalidate=0 is respected.</p>
<p class="fine" data-i18n="cacheVarnishCompatibleModeHelp">Implicit
grace (60 seconds by default, configurable below) only applies to
eligible fresh-at-storage responses without an explicit
stale-while-revalidate directive. Off restores strict client reload
semantics. Changing the mode invalidates existing cached objects.
This is not full Varnish VCL emulation.</p>
</div>
</details>
</div>
<div class="cache-varnish-grace-field">
<label for="cache-varnish-grace" data-i18n="cacheVarnishGrace">Default grace (seconds, 0 = off)</label>
<input id="cache-varnish-grace" type="number" min="0" max="604800" step="1" required />
<label for="cache-varnish-grace" data-i18n="cacheVarnishGrace">Default grace
(seconds, 0 = off)</label>
<input id="cache-varnish-grace" type="number" min="0" max="604800" step="1"
required />
</div>
<div class="card soft-card cache-memory-sizing">
<div class="card-heading">