В InstantCMS 2 в версиях до 2.0.1 включительно загрузка классов кэширования производится независимо от того, разрешено ли кэширование в настройках сайта или нет. Мотивацию разработчиков для этого я точно не знаю. Скорее всего это желание следовать принципам ООП, по которым проверка работы с кэшем должна осуществляться предпочтительно в классе кэширования.
Но поскольку имя параметра настройки 'cache_enabled' вряд ли будет меняться в будущем, то выгоднее в нескольких местах кода вне класса кэширования сделать проверку этого параметра и просто не загружать ничего, связанного с кэшированием, если оно выключено. На моём компе это дало выигрыш порядка 4-5 мс и дополнительную экономию памяти (не сравнивал, забыл).
Изменения делаются в файлах:
\index.php
\system\core\core.php
\system\core\eventsmanager.php
\system\core\model.php
Понимаю, что на данном этапе никто гнаться за этим небольшим ускорением не будет. Выкладываю просто для информации о возможностях оптимизации скорости движка. И как задел на будущее — десяток подобных мелких оптимизаций в сумме дадут 40-50 мс, что уже будет заметно.
\index.php
меняем на
и строку
меняем на
\system\core\core.php
В функции runWidget()
меняем на
\system\core\eventsmanager.php
В функции getAllListeners начало и окончание изменить на:
\system\core\model.php
В функции getItem() в четырёх местах (строки 935, 959, 1047 и 1089)
меняем на
Но поскольку имя параметра настройки 'cache_enabled' вряд ли будет меняться в будущем, то выгоднее в нескольких местах кода вне класса кэширования сделать проверку этого параметра и просто не загружать ничего, связанного с кэшированием, если оно выключено. На моём компе это дало выигрыш порядка 4-5 мс и дополнительную экономию памяти (не сравнивал, забыл).
Изменения делаются в файлах:
\index.php
\system\core\core.php
\system\core\eventsmanager.php
\system\core\model.php
Понимаю, что на данном этапе никто гнаться за этим небольшим ускорением не будет. Выкладываю просто для информации о возможностях оптимизации скорости движка. И как задел на будущее — десяток подобных мелких оптимизаций в сумме дадут 40-50 мс, что уже будет заметно.
\index.php
cmsCache::getInstance()->start();
if (cmsConfig::get('cache_enabled')) { cmsCache::getInstance()->start(); }
cmsCache::getInstance()->stop();
if (cmsConfig::get('cache_enabled')) { cmsCache::getInstance()->stop(); }
\system\core\core.php
В функции runWidget()
$cache_key = "widgets.{$widget['id']}"; $cache = cmsCache::getInstance(); if (!$widget_object->isCacheable() || false === ($result = $cache->get($cache_key))){ if ($result){ // Отдельно кешируем имя шаблона виджета, поскольку оно могло быть // изменено внутри виджета, а в кеш у нас попадает только тот массив // который возвращается кодом виджета (без самих свойств $widget_object) $result['_wd_template'] = $widget_object->getTemplate(); } $cache->set($cache_key, $result); }
$result = false; if ($widget_object->isCacheable() && cmsConfig::get('cache_enabled')){ $cache_key = "widgets.{$widget['id']}"; $cache = cmsCache::getInstance(); $result = $cache->get($cache_key); } if ($result === false){ if ($result){ // Отдельно кешируем имя шаблона виджета, поскольку оно могло быть // изменено внутри виджета, а в кеш у нас попадает только тот массив // который возвращается кодом виджета (без самих свойств $widget_object) $result['_wd_template'] = $widget_object->getTemplate(); } }
\system\core\eventsmanager.php
В функции getAllListeners начало и окончание изменить на:
public static function getAllListeners(){ $config = cmsConfig::getInstance(); if ($config->cache_enabled) { $cache = cmsCache::getInstance(); $cache_key = 'events'; if (false !== ($structure = $cache->get($cache_key))){ return $structure; } } ... if ($config->cache_enabled) {$cache->set($cache_key, $structure, 86400); } return $structure;
\system\core\model.php
В функции getItem() в четырёх местах (строки 935, 959, 1047 и 1089)
if ($this->cache_key){
if ($this->cache_key && cmsConfig::get('cache_enabled')){
Реклама #
lokanaft 10 лет назад #
WebMan 10 лет назад #
lokanaft 10 лет назад #
WebMan 10 лет назад #
WebMan 10 лет назад #