diff options
author | Adrian Lang <mail@adrianlang.de> | 2011-07-01 16:49:28 +0200 |
---|---|---|
committer | Adrian Lang <mail@adrianlang.de> | 2011-07-02 23:10:26 +0200 |
commit | 6619f42eb475ad91a0b73d1aa6268ff41c6129a2 (patch) | |
tree | 44342d0ad8f7e56eca755e37b01204c339effb20 /lib/exe/css.php | |
parent | 29dc4f32ec672f86f16846b70a777990822d184c (diff) | |
download | rpg-6619f42eb475ad91a0b73d1aa6268ff41c6129a2.tar.gz rpg-6619f42eb475ad91a0b73d1aa6268ff41c6129a2.tar.bz2 |
Refactor CSS and JS caching
* Increase HTTP cache time since the resources are timestamped on request
anyway
* Check userscript.js only once for JS cache validation
* Use cache class
Diffstat (limited to 'lib/exe/css.php')
-rw-r--r-- | lib/exe/css.php | 68 |
1 files changed, 9 insertions, 59 deletions
diff --git a/lib/exe/css.php b/lib/exe/css.php index e4105b427..9751b5be4 100644 --- a/lib/exe/css.php +++ b/lib/exe/css.php @@ -46,7 +46,7 @@ function css_out(){ } // The generated script depends on some dynamic options - $cache = getCacheName('styles'.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'].DOKU_BASE.$tplinc.$mediatype,'.css'); + $cache = new cache('styles'.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'].DOKU_BASE.$tplinc.$mediatype,'.css'); // load template styles $tplstyles = array(); @@ -87,26 +87,14 @@ function css_out(){ } } - // check cache age & handle conditional request - header('Cache-Control: public, max-age=3600'); - header('Pragma: public'); - if(css_cacheok($cache,array_keys($files),$tplinc)){ - http_conditionalRequest(filemtime($cache)); - if($conf['allowdebug']) header("X-CacheUsed: $cache"); - - // finally send output - if ($conf['gzip_output'] && http_gzip_valid($cache)) { - header('Vary: Accept-Encoding'); - header('Content-Encoding: gzip'); - readfile($cache.".gz"); - } else { - if (!http_sendfile($cache)) readfile($cache); - } + $cache_files = array_merge(array_keys($files), getConfigFiles('main')); + $cache_files[] = $tplinc.'style.ini'; + $cache_files[] = __FILE__; - return; - } else { - http_conditionalRequest(time()); - } + // check cache age & handle conditional request + // This may exit if a cache can be used + http_cached($cache->cache, + $cache->useCache(array('files' => $cache_files))); // start output buffering and build the stylesheet ob_start(); @@ -135,45 +123,7 @@ function css_out(){ $css = css_compress($css); } - // save cache file - io_saveFile($cache,$css); - if(function_exists('gzopen')) io_saveFile("$cache.gz",$css); - - // finally send output - if ($conf['gzip_output']) { - header('Vary: Accept-Encoding'); - header('Content-Encoding: gzip'); - print gzencode($css,9,FORCE_GZIP); - } else { - print $css; - } -} - -/** - * Checks if a CSS Cache file still is valid - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function css_cacheok($cache,$files,$tplinc){ - global $config_cascade; - - if(isset($_REQUEST['purge'])) return false; //support purge request - - $ctime = @filemtime($cache); - if(!$ctime) return false; //There is no cache - - // some additional files to check - $files = array_merge($files, getConfigFiles('main')); - $files[] = $tplinc.'style.ini'; - $files[] = __FILE__; - - // now walk the files - foreach($files as $file){ - if(@filemtime($file) > $ctime){ - return false; - } - } - return true; + http_cached_finish($cache->cache, $css); } /** |