Кеширование в WordPress без использования плагинов

wp-cache.jpgСегодня я хочу рассказать Вам об одном очень не плохом способе кеширования в WordPress без использования плагинов. При его использовании страница загружается за доли секунд (0.000216 сек — среднее время загрузке на локальном компьютере моего блога), что во много раз быстрее чем при использовании любых плагинов кеширования (для примера среднее время загрузки моего блога на локальном компьютере при использовании WP Super Cache — 0.388 сек). Кроме этого в разы падает нагрузка на процессор и память.

К сожалению у данного способа есть один минус — он полностью исключает работу любых динамических функций (счетчики, голосование), а также возможность оставлять комментарии :-( Этот способ идеально подойдет для сателлитов и корпоративных сайтов, а также любых других сайтов где отключены комментарии и не используются счетчики и голосование.

Итак, что же нужно сделать:
1. Создаем папку в корне сайта, называем её cache и ставим на неё права — 777
2. В файле index.php в корне сайта заменяем то, что там есть на этот код:

<?php
$start = microtime();
$filename = 'cache/'.md5($_SERVER['REQUEST_URI']).'.html';
$cached = false;
$time = 4 * 60 * 60; // Время кеша в секундах (4*60*60 = 4 часа)
$stat = 0; // Установите 1 для вывода времени загрузки страницы (по умолчанию 0)

if (file_exists($filename)) {
if ((time()-filemtime($filename))<$time) {
$cached = true;
} else {
unlink($filename);
$cached = false;
}
}

if ($cached) {
readfile($filename);
} else {
ob_start();

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

$text = ob_get_clean();

$fh = fopen($filename, 'w+');
fwrite($fh, $text);
fclose($fh);

echo $text;
}
$finish = microtime();

if ($stat==1) echo $finish-$start;
?>

Вот собственно и все. С помощью 4 строки Вы можете самостоятельно изменять время жизни кеша, для вывода времени загрузки страницы в 5 строке установите 1.

Если, например нам нужно исключить какую-либо страницу из такого кэширования, то можно добавить такой код:

<?php
if($_SERVER['REQUEST_URI'] == '/contact/') { // адрес страницы формы контактов, так можно исключить сразу несколько страниц.
// сюда вставить весь код из поста, разумеется кроме <?php ?>
}
?>

Этим куском мы исключим из кеширования страницу контакт формы.

h++p://www.wp-info.ru/keshirovanie-v-wordpress-bez-ispolzovaniya-plaginov/

1 комментарий

  1. Попробовал Ваш способ, супер. Ранше сайт грузился 1,62с сейчас 0.5 с
    Реально работает. Но вопрос теста пока открыт. Посмотрим что скажут ПС.

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*


17 − тринадцать =