0) { $my_cache_no = true; return false; break; } } fclose($fh); //сброс всего кэша по вхождению строки в урл if (strpos($url, $url_reset_cache) > 0) { $my_cache_no = true; clear_cache_folder(); return false; } //сброс кэша одной страницы через вхождение в урл if (strpos($url, $url_reset_cache_once) > 0) { $xx1 = strlen ($url); $xx2 = 1 + strlen ($url_reset_cache_once); $xx = $xx1 - $xx2; $url_once_del = md5(substr($url,0,$xx)); $filename = "$dir$url_once_del"; if (file_exists($filename)) { unlink($filename); } echo "для страницы "; echo substr($url,0,$xx); echo " кэш должен был сброситься"; } //если пользователь авторизован - не кэшировать его if (isset($_COOKIE)) { $strCookie = ""; foreach ($_COOKIE as $k=>$v) {$strCookie.=$k;} if (strstr($strCookie, 'wordpress_logged_in')) { $my_cache_no = true; return false; } } //работает только с ЧПУ отключает кэширование страниц вида ?id=1&test=wet&id и т.п. if ($_SERVER['QUERY_STRING'] and $chpu == "yes") { $my_cache_no = true; return false; } //проверяем надо ли уже очистить весь кэш $file_check_time_reset_cache = realpath(dirname(__FILE__)) . '/check/check_time_clear_cache.php'; if (file_exists($file_check_time_reset_cache)) { if ((date('U')-filemtime($file_check_time_reset_cache))>$time_clear_all_cache) { unlink($file_check_time_reset_cache); $fh = fopen($file_check_time_reset_cache, 'w+'); //// HZ изменить надо ..... fwrite($fh, $time_clear_all_cache); fclose($fh); clear_cache_folder(); } } //если страница есть в кэше if (file_exists($filepath)) { //выводим содержимое кэша $fp = fopen($filepath, 'rb'); $cache = fread($fp, filesize($filepath)); //если вывод статистики на страницах сайта включен - обработка с последующим выводом из кэша if ($statistika == "yes") { $memory = (!function_exists('memory_get_usage')) ? '' : round(memory_get_usage()/1024/1024, 2) . 'MB'; $time = substr(getmicrotime() - $cache_start_time, 0, 7) . ' sec'; $cache = str_replace($paste_statistika, '

'.$test_cache .$memory. '/' .$time. '

' . $paste_statistika, $cache); } echo $cache; //Проверяем актуальность страницы в кэше, если кэш страницы устарел - удалим его if ((file_exists($filepath)) and ((date('U')-filemtime($filepath))>$period)) { unlink($filepath); $my_cache_no = false; } return true; } ob_start(); //удаляем кукисы перед кэшированием if (isset($_COOKIE)) { $saveCookie=array(); $saveCookie=$_COOKIE; $_COOKIE=array(); } return false; } //добавление страниц в кэш function add_cache_page($url, $bufer) { $cache_path_file = realpath(dirname(__FILE__)) . '/cache/'.md5($url); $fh = fopen($cache_path_file, 'w+'); fwrite($fh, $bufer); fclose($fh); } //что делать со страницой после загрузки function my_cache_end() { global $my_cache_no; // только для Wordpress is_404 не кэшировать if (!$my_cache_no && !is_404()) add_cache_page("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], ob_get_flush()); //восстанавливаем кукисы global $saveCookie; $_COOKIE=$saveCookie; } //очистка всего кэша function clear_cache_folder() { $dir = realpath(dirname(__FILE__)) . '/cache/'; foreach (glob($dir."*") as $filename) { if (file_exists($filename)) { unlink($filename); } } $files_index = realpath(dirname(__FILE__)) . '/cache/index.html'; $h = fopen($files_index, 'w+'); fwrite($h,""); fclose($h); } //getmicrotime function getmicrotime() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } ?>