[dokuwiki] Re: How are page caches updated wrt in/existing links?

  • From: Chris Smith <chris@xxxxxxxxxxxxx>
  • To: dokuwiki@xxxxxxxxxxxxx
  • Date: Mon, 05 Nov 2007 11:32:07 +0000

Take a look at inc/cache.php.  In particular _usecache() method for
cache_renderer class.  That function checks for changes in the existence
of the page's internal wiki links, invalidating the cache if its finds
any.  Those links along with existence information are recorded by the
metadata renderer in the page's metadata.

Fwiw, my contention is that the DW cache logic is sophisticated and
accurate enough to allow wikiadmins to set long cache times
($conf['cachetime']) when there is no chance of pages being updated
outside DW(1).  One rider to this is using plugins that change page
content outside of the direct page editing process and don't include an
action component to handle any cache validation required by that
updating.  For an example of a plugin that does this correctly, refer to
the include plugin.

(1) This can have a large effect on the perceived speed/responsiveness
of DW.  On my server it can take more than 10 times as long to generate
a page from instructions as it does to show a page from cache,  70ms v
700ms+.  For pages that are viewed infrequently with respect to the
cache time, this can mean they are being generated on many/most views.

-- Chris


YC Chan wrote:
> Hi,
> DokuWiki uses wikilink1 / wikilink2 classes to designate existing /
> inexisting files, resp.
> I would like to know what this class information is updated when a page is
> rendered from its cache.
>
> I got to around the p_cached_output function:
> when useCache() returns true, the parsed version is retrieved from cache.
> else, a new version is produced and saved in the cache.
>
> I don't understand how the link class is updated. In a sample case, I
> printed out the cache dependancies.
> There wasn't even the referenced link in the dependancies, but the link was
> properly updated.
>
> Thanks for all comments.
>
>   

-- 
DokuWiki mailing list - more info at
http://wiki.splitbrain.org/wiki:mailinglist

Other related posts: