X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/4be470a2194aff09056570718d530d103ea2bc45..3ce8030dafc40a8188f6a32567c04d157b0ac39f:/doc/tips/optimising_ikiwiki.mdwn diff --git a/doc/tips/optimising_ikiwiki.mdwn b/doc/tips/optimising_ikiwiki.mdwn index 579157291..14d619ff8 100644 --- a/doc/tips/optimising_ikiwiki.mdwn +++ b/doc/tips/optimising_ikiwiki.mdwn @@ -34,7 +34,7 @@ when their wiki was small, and found it got slower as they added pages. ## use the latest version -If your version of ikiwiki is not [[!verison]], try upgrading. New +If your version of ikiwiki is not [[!version]], try upgrading. New optimisations are frequently added to ikiwiki, some of them yielding *enormous* speed increases. @@ -64,7 +64,7 @@ smaller. \[[!inline pages="blog/* and link(tag)" show=0 archive=yes quick=yes]] -Only downsides: This won't show titles set by the [[!ikiwiki/directive/meta]] +Only downsides: This won't show titles set by the [[ikiwiki/directive/meta]] directive. And there's no RSS feed for users to use -- but if this page is only for the archives or tag for your blog, users should be subscribing to the blog's main page's RSS feed instead. @@ -85,7 +85,7 @@ The resulting html file might get big and expensive to generate as you keep adding pages. First, consider removing the "show=title". Then the map will not show page -titles set by the [[!ikiwiki/directive/meta]] directive -- but will also +titles set by the [[ikiwiki/directive/meta]] directive -- but will also only need to be generated when pages are added or removed, not for every page change. @@ -133,13 +133,28 @@ This site's own [[plugins/linkmap]] rarely slows it down, because it only shows the [[index]] page, and the small set of pages that link to it. That is accomplished as follows: - \[!linkmap pages="index or (backlink(index)"]] + \[[!linkmap pages="index or (backlink(index)"]] ## overhead of the search plugin Be aware that the [[plugins/search]] plugin has to update the search index whenever any page is changed. This can slow things down somewhat. +## profiling + +If you have a repeatable change that ikiwiki takes a long time to build, +and none of the above help, the next thing to consider is profiling +ikiwiki. + +The best way to do it is: + +* Install [[!cpan Devel::NYTProf]] +* `PERL5OPT=-d:NYTProf` +* `export PER5OPT` +* Now run ikiwiki as usual, and it will generate a `nytprof.out` file. +* Run `nytprofhtml` to generate html files. +* Those can be examined to see what parts of ikiwiki are being slow. + ## scaling to large numbers of pages Finally, let's think about how huge number of pages can affect ikiwiki. @@ -153,7 +168,7 @@ Finally, let's think about how huge number of pages can affect ikiwiki. quickly, but still, lots more pages will make PageSpecs more expensive. * The backlinks calculation has to consider every link on every page - in the wiki. (In practice, most pages only like to at most a few dozen + in the wiki. (In practice, most pages only link to at most a few dozen other pages, so this is not a `O(N^2)`, but closer to `O(N)`.) * Ikiwiki also reads and writes an `index` file, which contains information