Кеширование в 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, надо проверять, на крайний случай надо сделать просто так:

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

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

ОтветитьОтветить
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

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

ОтветитьОтветить

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