
![]() |
Show Changes |
![]() |
Edit |
![]() |
|
![]() |
Recent Changes |
![]() |
Subscriptions |
![]() |
Lost and Found |
![]() |
Find References |
![]() |
Rename |
![]() |
Administration Page |
| Search |
History
| 9/28/2004 12:42:27 PM |
![]() |
List all versions |
FlexWiki caches three major types of information:
The cool part (and the hard part!) about this is managing cache invalidation. Cache entries tend to need to invalidate when a topic gets changed.
The cached entry for a formatted topic gets invalidated when the topic changes -- or when any of the topics it depends on gets changed (e.g., via an include, when the namespace it's in has its imports changed, etc.).
The cached entry for properties get changed when the properties get changed for the topic.
The history for a topic gets invalidated when a new version of the topic is created.
One of the major challenges of implementing WikiTalk was how to maintain caching when dependencies can be introduced programatically via WikiTalk. This is handled by accumulating, as a side-effect of running the interpreter, a collection of cache invalidation rules. These rules basically say:
The cache entry for a formatted page includes all of the invalidation rules for all of the WikiTalk used by that page.
[I was pretty proud when I got that to work -- DavidOrnstein]
[Though there may still be some bugs
]