A Fetch handler that sits in front of an origin that cannot load the library, such as PHP or a
Drupal site with no module, and gives it local page views.
/.spool/* and /spool-sw.js are answered here. Everything else goes to the origin with its
method, headers and body, and redirects are passed through. A GET or HEAD without Authorization
or a cookie outside publicCookies, answered 200 as text/html with no Set-Cookie, private
or no-store, is decorated so the worker can keep it; anything else is forwarded untouched.
The tags the origin sends in Cache-Tag, Surrogate-Key, X-Drupal-Cache-Tags or xkey
become the page's dependencies, and a page with none depends on its own path.
Limits: the proxy sees finished HTML, so an artifact is the whole page, the replica holds no
records, and two pages never share a fragment. A page is invalidated by POST /.spool/purge, or
when the proxy sees its body change, and it stays on a device until its route's maxStale runs
out and the next sync reports the change. Freshness is therefore bounded by maxStale plus the
time a purge takes to arrive. The memory of last-seen bodies lives in the instance: a restart
forgets it, and each instance of a scaled-out proxy keeps its own.
A Fetch handler that sits in front of an origin that cannot load the library, such as PHP or a Drupal site with no module, and gives it local page views.
/.spool/*and/spool-sw.jsare answered here. Everything else goes to the origin with its method, headers and body, and redirects are passed through. A GET or HEAD withoutAuthorizationor a cookie outsidepublicCookies, answered 200 astext/htmlwith noSet-Cookie,privateorno-store, is decorated so the worker can keep it; anything else is forwarded untouched. The tags the origin sends inCache-Tag,Surrogate-Key,X-Drupal-Cache-Tagsorxkeybecome the page's dependencies, and a page with none depends on its own path.Limits: the proxy sees finished HTML, so an artifact is the whole page, the replica holds no records, and two pages never share a fragment. A page is invalidated by
POST /.spool/purge, or when the proxy sees its body change, and it stays on a device until its route'smaxStaleruns out and the next sync reports the change. Freshness is therefore bounded bymaxStaleplus the time a purge takes to arrive. The memory of last-seen bodies lives in the instance: a restart forgets it, and each instance of a scaled-out proxy keeps its own.