Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Кэширование

В includes/top.php
вызывается функция get_cache_all()

Она в свою очередь запускает ряд функций, например get_cache('categories_url');
В get_cache($filename) проверяется, есть ли файл и включен ли CACHE_PRO ....

Если есть файл и выключен кэш про, читается, если нет, то создается ниже в свитче, опять же для примера кейс с функцией set_categories_url_cache();, которая через функцию save_cache() пишет в файл....

Но не понятно каким образом это помогает в снижении нагрузки? Не могу понять систему.
Есть у кого мыли по этому поводу?


Идея должна быть простая. Чтобы не делать каждый раз одни и те же  запросы к базе, результаты запросов надо хранить в файле - это и снижает нагрузку.
Практическая реализация этого в ShopOs  не выдерживает никакой критики. Была изначально система кеширования, которая работала, мягко говоря, неважно. По этой причине решили добавить CACHE PRO. И, как водится, добавилось новых ошибок больше, чем исправилось старых.
Начать хотя бы с того, что в админке в настройках кеширования есть
1. Использовать кэш
2. Cache Pro
Как простому пользователю понять, в чем разница между этими настройками и как они соотносятся? Написано это внятно  где-то в мануале?


Ну саму суть задуманного я понял.

Анализирую запросы

(1) (0.00009) select categories_id, categories_url from os_categories where categories_status = 1 and categories_url is not null and categories_url <> ''
(1) (0.00008) select content_id, content_page_url from os_content_manager where content_page_url <> '' and content_page_url is not null
(1) (0.00008) select faq_id, faq_page_url from os_faq where status = 1 and faq_page_url is not null and faq_page_url <> ''
(1) (0.00007) select news_id, news_page_url from os_latest_news where news_page_url <> '' and news_page_url is not null
(1) (0.00007) select topics_id, topics_page_url from os_topics where topics_page_url <> '' and topics_page_url is not null
(1) (0.00007) select articles_id, articles_page_url from os_articles where articles_page_url <> '' and articles_page_url is not null

....

Это только когда выключено "Кэширование запросов к БД".
Если включить, то конечно их уже нет.
Хотя получается не логичное действие. Перед включением "Кэширование запросов к БД", можно спокойно выполнить нужные запросы и закэшировать их в файле и по мере надобности обновлять.
А сейчас получается, что все эти запросы( по типу приведенных выше ), выполняются на всех страницах.

Уставший был, не нашел все до конца.
в includes/top.php еще же есть
    function osDBquery($query) {
        if (DB_CACHE == 'true') {
            $result = os_db_queryCached($query);
        } else {
            $result = os_db_query($query);

        }
        return $result;
    }

которая при включении кэширования запросов, использует функцию os_db_queryCached(), а она уже возвращает результат.

Но все равно какая-то каша получается.


Источник



Copyright ShopOS