Skip to content

Refactor getter caching based on keypath state - #223

Open
jordangarcia wants to merge 6 commits into
masterfrom
jordan/cache-improvements
Open

Refactor getter caching based on keypath state#223
jordangarcia wants to merge 6 commits into
masterfrom
jordan/cache-improvements

Conversation

@jordangarcia

@jordangarcia jordangarcia commented Sep 27, 2016

Copy link
Copy Markdown
Contributor

The current version of NuclearJS uses a cache key consisting of store
states (monotomically incresing ID per store). This has the
disadvantage of allowing only a single level of depth when figuring out
if a cache entry is stale. This leads to poor performance when the
shape of a Reactor's state is more deep than wide, ie a store having
multiple responsibilities for state tracking.

The implementation is as follows:

  • Consumer can set the maxCacheDepth when instantiating a reactor
  • Getters are broken down into the canonical set of keypaths based on
    the maxCacheDepth
  • Add a keypath tracker abstraction to maintain the state value of all
    tracked keypaths
  • After any state change (