Забыли пароль?
Запросите новый здесь.

Автор темы: Vova
ID темы: 1138
Информация:
Тема содержит 17 сообщения, была просмотрена 4510 раз.
Просмотр темы
PHP-Fusion Russia » Разное » Разное
 Распечатать тему
Как можна закешировать панельки у фюжене?
Vova
Как можна закешировать панельки у фюжене?
 
Web
mishqa35
fopen и file_get_contents
и делать проверку, был ли изменен контент
 
Web
Vova
mishqa35 написал:

fopen и file_get_contents
и делать проверку, был ли изменен контент


я то понял. покажи хороший пример скрипта
 
Web
Rush
весь контент врапиться в ob_start, ob_get_contents. так вот вместо вывода ob_get_content записать его в файл с меткой времени и к примеру раз в час проверять был ли изменен. если делать проверку каждый раз - прироста производительности не будет, скорее наоборот. а вообще все это малоопрадано, пробовал на фьюжне это рализовать - прирост скорости загрузки измеряется в сотых и тысячных секунды, можно не заморачиваться. т.к. панель это пару запросов и 10-15 строк кода.
 
Web
Polarfox
Скорее ты не так считал или не так делал, нагрузка падает если в панели не статика, и чем мощней панель тем больше.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
 
Rush
проверял бегло на голом свежепроинсталенном движке. как делал описал выше, как считал - по циферкам внизу страницы.
прирост конечно зависит от того, насколько загружена панель и сколько требует времени и ресурсов на рендеринг непосредственно себя.
на 8gamers не вижу ни одной панели, которая требует больше 1го запроса к бд, поэтому и сделал вывод что особого прироста не будет
 
Web
mishqa35
Я такое реализовывал для категорий сайта и снизились не только запросы к базе но и время загрузки, делал 3 функции, проверка, запись, удаление и при обновлении или добавлении просто чистил кеш и записывал новый. В моем случае категории выводились в панели и в новости постоянно.
С учетом того что у меня категории и под-категории, скрипт вполне оправдал себя.
Оффтопик Думаю на чистом движке с одной панелькой это будет не сильно заметно.

 
Web
mishqa35
Вот пример
В maincore.php добавляем
Скачать исходники  Код
function f_cache($prefix) {
   if (file_exists(BASEDIR."cache/".$prefix.".tmp")) {
      $filename = BASEDIR."cache/".$prefix.".tmp";
      return @file_get_contents($filename);
   }
   return false;
}

function create_cache($prefix, $cache_text) {
   $filename = BASEDIR."cache/".$prefix.".tmp";
   $fp = fopen($filename, "wb+");
   fwrite($fp, $cache_text);
   fclose($fp);
   @chmod($filename, 0666);
}

function clear_cache($cache_area = false) {
   $fdir = opendir(BASEDIR."cache");
   while ($file = readdir($fdir)) {
      if($file != "." and $file != ".." and $file != ".htaccess" and $file != "index.php" and $file != "system") {
         if($cache_area) {
            if(strpos($file, $cache_area) !== false) @unlink(BASEDIR."cache/".$file);
         } else {
            @unlink(BASEDIR."cache/".$file);
         }
      }
   }
}



А вот так выглядит панелька
Скачать исходники  Код
<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2011 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: latest_articles_panel.php
| Author: Nick Jones (Digitanium)
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }

openside($locale['global_030']);

$article = f_cache("article");

if ($article === false) {
   $result = dbquery(
      "SELECT ta.article_id, ta.article_subject, tac.article_cat_id, tac.article_cat_access FROM ".DB_ARTICLES." ta
      INNER JOIN ".DB_ARTICLE_CATS." tac ON ta.article_cat=tac.article_cat_id
      ".(iSUPERADMIN ? "" : "WHERE ".groupaccess('article_cat_access'))." AND article_draft='0' ORDER BY article_datestamp DESC LIMIT 0,5"
   );
   if (dbrows($result)) {
      while($data = dbarray($result)) {
         $itemsubject = trimlink($data['article_subject'], 23);
         $article = THEME_BULLET." <a href='".BASEDIR."articles.php?article_id=".$data['article_id']."' title='".$data['article_subject']."' class='side'>$itemsubject</a><br />\n";
      }
   } else {
      $article = "<div style='text-align:center'>".$locale['global_031']."</div>\n";
   }
   create_cache("article", $article);
}
echo $article;

