Project

General

Profile

Actions

Workbench responsiveness

Notes on Workbench performance/caching from brainstorming meeting 2024-09-04

  • Currently the store is our cache, and it caches individual objects (key is UUID)
    • When opening an object in a new tab, it might be easy to use postMessage to pass the current store contents to the new tab to speed things up
    • Each data explorer has its own store key, so (for example) we store "page of project listing" rather than "page 1 of project A listing with filters xyz"
    • We could start using the store to cache list responses (key is request URL with all params?)
    • We could pre-fetch and cache the next page of a listing before the user even clicks the "next page" button
    • Currently the store grows indefinitely, so if we use it more, we'll need an eviction strategy
    • We could save timestamps in the store so we don't re-fetch on every page view when navigating back and forth quickly
  • In theory, web workers could implement an HTTP cache shared between tabs
    • Lisa has some experience with web workers that didn't go well (ended up bailing), but would be willing to look into it again
    • Tom hasn't tried it but remembers reading that the mechanics of installing/updating the web worker code is non-trivial
    • Would presumably be disabled for most of the test suite
  • Collection file listings are slow because XML decoding is slow, and we don't use the store to cache them
    • We could start caching the (decoded) listings in the store
    • We could add a JSON format option to keep-web to skip XML encoding+decoding entirely (Workbench doesn't need to support arbitrary WebDAV servers, after all)

Updated by Tom Clegg 2 months ago · 1 revisions