A determination can be made of bow changes to underlying data affect the
value of objects. Examples of applications are: caching dynamic Web pages;
client-server applications whereby a server sending objects (which are
changing all the time) to multiple clients can track which versions are
sent to which clients and how obsolete the versions are; and any situation
where it is necessary to maintain and uniquely identify several versions
of objects, update obsolete objects, quantitatively assess how different
two versions of the same object are, and/or maintain consistency among a
set of objects. A directed graph called an object dependence graph, may be
used to represent the data dependencies between objects. Another aspect is
constructing and maintaining objects to associate changes in remote data
with cached objects. If data in a remote data source changes, database
change notifications are used to "trigger" a dynamic rebuild of associated
objects. Thus, obsolete objects can be dynamically replaced with fresh
objects. The objects can be complex objects, such as dynamic Web pages or
compound-complex objects, and the data can be underlying data in a
database. The update can include either storing a new version of the
object in the cache; or deleting an object from the cache. Caches on
multiple servers can also be synchronized with the data in a single common
database. Updated information, whether new pages or delete orders, can be
broadcast to a set of server nodes, permitting many systems to
simultaneously benefit from the advantages of prefetching and providing a
high degree of scaleability.