Вопрос по объектному кешированию

12
LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#11
Mister_Black :
Возникла необходимость закешировать один блок на сайте

А вы код нашли, который кэширует ВСЮ страницу. Он вам не подходит.

Вам просто надо взять переменную и сохранить её в файл и всё. Код какой-то старинный, наверное ещё для PHP 4 вы нашли.

Вот 12 летний и то бодрее выглядит:  url - 5-minute file cache in PHP - Stack Overflow

Первый топовый ответ это как раз решение вашей проблемы

5-minute file cache in PHP
5-minute file cache in PHP
  • 2011.03.10
  • hyperknot hyperknot 13.6k 25 25 gold badges 100 100 silver badges 155 155 bronze badges
  • stackoverflow.com
I have a very simple question: what is the best way to download a file in PHP but only if a local version has been downloaded more than 5 minute ago? without any local copy or caching. What is the...
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
W1
На сайте с 22.01.2021
Offline
285
#12
Mister_Black #:
отображается дублем

Я же написал:

webinfo #:
надо как-то переписать слегка код, чтобы в случае вывода контента из файла не выводился контент из  last_searches()
Мой форум - https://webinfo.guru –Там я всегда на связи
W1
На сайте с 22.01.2021
Offline
285
#13

Ну вот я переписал кусок кода (начиная с function cache_display), как один из вариантов.  Вроде бы должно работать:

// отобразить кэш, если его "срок годности" не истёк
function cache_display()
{
    $file = cache_file();
    // проверка, что кэш-файл существует и он не слишком старый
    if(!file_exists($file)) return false;
    if(filemtime($file) < time() - CACHE_TIME * 3600) return false;

    // если всё ок, то отобразить кэш-файл и прекратить дальнейшие проверки
    readfile($file);
    return true;
}
//запись в кэш-файл
function cache_page($content)
{
    if(false !== ($f = @fopen(cache_file(), 'w'))) {
    fwrite($f, $content);
    fclose($f);
        }
    return $content;
}

if (!cache_display()) { //если не был найден валидный (исправный) кэш-файл
// активировать буферизацию и создать кэш-файл
ob_start('cache_page');

last_searches(); // это контент, который надо кешировать

ob_end_flush();
}

/**
   Здесь футер и всё остальное

*/
MB
На сайте с 24.02.2009
Offline
162
#14
Спасибо, сейчас буду тестить.
UPD: Да проверил, всё работает как надо, кеширует, при обновлении страницы кеш не обновляет и по времени выполнения скрипта это видно "latest search execution time: 0.000719 sec" с кешем, а не кешированный вариант latest search execution time: 0.154812 sec.
Ещё раз, всем спасибо за помощь, сам бы я вряд ли справился 😀
WEMASTER
На сайте с 16.08.2012
Offline
95
#15
"объектному кешированию" 🤣
Ознакомился с темой и испытал сильную ностальгию по PHP 5.
Надеюсь, ТС не будет обновлять PHP.
Пусть это ПО продолжает потреблять ресурсы некачественного хостинга.
😂
MB
На сайте с 24.02.2009
Offline
162
#16
WEMASTER #:
"объектному кешированию" 🤣
Ознакомился с темой и испытал сильную ностальгию по PHP 5.
Надеюсь, ТС не будет обновлять PHP.
Пусть это ПО продолжает потреблять ресурсы некачественного хостинга.
😂
Я могу php 8.3 включить он уже есть в ispmanager, только где гарантия, что мой сайт после этого будет работать, я придерживаюсь логики, работает - не трогай 😀
G6
На сайте с 12.07.2007
Offline
161
#17
Mister_Black #:
Я могу php 8.3 включить он уже есть в ispmanager, только где гарантия, что мой сайт после этого будет работать, я придерживаюсь логики, работает - не трогай 😀

Просто используйте именно объектный кеш, включите у себя в панеле memcached или Redis, но если соберетесь 8.3, то memcache за глаза в данном случаи. Отправляйте все запросы необходимые туда и будет летать и именно объектный кеш.

W1
На сайте с 22.01.2021
Offline
285
#18
garry69 #:
Просто используйте именно объектный кеш

Ну тема не про объектный кеш, на самом деле. Объектный кеш тут никак не поможет. Здесь речь про кеширование готового html-кода.

G6
На сайте с 12.07.2007
Offline
161
#19
webinfo #:

Ну тема не про объектный кеш, на самом деле. Объектный кеш тут никак не поможет.

А я увидел название и почему-то посмотрев код, подумал про запросы, уже просто не вижу ничего другого видимо 😀

12

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