Задать вопрос
@Ressive

Как можно улучшить данное кэширование в php?

Как можно улучшить (оптимизировать) данное кэширование в php?

//settings
    $cache_ext  = '.html'; // Устанавливаем расширение файла
    $cache_time     = 30000000;  // Устанавливаем время жизни кэша в секундах
    $cache_folder   = $_SERVER['DOCUMENT_ROOT'] . '/chart/cache/'; // папка хранения кэшированых файлов
    $ignore_pages   = array('', ''); // массив данных, с двумя переменными

    $dynamic_url    = 'https://'.$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . $_SERVER['QUERY_STRING']; // Сохраняем динамическую страницу для браузера пользователей
    $cache_file     = $cache_folder.md5($dynamic_url).$cache_ext; // Сохраняем страницу в папку, с обробкой названия в MD5 - ссылка http://www.php.su/md5()
    $ignore = (in_array($dynamic_url,$ignore_pages))?true:false; // 1. В массиве $ignore_pages ищется элемент со значением, который хранится в переменной $dynamic_url; - Если $dynamic_url найден в массиве $ignore_pages то true иначе false

    if (!$ignore && file_exists($cache_file) && time() - $cache_time < filemtime($cache_file)) { // Если присутствует динамическая ссылка и ее кеш на сервере и время меньше времени срока жизни кэша то:
        ob_start('ob_gzhandler'); // 1. Начать gzip сжатие
        readfile($cache_file); // Вывести файл в буфер
        echo '<!-- cached page - '.date('l jS \of F Y h:i:s A', filemtime($cache_file)).', Page : '.$dynamic_url.' -->'; // добавить строку с информацией о времени кэширования
        ob_end_flush(); // Отправить содержимое буфера пользователю
        exit(); // закончить условие
    }
    // 1. Начать gzip сжатие.
    ob_start('ob_gzhandler');
	
	
	
	
    if (!is_dir($cache_folder)) { 
        mkdir($cache_folder);
    }
    if(!$ignore){ 
        $fp = fopen($cache_file, 'w');  
        fwrite($fp, ob_get_contents()); 
        fclose($fp); 
    }
    ob_end_flush();
  • Вопрос задан
  • 88 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Вариант "выбросить целиком" не подойдет?

?true:false и http://www.php.su - написано новичком, и возможно лет *надцать назад.

ob_start('ob_gzhandler'); // 1. Начать gzip сжатие - почему оно здесь: непонятно.

Похоже на какой-то самодельный кеширующий прокси, но не совсем ясно зачем это все вообще.
Ответ написан
Комментировать
wagoodoogoo
@wagoodoogoo
prestashop, webix, phalcon, vue, slim, craft cms
Для нужд кеширования в повседневных проектах есть замечательная phpFastCache библиотека.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы