Простейший кеш PHP

Простейший эффективный PHP кешЕсли вам нужно отдавать какой-либо конкретный контент очень-очень быстро, но который довольно редко меняется, рекомендую воспользоваться следующим простейшим механизмом кеширования. Будем генерировать какой-либо контент (из баз данных, из внешних источников, файловой системы, каких-либо вычислений…) и сохранять полученный результат на диск в определенный файл. При последующем доступе, если время жизни кеша не прошло (в моем примере это 1 минута), то просто загружаем содержимое кеша из файла. В следующий раз кеш обновится как минимум через минуту, когда будет произведен запрос очередного клиента на получение данного контента.

Вот код, иллюстрирующий эту идею:

<?php
$cache_file = "/var/www/site.ru/cache.txt";
$cache_lifetime = 60;

if ( time()-filemtime($cache_file) < $cache_lifetime )
{
    // Получаем содержимое из кеша
    echo file_get_contents($cache_file);
    exit;
}

// Начинаем собирать выходные данные
ob_start();

// Много кода, много запросов, много работы...
...

$data = ob_get_contents();  // получаем содержимое буфера вывода
file_put_contents($cache_file, $data);  // пишем новый кеш
ob_end_flush();  // отображаем буфер вывода клиенту :)
?>

Похожие статьи

One thought on “Простейший кеш PHP”

  1. Очевидным недостатком, конечно, является то, что при каждом таком обращении дергается монстр под названием Apache+mod_php. Гораздо лучше кешировать статический контент на стороне nginx

Leave a Reply

Your email address will not be published. Required fields are marked *