public static function clear($name, $args = array()) { $name = 'Cache::clear::' . $name; $hash = Once::clear($name, $args); Mem::delete($hash); return $hash; }
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); }
$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) {