diff options
-rw-r--r-- | _test/tests/inc/cache_stalecheck.test.php | 27 | ||||
-rw-r--r-- | inc/cache.php | 7 |
2 files changed, 30 insertions, 4 deletions
diff --git a/_test/tests/inc/cache_stalecheck.test.php b/_test/tests/inc/cache_stalecheck.test.php new file mode 100644 index 000000000..243a221d9 --- /dev/null +++ b/_test/tests/inc/cache_stalecheck.test.php @@ -0,0 +1,27 @@ +<?php + +class cache_stalecheck_test extends DokuWikiTest { + function test_staleness() { + global $ID; + + $ID = 'stale'; + $file = wikiFN($ID); + + # Prepare test page + saveWikiText($ID, 'Fresh', 'Created'); + + # Create stale cache + $cache = new cache_renderer($ID, $file, 'xhtml'); + $cache->storeCache('Stale'); + $stale = $cache->retrieveCache(); + + # Prepare stale cache for testing + $time = filemtime($file); + touch($cache->cache, $time); + + # Make the test + $fresh = p_cached_output($file, 'xhtml', $ID); + $this->assertNotEquals($fresh, $stale, 'Stale cache failed to expire'); + } +} +?> diff --git a/inc/cache.php b/inc/cache.php index 204c6f006..5eac94934 100644 --- a/inc/cache.php +++ b/inc/cache.php @@ -69,7 +69,7 @@ class cache { if (!empty($this->depends['files'])) { foreach ($this->depends['files'] as $file) { - if ($this->_time < @filemtime($file)) return false; // cache older than files it depends on? + if ($this->_time <= @filemtime($file)) return false; // cache older than files it depends on? } } @@ -207,6 +207,8 @@ class cache_renderer extends cache_parser { return true; } + if ($this->_time < @filemtime(metaFN($this->page,'.meta'))) return false; // meta cache older than file it depends on? + // check current link existence is consistent with cache version // first check the purgefile // - if the cache is more recent than the purgefile we know no links can have been updated @@ -239,9 +241,6 @@ class cache_renderer extends cache_parser { // page implies metadata and possibly some other dependencies if (isset($this->page)) { - $metafile = metaFN($this->page,'.meta'); - $files[] = $metafile; // ... the page's own metadata - $valid = p_get_metadata($this->page, 'date valid'); // for xhtml this will render the metadata if needed if (!empty($valid['age'])) { $this->depends['age'] = isset($this->depends['age']) ? |