Globs contain big, static blobs of data, that only get updated periodically. Eyre has an affordance for caching responses at specified urls.
Here we update docket to, whenever a glob gets added, updated or removed, manage the eyre response cache to match. We call +new-cache in every place where either +new-docket or +new-chad gets called, making sure to pass in the old $charge so that we can clear potentially-stale entries from the cache.
Note that docket's dynamic request serving behavior would respond to both /path.ext and /path/ext with the glob entry for the (clay-style) path /path/ext. However, we only add a response for the '/path.ext' url into the cache. This is the common case, and doing so avoids adding twice the amount of cache pressure.
For the %groups desk, whose initial pageload requests 32 files, this takes initial load time down from ~0.5s to ~0.1s (on localhost, so no "real networking" overhead).
About half of that remaining time is spent on the initial page request, which usually dynamically falls back to serving ./index.html. About a fifth is spent on loading ./desk.js and /session.js, which are served by docket independent of glob contents. Adding those into the cache could bring additional performance gains.
This should be considered soft-blocked on urbit/urbit#6909 and urbit/vere#603. Without those changes, docket may make /apps/* urls permanently unusable for dynamic binding.
(Targets #259 because the changes there are a prerequisite for getting docket to compile in the first place...)
Globs contain big, static blobs of data, that only get updated periodically. Eyre has an affordance for caching responses at specified urls.
Here we update docket to, whenever a glob gets added, updated or removed, manage the eyre response cache to match. We call
+new-cache
in every place where either+new-docket
or+new-chad
gets called, making sure to pass in the old$charge
so that we can clear potentially-stale entries from the cache.Note that docket's dynamic request serving behavior would respond to both
/path.ext
and/path/ext
with the glob entry for the (clay-style) path/path/ext
. However, we only add a response for the'/path.ext'
url into the cache. This is the common case, and doing so avoids adding twice the amount of cache pressure.For the
%groups
desk, whose initial pageload requests 32 files, this takes initial load time down from ~0.5s to ~0.1s (on localhost, so no "real networking" overhead).About half of that remaining time is spent on the initial page request, which usually dynamically falls back to serving
./index.html
. About a fifth is spent on loading./desk.js
and/session.js
, which are served by docket independent of glob contents. Adding those into the cache could bring additional performance gains.This should be considered soft-blocked on urbit/urbit#6909 and urbit/vere#603. Without those changes, docket may make /apps/* urls permanently unusable for dynamic binding.
(Targets #259 because the changes there are a prerequisite for getting docket to compile in the first place...)
Closes LAND-1539.