MaxHub
Служба Заботы MaxSite CMS

Как уменьшить количество запросов в базу данных?

Вопросы-ответы / 2 ноября 2015

Видел на некоторых сайтах, на главной всего 1 запрос к базе, а у меня целых 5. Как можно это исправить?

Комментариев: 9
  1. Сергей, есть один относительно простой вариант - настроить правильную работу кеширования на сайте. Вот на приложенном скриншоте сразу видно, что кеширование не включено никакое (для демо-сайта это пока нормально).

    Как минимум, нужно на странице Настроек шаблона найти таб «Главная (units)» и задать свои настройки опции «Время кеширования главной страницы»:

    cache-time.png

  2. Или запустить плагин sm_profiler, найти проблемное место и исправить.

  3. Включить кэширование запросов в database.php $db['default']['cache_on'] = TRUE;

  4. спасибо

  5. Включить кэширование запросов в database.php $db['default']['cache_on'] = TRUE;

    А как сбрасывать этот кэш, при необходимости? Например, если новые материалы появились.

  6. А как сбрасывать этот кэш, при необходимости?

    В консоли кнопка СБРОСИТЬ КЭШ СИСТЕМЫ.

    По своему опыту могу сказать, что большое количество запросов не всегда плохо. Если запросы оптимизированы, то скорость их работы достаточно высока и не особо влияет на скорость сайта. Как, например, в самом начале этой записи на картинке - 18 SQL и 0.15 S - по-моему, уменьшать здесь количество запросов ни к чему.

  7. Спасибо, Сергей!

    Вопрос: кэширование, которое включено в database.php $db['default']['cache_on'] = TRUE;, чем откличается от кэширования, которое в шаблоне включается, выборочно? :

    #добавляем в кэш
    mso_add_cache($home_cache_key, ob_get_flush(), $home_cache_time * 60);
    # используем кэширование
    $home_cache_time = (int) mso_get_option('home_cache_time', 'templates', 0);
    $home_cache_key = getinfo('template') . '-' .  __FILE__ . '-' . mso_current_paged() . '-' . $UNIT_NUM;
  8. if ($home_cache_time > 0 and $k = mso_get_cache($home_cache_key) ) echo $k; // да есть в кэше
  9. Екатерина, если по-простому, то mso_add_cache - это кэширование на уровне maxsite (например результатов работы тяжелых скриптов). database.php $db['default']['cache_on'] = TRUE - кеширование на уровне Code Igniter, в данном случае кэширование результатов выборки из БД. Иными словами, вместо того, чтобы обращаться к БД, CI идет в папку на сервере и ищет там закэшированый результат запроса -> если есть, возвращает его, нет - делает запрос.

    Беда при таком подходе та, что любое изменение в БД не приведет к изменениям на сайте, пока не сбросить кэш. Поэтому лучше его не включать.

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Вход / регистрация или войти без комментирования
  Имя и сайт используются только при регистрации

Авторизация MaxSiteAuth. Войти через loginza

(обязательно)