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

Автор темы: Vova
ID темы: 1138
Информация:
Тема содержит 17 сообщения, была просмотрена 3680 раз.
Просмотр темы
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 перед изменениями | Указывайте свою версию в подписи/профиле.
Ежели кто забанен за спам, но не считает себя ботом: можете сообщить мне об этом, все будет хорошо.

PolarLab - вход для подопытных
 
Web
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 перед изменениями | Указывайте свою версию в подписи/профиле.
Ежели кто забанен за спам, но не считает себя ботом: можете сообщить мне об этом, все будет хорошо.

PolarLab - вход для подопытных
x1
 
Web
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 перед изменениями | Указывайте свою версию в подписи/профиле.
Ежели кто забанен за спам, но не считает себя ботом: можете сообщить мне об этом, все будет хорошо.

PolarLab - вход для подопытных
 
Web
mishqa35
хотел сэкономить 16 строк кода ag
А если по теме, как считаете такой метод кеша еще актуален? bn
 
Web
Rush
ну как то так. принцип такой, но лучше использовать сперва запись в буфер, а потом в файл. но у фьюжна уже используется буфер, поэтому могут быть проблемы
 
Web
mishqa35
у меня как раз были эти самые проблемы с буфером, и тогда не стал разбираца в нем.
хотелось бы увидеть как работать с буфером, предпологаю что надо остановить записать и продолжить, но хз как
 
Web
Rush
ну как ты... его на паузу не поставишь. надо полностью пересматривать систему, делить на части и т.д.
 
Web
Polarfox
Буфер не один, можно использовать вложенные буфера, матрица-многомерность, все это легко кэшируется но полностью статикой, и дает большой прирост скорости, если он может быть , конечно.

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

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

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

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

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

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

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

Перейти на форум:
Похожие темы
Темы Форум Ответов / Просмотров Последние сообщения
Как правильно сделать ЧПУ и переиндексировать сайт?  →  Моды 2 / 694 22.11.2017 18:20
Посоветуйте JS-слайдер чтобы фотки JPG сменялись как в GIF-анимации  →  Плагины 2 / 430 13.11.2017 21:01
Посоветуйте как можно больше дешёвых хостингов для лендингов  →  Хостинг 3 / 689 30.09.2017 18:44
как прикрепить скрипт к сайту  →  Хаки/скрипты 1 / 1211 17.08.2017 10:46
Как правильно подсчитать рейтинг статьи?  →  Хаки/скрипты 3 / 910 09.08.2017 22:27
Как правильно загрузить свой шрифт в css для всех браузеров?  →  Темы оформления 7 версии 12 / 5607 04.08.2017 10:06
Как массово удалить присланные новости?  →  Вопросы новичков 7 / 4939 06.06.2017 12:10
Как перейти с http на https  →  Вопросы новичков 17 / 11249 07.05.2017 13:29
Как вы платите налоги с интернет дохода в РФ  →  Флуд 2 / 789 03.05.2017 17:20
comments_include.php как скрыть ссылки в комментариях (не обрабатывать BB-код url)  →  Установка и настройка системы 0 / 2571 03.05.2017 14:12
Топ 5 пользователей форума
Alex Alex (1,172)   Zaxap Zaxap (1,078)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)