closeside();

?>



Ну и в админке добавать clear_cache("article"); там где идет удаление и редактирование. И папку cache в корне незабываем создать
Изменил(а) mishqa35, 12.12.2012 19:51
x1 x1
 
Web
Polarfox
Оффтопик Копирайт убрал, ужос ab

Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
x1
 
mishqa35
Оффтопик /*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2011 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: latest_articles_panel.php
| Author: Nick Jones (Digitanium)
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
доволен?
x2
 
Web
Polarfox
Конечно, а ты всерьез воспринял похоже ab
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
 
mishqa35
хотел сэкономить 16 строк кода ag
А если по теме, как считаете такой метод кеша еще актуален? bn
 
Web
Rush
ну как то так. принцип такой, но лучше использовать сперва запись в буфер, а потом в файл. но у фьюжна уже используется буфер, поэтому могут быть проблемы
 
Web
mishqa35
у меня как раз были эти самые проблемы с буфером, и тогда не стал разбираца в нем.
хотелось бы увидеть как работать с буфером, предпологаю что надо остановить записать и продолжить, но хз как
 
Web
Rush
ну как ты... его на паузу не поставишь. надо полностью пересматривать систему, делить на части и т.д.
 
Web
Polarfox
Буфер не один, можно использовать вложенные буфера, матрица-многомерность, все это легко кэшируется но полностью статикой, и дает большой прирост скорости, если он может быть , конечно.

Еще одна проблема - вопрос приватности кэша + вопрос разбивки по уровню доступа кэша, имхо лучше сделать для простого юзера (если инфа общего плана!) и для гостя (любого плана подходит).

Захавать весь блок панелей, или еще что, не главная проблема, главная же - обновлять кэш.

А поскольку кэша у нас нет в принципе, то ставить его лучше всего на дополнения только - где все будет под контролем. Или много рутины будет по обновлению кэша.

Оффтопик Я КО или норм?

Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
 
Rush
я считал что буфер линеен, а он поддерживает вложенность. но тут тоже свои нюансы. кэшировать редкоизменяющиеся панели одно. а кэшировать контент - другое. проблемы остаются те же
 
Web

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум:
Похожие темы
Темы Форум Ответов / Просмотров Последние сообщения
в PHP 7.4 нельзя вставлять пустое значение в `id` как раньше  →  Пожелания и предложения 4 / 1589 19.12.2023 03:32
нужны ли на сайте "Закладки" и "История посещений", как в браузере?  →  Пожелания и предложения 4 / 1061 11.08.2023 15:56
Как сделать микроразметку на сайте?  →  PHP 1 / 3433 22.07.2021 06:39
Как вебмастеру сформулировали УТП для создания сайтов на PHP-Fusion?  →  Пожелания и предложения 1 / 7409 25.07.2020 03:46
SEO-оптимизация. дубли страниц в PHP-Fusion - где искать и как избавиться?  →  Ошибки, баги 0 / 5229 19.06.2020 17:06
Как вывести все данные из таблицы, за исключением администраторов  →  Плагины 3 / 5484 24.02.2020 15:59
Как перейти с http на https  →  Вопросы новичков 30 / 32260 24.10.2019 18:45
Как правильно сделать ЧПУ и переиндексировать сайт?  →  Моды 4 / 10398 24.10.2019 17:38
Как перенести ресурс на другой домен  →  Установка и настройка системы 5 / 4864 24.10.2019 14:01
Посоветуйте JS-слайдер чтобы фотки JPG сменялись как в GIF-анимации  →  Плагины 2 / 6639 20.10.2019 13:34
Топ 5 пользователей форума
Zaxap Zaxap (1,090)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)   SchreiBear SchreiBear (625)