Доброго всем дня!
Создал собственный компонент, которому прикрутил выбор типа кеширования (стандартным способом - авто + управляемое, кешировать, не кешировать).
Скопировал кеширование из стандартного компонента news.detail с помощью метода startResultCache. Затем при проверке выяснил, что тегированный кеш для компонента не работает (хотя глобально на сайте он включен).
Переписал кеширование компонента, превратив его в управлямое - регистрировал теги и т.д. Теперь кеширование работает так, как я хотел, но если в настройках компонента отключить его, данные все-равно кешируются)).
В настройках в админке есть пометка "Замечание: не все компоненты могут поддерживать управляемое кеширование.".
Вопрос: от чего зависит, поддерживает ли компонент тегированный кеш? только от наличия в коде конструкций по типу создания тегов ?
И как связать параметр компонента "Не кешировать" с логикой компонента?
Т.е. понятно, что если выбрано кешировать, то мы проверяем есть ли актуальный кеш, если его нет, то делаем выборку из базы и кешируем результаты.
Получается, что для того, чтобы не кешировать вообще ничего, надо проверять какой параметр задан в вызове компонента и если там стоит допустим N, то просто делать выборку из базы. Но тогда один и тот же код выборки из базы будет написан 2 раза либо вынесен в отдельную функцию.
Создал собственный компонент, которому прикрутил выбор типа кеширования (стандартным способом - авто + управляемое, кешировать, не кешировать).
Скопировал кеширование из стандартного компонента news.detail с помощью метода startResultCache. Затем при проверке выяснил, что тегированный кеш для компонента не работает (хотя глобально на сайте он включен).
Переписал кеширование компонента, превратив его в управлямое - регистрировал теги и т.д. Теперь кеширование работает так, как я хотел, но если в настройках компонента отключить его, данные все-равно кешируются)).
В настройках в админке есть пометка "Замечание: не все компоненты могут поддерживать управляемое кеширование.".
Вопрос: от чего зависит, поддерживает ли компонент тегированный кеш? только от наличия в коде конструкций по типу создания тегов ?
И как связать параметр компонента "Не кешировать" с логикой компонента?
Т.е. понятно, что если выбрано кешировать, то мы проверяем есть ли актуальный кеш, если его нет, то делаем выборку из базы и кешируем результаты.
Получается, что для того, чтобы не кешировать вообще ничего, надо проверять какой параметр задан в вызове компонента и если там стоит допустим N, то просто делать выборку из базы. Но тогда один и тот же код выборки из базы будет написан 2 раза либо вынесен в отдельную функцию.