Caching
Every resource processed by NetKernel has a URI which can be used transparently as the key for an associated cached resource. Requests
for a frequently used URI will be served immediately from cache. All NetKernel components, including
Accessors and the results of invoking Accessors, have a URI and so are intrinsically cachable.
The default NetKernel cache is a dependency cache, all resources accumulate dependency metadata which binds
them with the resources used in their generation. If a dependent resource expires or is changed, for example a
file is edited, the dependency chain is automatically and transparently invalidated and all cached dependents voided.
Resources may also be time dependent and can be given an expected lifetime - this can be very efficient for distributed networked resources.
The opportunity to create layered applications enabled by the module infrastructure combines very effectively with the dependency
cache and can mean that large parts of an application can offer equivalent performance to serving a static resource and yet be dynamically generated.
By default there is a single system-wide cache, though each module may implement its own cache. If caching is not important
for an application set, or deployment limitations inhibit one, NetKernel will operate in a functionality equivalent, albeit slower,
way.