Skip to content
Snippets Groups Projects
Commit fbf82939 authored by Ben Coburn's avatar Ben Coburn
Browse files

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
parent a609a9cc
No related branches found
No related tags found
No related merge requests found
......@@ -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;
// ---------------------------------------------------------------- //
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment