Кеширование для любого сайта

В развитие темы супер-пупер кеширования для Вордпресса, Zorg подсказал улучшенный вариант, с использованием Cache-Control:


$_chache_dir = 'microchache';

$_chache_time = 4*60*60;

$_denied_uri = array(‘/feed’);

if(is_dir($_chache_dir)){

$q = $_SERVER[‘REQUEST_URI’];

$uid = md5($q);

$file = $_chache_dir.’/’.$uid;

// запрещенный к кэшированию uri

if(!in_array($q, $_denied_uri)){

// есть файл актуального кэша

if(file_exists($file) && @filemtime($file)+$_chache_time > time())

{if(@$contents = file_get_contents($file)){

header(‘Cache-Control: max-age=’ . $_chache_time . ‘, public’);

exit($contents);}}

// нету или истек

else {ob_start();}}}

$buffer = ob_get_contents();

$f = fopen($_chache_dir.’/’.$uid, ‘w+’);

fwrite($f,».»\r\n». $buffer);

ob_clean();


echo $buffer;

Что это дает? Глухую броню в виде хтмл копии страницы сайта, устойчивую к толпам леммингов и ботов и околонулевое потребление памяти на хостинге. Для корректной работы кеша в корне сайта создайте папку microchache и дайте на нее права 777.

Например, для вордпресса — вставить после
ob_start();


define('WP_USE_THEMES', true);
require('./wp-blog-header.php');

и весь код положить в index.php

Если другой движок, cms или форум — то содержимое старого index.php положить в index2.php и вставить его через инклюд


ob_start();
include ("index2.php");