Если вам нужно отдавать какой-либо конкретный контент очень-очень быстро, но который довольно редко меняется, рекомендую воспользоваться следующим простейшим механизмом кеширования. Будем генерировать какой-либо контент (из баз данных, из внешних источников, файловой системы, каких-либо вычислений…) и сохранять полученный результат на диск в определенный файл. При последующем доступе, если время жизни кеша не прошло (в моем примере это 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(); // отображаем буфер вывода клиенту :) ?>
Очевидным недостатком, конечно, является то, что при каждом таком обращении дергается монстр под названием Apache+mod_php. Гораздо лучше кешировать статический контент на стороне nginx