diff options
author | Andreas Gohr <andi@splitbrain.org> | 2005-08-06 17:58:57 +0200 |
---|---|---|
committer | Andreas Gohr <andi@splitbrain.org> | 2005-08-06 17:58:57 +0200 |
commit | 7131b6688badc1c1e9685aba4b222f147bc1df83 (patch) | |
tree | ed33e094b60b5196dfe693129a29421f361e93d5 /feed.php | |
parent | f4b3aca3e7d131ff1d87cbe60e231cc61e640da8 (diff) | |
download | rpg-7131b6688badc1c1e9685aba4b222f147bc1df83.tar.gz rpg-7131b6688badc1c1e9685aba4b222f147bc1df83.tar.bz2 |
caching for feeds
This patch adds caching for XML/ATOM feeds. This is most useful for the
default feed (linked from the footer and HTML meta header) as this is
usually the most used one.
The cache is invalidated if a change was made (by checking the the
filemtime of the changelog). A 5 minute settling time is used to avoid
invalidating the cache too often when the wiki changes rapidly.
darcs-hash:20050806155857-7ad00-5b9cb05b42d67c3f23f0358676735038b9f59664.gz
Diffstat (limited to 'feed.php')
-rw-r--r-- | feed.php | 36 |
1 files changed, 21 insertions, 15 deletions
@@ -13,14 +13,7 @@ require_once(DOKU_INC.'inc/feedcreator.class.php'); require_once(DOKU_INC.'inc/auth.php'); - //set auth header for login FIXME: is this used anymore??? - if($_REQUEST['login'] && !isset($_SERVER['PHP_AUTH_USER'])){ - header('WWW-Authenticate: Basic realm="'.$conf['title'].'"'); - header('HTTP/1.0 401 Unauthorized'); - auth_logoff(); - } - - //close sesseion + //close session session_write_close(); @@ -44,13 +37,20 @@ $type = 'RSS1.0'; } - //some defaults for the feed - $CACHEGROUP = 'feed'; - $conf['typography'] = false; - $conf['canonical'] = true; - $parser['toc'] = false; + // the feed is dynamic - we need a cache for each combo + // (but most people just use the default feed so it's still effective) + $cache = getCacheName($num.$type.$mode.$ns.$ltype.$_SERVER['REMOTE_USER'],'.feed'); + + // check cacheage and deliver if nothing has changed since last + // time (with 5 minutes settletime) + $cmod = @filemtime($cache); // 0 if not exists + if($cmod && ($cmod+(5*60) >= @filemtime($conf['changelog']))){ + header('Content-Type: application/xml; charset=utf-8'); + print io_readFile($cache); + exit; + } -# $rss = new UniversalFeedCreator(); + // create new feed $rss = new DokuWikiFeedCreator(); $rss->title = $conf['title']; $rss->link = DOKU_URL; @@ -69,8 +69,14 @@ rssRecentChanges($rss,$num,$ltype); } + $feed = $rss->createFeed($type,'utf-8'); + + // save cachefile + io_saveFile($cache,$feed); + + // finally deliver header('Content-Type: application/xml; charset=utf-8'); - print $rss->createFeed($type,'utf-8'); + print $feed; // ---------------------------------------------------------------- // |