Кеширование отдельный блоков на Wordpress - как реализовать?

Y5
На сайте с 14.07.2009
Offline
119
712

Добрый день!

Необходимо реализовать кеширование определенной кода в PHP - например, код вывода подобных постов <!--?php similar_posts(); ?--> (или другой какой-то) - с ним в 3 раза дольше грузится страница.

Соответственно как закешировать именно результат этого кода?

В интернете много перерыл инфы, но полезного почти ни чего нет.

Спасибо

Отдельные плагины кеширования не устраивают - они много места занимают.

Подписи пока нет :(
ДП
На сайте с 23.11.2009
Offline
203
#1

Посмотрите в сторону output buffering http://php.net/manual/ru/book.outcontrol.php

Y5
На сайте с 14.07.2009
Offline
119
#2

ок спасибо, впринципе вот что получилось:

<?php

$url = $_SERVER["SCRIPT_NAME"];
$break = Explode('/', $url);
$file = $break[count($break) - 1];
$cachefile = 'kesh/cached-'.substr_replace($file ,"",-4).'.html';
$cachetime = 18000;

// Обслуживается из файла кеша, если время запроса меньше $cachetime
if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) {
echo "<!-- Cached copy, generated ".date('H:i', filemtime($cachefile))." -->\n";
include($cachefile);
exit;
}
ob_start(); // Запуск буфера вывода
the_content('Read the rest of this entry &raquo;');
// Кешируем содержание в файл
$cached = fopen($cachefile, 'w');
fwrite($cached, ob_get_contents());
fclose($cached);
ob_end_flush(); // Отправялем вывод в браузер
?>

Но почемуто-то:

1. Кешируется всего одна страница

2. После этого кода, дальше шаблон не выводится, как-бы обрывается.

TA
На сайте с 12.06.2009
Offline
116
TiA
#3
yura5:
Добрый день!

Необходимо реализовать кеширование определенной кода в PHP - например, код вывода подобных постов <!--?php similar_posts(); ?--> (или другой какой-то) - с ним в 3 раза дольше грузится страница.
Соответственно как закешировать именно результат этого кода?
В интернете много перерыл инфы, но полезного почти ни чего нет.
Спасибо

Отдельные плагины кеширования не устраивают - они много места занимают.

Проще всего использовать встроенный механизм кеширования (функции wp_cache_add, wp_cache_set, wp_cache_get и прочие). Подробно они описаны в документации: https://codex.wordpress.org/Class_Reference/WP_Object_Cache Обратите внимание, что для полноценной работы необходимо подключить модуль/плагин для объектного кеширования.

В качестве ключа можно использовать ID записи или рубрики с префиксом.

Профессиональная верстка и разработка сайтов на WordPress (http://www.maultalk.com/topic139110s0.html)
Y5
На сайте с 14.07.2009
Offline
119
#4
TiA:
Проще всего использовать встроенный механизм кеширования (функции wp_cache_add, wp_cache_set, wp_cache_get и прочие). Подробно они описаны в документации: https://codex.wordpress.org/Class_Reference/WP_Object_Cache Обратите внимание, что для полноценной работы необходимо подключить модуль/плагин для объектного кеширования.

В качестве ключа можно использовать ID записи или рубрики с префиксом.

А это будет кеширование на уровне БД?

TA
На сайте с 12.06.2009
Offline
116
TiA
#5
yura5:
А это будет кеширование на уровне БД?

Фактически кешируются обработанные данные, строки, объекты и массивы. Это позволяет существенно уменьшить количество запросов к базе данных.

Y5
На сайте с 14.07.2009
Offline
119
#6

Ок спасибо

Нашел вообщем интересный плагин: https://wordpress.org/plugins/fragmentcache/

Но мистика какая-то, кеширование вроде работает, файлы закешированные (части) открываются в браузере.

Сайт работает быстрее, но!

Но на сервере их почему-то нет, что-то не понятно, почему так...

Они могут скрытыми сохраняться???

---------- Добавлено 10.03.2016 в 19:39 ----------

Ошибку нашел, не в ту папку писалось...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий