Exemple #1
0
 public static function clear($name, $args = array())
 {
     $name = 'Cache::clear::' . $name;
     $hash = Once::clear($name, $args);
     Mem::delete($hash);
     return $hash;
 }
Exemple #2
0
 public static function cache($name, $fn, $args = array(), $re = false)
 {
     //Запускается один раз для админа, остальные разы возвращает кэш из памяти
     $name = 'Access::cache ' . $name;
     return Once::exec($name, function ($args, $name) use($name, $fn, $re) {
         $path = $name . '_' . Hash::make($args);
         $data = Mem::get($path);
         if (!$data) {
             $data = array('time' => 0);
         }
         $execute = self::adminIsTime($data['time'], function () {
             return true;
         }, $re);
         if ($execute) {
             $cache = !Nostore::check(function () use(&$data, $fn, $args, $re) {
                 $data['result'] = call_user_func_array($fn, array_merge($args, array($re)));
             });
             if ($cache) {
                 $data['time'] = time();
                 Mem::set($path, $data);
             } else {
                 Mem::delete($path);
             }
         }
         return $data['result'];
     }, array($args, $name), $re);
 }
Exemple #3
0
$name = Ans::GET('name', 'string', '');
if ($debug || $re) {
    if (!Load::isphp()) {
        header('Infrajs-Cache: false');
    }
    if ($isjs) {
        $code = Collect::js($name);
    } else {
        $code = Collect::css($name);
    }
    $key = 'Infrajs::Collect::' . $isjs . true;
    //Кэш с zip
    Mem::delete($key);
    $key = 'Infrajs::Collect::' . $isjs . false;
    //Кэш без zip
    Mem::delete($key);
    if ($isjs) {
        return Ans::js($code);
    }
    return Ans::css($code);
}
$p = explode(',', str_replace(' ', '', $_SERVER['HTTP_ACCEPT_ENCODING']));
$isgzip = !Load::isphp() && in_array('gzip', $p);
$key = 'Infrajs::Collect::' . $isjs . $isgzip;
//Два кэша зазипованый и нет. Не все браузеры понимают зазипованую версию.
$code = Mem::get($key);
if (!$code) {
    if (!Load::isphp()) {
        header('Infrajs-Cache: false');
    }
    if ($isjs) {