I'm following up a quick chat with Chris, and FND, on #tiddlyweb, about delayed loading of tiddlers. The aim is to discuss possible implementations in TiddlyWeb and get started working on one or more of them.
This is by no means a new topic and FND pointed me at a thread summarizing an experimental implementation in ccTiddly: http://groups.google.com/group/TiddlyWikiDev/browse_thread/thread/6176bd7c7ae2400f/e02077f7ccfa3353?lnk=gst&q=skinny+tiddlers#e02077f7ccfa3353 In fact, more recent topics on the ccTiddly group suggest Simon is continuing to tackle this problem; so there is already an approach we can gain insights from. Just to restate the point of this: the primary motivation is to reduce the initial load time of a large TiddlyWiki, and generally to improve scalability. I roughly think of initial load time as the time elapsed between hitting go in your browser and seeing a fully rendered tiddlywiki with all default tiddlers displayed. It might help to distinguish two approaches to delayed loading of tiddlers (corrections appreciated): *lazy loading: After first opening the wiki, the starting tiddlers are loaded, and additionally the client is sent the names of all the other tiddlers on the server. -This is done using skinny tiddlers which are essentially just the title (and meta data?). It amounts to sending a table of contents to the user when they first load the wiki, and later filling in tiddler bodies upon request. -The initial load time depends on the number of tiddlers in the wiki. *load on demand: After first opening the wiki, the starting tiddlers are loaded, but no information about other tiddlers on the server is sent to the client. - How this would be done remains to be seen. - Initial load time is independent of the number of tiddlers. Both approaches ought to yield major performance improvements. As noted, lazy loading will incur a small increase in initial load time as tiddlers are added to the wiki, but this increase should only start to even be noticeable after adding a large number of tiddlers. Load on demand should provide constant load time no matter how many tiddlers are in the document. Theoretically Wikipedia could be stored in a TW and the initial load would still be snappy. I think the problem of implementing either of these methods can be divided into two main questions: 1) What gets loaded initially? Default tiddlers, plugins, etc,. 2) How are requests handled after the initial load is done and the user starts interacting with the wiki? This concerns retrieval of additional tiddlers, searching, etc,. Question 2 brings up the trade off that comes with delaying tiddler loading: namely waiting for tiddlers to load when links to tiddlers are clicked. In general it would be nice to get the benefit of a quick "boot up", while still preserving the seamless navigation we get with a standalone TiddlyWiki (tiddlers show up the moment you click them). I noticed in FND's thread the nice idea of streaming tiddlers in the background. I think a cool variation would be to stream or "prefetch" only tiddlers that are linked from the currently open tiddler(s). This might achieve a compromise between not transferring unrequested data and trying to maintain smooth navigation. Anyway that's for later consideration. For now I've conveniently ignored any painful realities and stuck to concepts. Please correct anything you find inaccurate, I've actually written this post while knowing very few details. Hopefully the core devs and others can give their input and we can move towards some concrete aspects of developing the feature in TiddlyWeb. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "TiddlyWikiDev" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/TiddlyWikiDev?hl=en -~----------~----~----~----~------~----~------~--~---
