Changeset 264 in t29-www for lib/js.php


Ignore:
Timestamp:
May 31, 2012, 1:47:32 AM (12 years ago)
Author:
sven
Message:

Saubere Caching-Klasse eingefuehrt, um Code-Redundanzen in technikum29.php und js.php zu vermeiden und mehr/einheitliche Caching-Funktionalitaet bereitzustellen. Das Caching kann jetzt debuggt werden und so. Und ist prima dokumentiert. Ausserdem kann der Caching-Ordner jetzt einfach gewechselt werden.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/js.php

    r262 r264  
    44$lib = dirname(__FILE__);
    55$webroot = realpath("$lib/../");  # file path to root of t29 web installation
    6 $cache_file = "$webroot/shared/cache/compressed.js";
     6$cache_file = 'compressed.js';
    77$module_dir = "$webroot/shared/js-v6/modules";
    88$modules = glob("$module_dir/*.js");
    99
    1010$debug = isset($_GET['debug']); // skip cache and just concat everything
    11 $purge_cache = isset($_GET['purge_cache']); // rebuild cache file (compressed)
    1211
    13 if(!$debug && !$purge_cache) {
    14         // check cache and all input files
    15         $filem_cache = @filemtime($cache_file);
    16         $filem_moddir = @filemtime($module_dir); // if new modules were added
    17         $filem_modules = array_reduce(array_map(function($x){return @filemtime($x);}, $modules), 'max');
    18         $cache_valid = $filem_cache && $filem_modules < $filem_cache && $filem_moddir < $filem_cache;
    19 
    20         if($cache_valid) {
    21                 header("Last-Modified: ".gmdate("D, d M Y H:i:s", $filem_cache)." GMT");
    22                 if(@strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $filem_cache)
    23                         // client already has page cached locally
    24                         header("HTTP/1.1 304 Not Modified");
    25                 else
    26                         readfile($cache_file);
    27                 exit;
    28         }
     12if(!$debug) {
     13        require "$lib/cache.php";
     14        $js_cache = new t29Cache();
     15        $js_cache->test_files = $modules;
     16        $js_cache->set_cache_file($webroot, $cache_file);
     17        $js_cache->try_cache_and_exit();
     18        $js_cache->start_cache('minify_javascript', true);
    2919}
    3020
    31 if(!$debug) ob_start();
    3221$filenames = array_map('basename', $modules); // filenames like foo.js
    3322?>
     
    4736 */
    4837<?php
     38
     39$header = ob_get_contents(); // for prepending it to minified code
    4940
    5041foreach($modules as $i => $mod) {
     
    6657}
    6758
    68 if($debug) exit; // just here without compressing etc.
    6959
    70 $code = ob_get_flush();
    71 
    72 // reduces code size about 1/2 - before: 23kB, after: 12kB
    73 require "$lib/JavaScriptMinifier.php";
    74 $code = JavaScriptMinifier::minify($code);
    75 
    76 // write out file.
    77 file_put_contents($cache_file, $code);
    78 
    79 print $code;
     60function minify_javascript($code) {
     61        global $lib, $header;
     62        // reduces code size about 1/2 - before: 23kB, after: 12kB
     63        require "$lib/JavaScriptMinifier.php";
     64        $minified = JavaScriptMinifier::minify($code);
     65        return $header . $minified;
     66}
Note: See TracChangeset for help on using the changeset viewer.
© 2008 - 2013 technikum29 • Sven Köppel • Some rights reserved
Powered by Trac
Expect where otherwise noted, content on this site is licensed under a Creative Commons 3.0 License