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

Кеширование в WordPress без использования плагинов
Сегодня я хочу рассказать Вам об одном очень не плохом способе кеширования в 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. Если будут какие либо вопросы, спрашивайте в комментариях 😉

Рубрика: Настройка WordPress | 28 декабря 2009

Предыдущие записи из рубрики `Настройка WordPress`

18 комментариев

RUSev, 28.12.2009 в 18:32

Гениально!
Не подскажите, форма обратной связи (плагин Contact Form 7) с этим прибамбасом работать будет?
А то вкрались какие то сомнения, так как счётчики и формы комментариев отрубаются на глушняк.

Денис, 28.12.2009 в 16:37

Всё удивительное - просто!
Давно искал такую возможность (кэширование). Присмотрел на одном сайте скрипт для этого, платный (не вспомню на вскидку где). А тут всё так просто и шустро (судя по описаниям), надо поставить, посмотреть. Считаю для ГС - самое то должно быть)

Deimos, 28.12.2009 в 17:31

Денис, про платный скрипт это наверное - Maxsite Cache, но это не совсем одинаковые вещи, тот кеш работает нормально с комментами и сбрасывает кеш при публикации статьи, а этот нет. Но у них и разные назначения 😉

RUSev, 28.12.2009 в 22:02

Deimos, Спасибо! Буду пробовать!

Deimos, 28.12.2009 в 21:57

RUSev, надо проверять, на крайний случай надо сделать просто так:


}
?>

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

Truper, 29.12.2009 в 23:13

Самому кэшировать - это конечно хорошо, но такого функционала как у wp-super-cache Вы таким образом не добьетесь. А просто тупо кэшировать - это не интересно.

Deimos, 30.12.2009 в 09:55

Truper, абсолютно согласен с тем что не удаться добиться функционала wp-super-cache, но иногда это и не надо, например на сайтах визитках, который один раз сделал и забыл. Зато скорость работы у этого способа будет в 10ки раз выше чем у того же wp-super-cache.

Truper, 30.12.2009 в 10:12

Deimos, я считаю, что для сайтов визиток глупо использовать такого монстра как WordPress. Для этого полно других небольших CMS, некоторые вообще работают без базы.

Deimos, 30.12.2009 в 11:33

Truper, тут я позволю себе с тобой не согласиться:
1) При использовании этого способа монстер WordPress превращается в маленького - пушистого котеночка 😉
2) По своему опыту скажу что многие заказчики сначала хотят одно, потом делаешь, а им надо больше, и WordPress с легкостью позволяет увеличить этот функционал почти до предела. Да и WordPress гараздо лучше использовать с точки зрения безопасности, все эти маленькие кмс довольно дрявые.
3) Кто использует WordPress как я, с очень большой неохотой работают и переключаются на другую кмс.

Под итожу: сделал более 50 сайтов визиток на WordPress и никто не жалуется 😉

Vch54ti, 30.12.2009 в 15:05

Предлагаю в качестве альтернативы потестить скриптик
http://centavrus-opti.ru/skript-keshirovaniya-dlya-wordpress.html

alexpts, 01.01.2010 в 17:30

Я бы убрал про сателлиты строчки и так не поймешь что в интернете...

Nord, 18.01.2010 в 13:38

А счетчики какие имеются в виду? Сторонняя статистика тоже не будет работать (LI, Google Analytics и т.д.)?

Vch54ti, 18.01.2010 в 16:17

А счетчики какие имеются в виду? Сторонняя статистика тоже не будет работать (LI, Google Analytics и т.д.)?

java скрипты все будут работать = то есть то что написали - все будет работать!

Deimos, 18.01.2010 в 20:10

Nord, Вам Vch54ti абсолютно правильно ответил! У вас будут работать любые java счетчики (LI, Mail, Top Rambler и т.д.)... Не будут лишь работать плагины для вордпресса которые считают количество просмотров страниц (т.е. например: Эту страницу просмотрели 186 раз)...

Nord, 18.01.2010 в 21:44

Ага, понятно, ну это терпимо, попробую; для MFA должно в самый раз подойти.

RodgerFox, 31.05.2010 в 16:36

СТОП!! подскажите а если я пропишу ссылки на категории, получаеться все что в них не будет кешироваться, а значит можно на внутренних стр. будут работать комменты

elektron, 23.03.2011 в 23:35

Гениальный скрипт. Буду использовать на всех своих сайтах. Универсальный способ кеширования, установлю ещё на другие движки.. Спасибо автору..

Alex, 01.09.2011 в 06:59

Понравился скрипт. Только при добавлении фида в фидбурнер, фид не проходит валидацию. Можно как-то исправить?

Комментировать

Новые комментарии