summaryrefslogtreecommitdiff
path: root/lib/exe/js.php
diff options
context:
space:
mode:
authorAdrian Lang <mail@adrianlang.de>2011-07-01 16:49:28 +0200
committerAdrian Lang <mail@adrianlang.de>2011-07-02 23:10:26 +0200
commit6619f42eb475ad91a0b73d1aa6268ff41c6129a2 (patch)
tree44342d0ad8f7e56eca755e37b01204c339effb20 /lib/exe/js.php
parent29dc4f32ec672f86f16846b70a777990822d184c (diff)
downloadrpg-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/js.php')
-rw-r--r--lib/exe/js.php67
1 files changed, 9 insertions, 58 deletions
diff --git a/lib/exe/js.php b/lib/exe/js.php
index 28894ffc6..0688825c6 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -32,7 +32,8 @@ function js_out(){
global $config_cascade;
// The generated script depends on some dynamic options
- $cache = getCacheName('scripts'.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'],'.js');
+ $cache = new cache('scripts'.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'],
+ '.js');
// load minified version for some files
$min = $conf['compress'] ? '.min' : '';
@@ -70,25 +71,13 @@ function js_out(){
$files[] = $config_cascade['userscript']['default'];
}
+ $cache_files = array_merge($files, getConfigFiles('main'));
+ $cache_files[] = __FILE__;
+
// check cache age & handle conditional request
- header('Cache-Control: public, max-age=3600');
- header('Pragma: public');
- if(js_cacheok($cache,$files)){
- 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);
- }
- return;
- } else {
- http_conditionalRequest(time());
- }
+ // 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 script
ob_start();
@@ -137,18 +126,7 @@ function js_out(){
$js .= "\n"; // https://bugzilla.mozilla.org/show_bug.cgi?id=316033
- // save cache file
- io_saveFile($cache,$js);
- if(function_exists('gzopen')) io_saveFile("$cache.gz",$js);
-
- // finally send output
- if ($conf['gzip_output']) {
- header('Vary: Accept-Encoding');
- header('Content-Encoding: gzip');
- print gzencode($js,9,FORCE_GZIP);
- } else {
- print $js;
- }
+ http_cached_finish($cache->cache, $js);
}
/**
@@ -184,33 +162,6 @@ function js_load($file){
}
/**
- * Checks if a JavaScript Cache file still is valid
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-function js_cacheok($cache,$files){
- if(isset($_REQUEST['purge'])) return false; //support purge request
-
- $ctime = @filemtime($cache);
- if(!$ctime) return false; //There is no cache
-
- global $config_cascade;
-
- // some additional files to check
- $files = array_merge($files, getConfigFiles('main'));
- $files[] = $config_cascade['userscript']['default'];
- $files[] = __FILE__;
-
- // now walk the files
- foreach($files as $file){
- if(@filemtime($file) > $ctime){
- return false;
- }
- }
- return true;
-}
-
-/**
* Returns a list of possible Plugin Scripts (no existance check here)
*
* @author Andreas Gohr <andi@splitbrain.org>