diff options
author | Ben Coburn <btcoburn@silicodon.net> | 2006-03-24 14:33:15 +0100 |
---|---|---|
committer | Ben Coburn <btcoburn@silicodon.net> | 2006-03-24 14:33:15 +0100 |
commit | fbf8293902dc7312114b3281713d03bf977793c9 (patch) | |
tree | 4900d8318e9390fb7ef7ed0aa11ea8b2025eeaec | |
parent | a609a9cc3002627e7527161f5bd8883b3bd0633d (diff) | |
download | rpg-fbf8293902dc7312114b3281713d03bf977793c9.tar.gz rpg-fbf8293902dc7312114b3281713d03bf977793c9.tar.bz2 |
RSS update time and 304 Not Modified
- Gives the wiki administrator control over how often the RSS feed is regenerated.
- The RSS feed now handles conditional requests and returns HTTP '304 Not Modified'
responses when possible.
darcs-hash:20060324133315-05dcb-3b814e28523f2a0717222a4940d6fbbb28576cf5.gz
-rw-r--r-- | conf/dokuwiki.php | 1 | ||||
-rw-r--r-- | feed.php | 13 |
2 files changed, 10 insertions, 4 deletions
diff --git a/conf/dokuwiki.php b/conf/dokuwiki.php index 411d2be7d..7d70838da 100644 --- a/conf/dokuwiki.php +++ b/conf/dokuwiki.php @@ -94,6 +94,7 @@ $conf['rss_linkto'] = 'diff'; //what page RSS entries link to: // 'page' - the revised page itself // 'rev' - page showing all revisions // 'current' - most recent revision of page +$conf['rss_update'] = 5*60; //Update the RSS feed every n minutes (defaults to 5 minutes) //Set target to use when creating links - leave empty for same window $conf['target']['wiki'] = ''; @@ -12,6 +12,7 @@ require_once(DOKU_INC.'inc/parserutils.php'); require_once(DOKU_INC.'inc/feedcreator.class.php'); require_once(DOKU_INC.'inc/auth.php'); + require_once(DOKU_INC.'inc/pageutils.php'); //close session session_write_close(); @@ -46,12 +47,17 @@ $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) + // time or the update interval has not passed, also handles conditional requests + header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); + header('Pragma: public'); + header('Content-Type: application/xml; charset=utf-8'); $cmod = @filemtime($cache); // 0 if not exists - if($cmod && ($cmod+(5*60) >= @filemtime($conf['changelog']))){ - header('Content-Type: application/xml; charset=utf-8'); + if($cmod && (($cmod+$conf['rss_update']>time()) || ($cmod>@filemtime($conf['changelog'])))){ + http_conditionalRequest($cmod); print io_readFile($cache); exit; + } else { + http_conditionalRequest(time()); } // create new feed @@ -79,7 +85,6 @@ io_saveFile($cache,$feed); // finally deliver - header('Content-Type: application/xml; charset=utf-8'); print $feed; // ---------------------------------------------------------------- // |