WikiCompiler

 

Wiki, classically, is an interpreted system: pages are stored in one form, and every time one is summoned for display a process converts it into the actual HTML that gets fed back to the client browser.

But might not there be advantages to a compiled Wiki? The vast majority of the hits on a Wiki server are simply requests to fetch a page. Why not precompute the HTML for all pages and save it, ready to deliver with no further ado? Would Wiki response time be noticeably faster? Would significant system processor resources be saved?

But what are the potential downside issues to worry about? The main one, as far as I can tell, is the need to change existing pages when a new Wiki page is added (or, rarer, when an existing page is deleted). Links which were formerly unfulfilled suddenly become real (or vice versa). The "Save" operation for a Wiki edit might therefore be slowed, since to maintain consistency it would require a search for backreferences on other pages. At the cost of complexity, those searches could be replaced by a lookup in a precomputed index table of cross-references among pages. Alternatively, a master update process might take place every so often to recompute and confirm all Wiki links, at the risk of inconsistencies in between updates.

So is it worth exploring a Wiki compiler? Maybe yes, particularly for larger Wikis with many users; probably not, most of the time ...

(see also ZhurnalWiki Preview (22 Jul 2001) for an outline of some related issues, as I saw them a couple of years ago, )


TopicProgramming - TopicEditingIssues - 2003-05-04



The Wiki interpretation of page source as such is not a significant overhead in the context of serving Web requests and running the Perl script – Perl is good at that sort of thing. When server capacity risks being saturated by Wiki processing, the logical step is to move to resident Perl (mod_perl), because the biggest overhead is loading the Perl interpreter for each request. – Bo Leuf


(correlates: QuickiWiki, KnowledgeAndSociety, Comments on SiteSuggestions, ...)