Size: a a a

2020 December 18

AM

Alexander Makarov in Yii Framework 3
mj4444
Похоже ты понял всё с точностью наоборот. Компонент получает Yii кеш. Я хочу из компонента передать куда то PSR кеш и не хочу в компонент передавать 2 кеша. Если я в компонент буду передвать 2 кеша, получается что я на уровне зависимостей в коде должен как то прописать парент. Какой то бред получается.
Я разве не это же написал?
источник

m

mj4444 in Yii Framework 3
Alexander Makarov
5) Не понял. Что должно делать value dependency?
Это аналог tag dependency, только условно значение тега мы храним у себя.
Например если кеш создан с тегом ValueDependency(1), то при чтении, кеш будет валидным только при ValueDependency(1).
источник

AM

Alexander Makarov in Yii Framework 3
mj4444
Это аналог tag dependency, только условно значение тега мы храним у себя.
Например если кеш создан с тегом ValueDependency(1), то при чтении, кеш будет валидным только при ValueDependency(1).
Всё ещё не понял.
источник

AM

Alexander Makarov in Yii Framework 3
Где почитать и посмотреть примеры?
источник

m

mj4444 in Yii Framework 3
Alexander Makarov
Кеш разве не по дефолту быстрый?
По дефолту файловый кеш относительно apcu не быстрый.
Тэги мы можем хранить в MemCached, я тяжёлый контент в базе данных.
источник

AM

Alexander Makarov in Yii Framework 3
Почему всё не хранить сразу в быстром кеше?
источник

m

mj4444 in Yii Framework 3
Alexander Makarov
Всё ещё не понял.
Пример:
new FileDependency('file.txt')
С этим всё понятно. А если у нас это время в базе хранится? У нас уже получена модель и где то в ней время последней модификации.
источник

m

mj4444 in Yii Framework 3
Alexander Makarov
Почему всё не хранить сразу в быстром кеше?
По тому что дисковой памяти обычно во много раз больше чем оперативной.
источник

AM

Alexander Makarov in Yii Framework 3
Ни разу такого не встречал чтобы в кеш не влезало...
источник

m

mj4444 in Yii Framework 3
Alexander Makarov
Ни разу такого не встречал чтобы в кеш не влезало...
# config/packages/cache.yaml
framework:
   cache:
       pools:
           my_cache_pool:
               adapter: cache.adapter.redis
               tags: tag_pool
           tag_pool:
               adapter: cache.adapter.apcu
https://symfony.ru/doc/current/cache.html
источник

В

Виктор in Yii Framework 3
Alexander Makarov
Ни разу такого не встречал чтобы в кеш не влезало...
Видел, как в одной конторе гигантские json-структуры в кеш пихали. Там архитектура была, мягко говоря, не очень) Поэтому, чтобы запустить сайт, сначала несколько минут прогревали кеш, получали сколько-то гигов json, и данные для сайта брали только из кеша, ибо высчитывать это все на лету было нереально :D
источник

AM

Alexander Makarov in Yii Framework 3
Ну вот да, такие решения, что без прогрева вообще не заводятся, я видел тоже.
источник

AM

Alexander Makarov in Yii Framework 3
Но это уже не совсем кеш.
источник

AM

Alexander Makarov in Yii Framework 3
Скорее промежуточный слой данных.
источник

AM

Alexander Makarov in Yii Framework 3
Так, ну тут аргументация понятна.
источник

AM

Alexander Makarov in Yii Framework 3
А что такое ValueDependency?
источник

m

mj4444 in Yii Framework 3
Alexander Makarov
А что такое ValueDependency?
К примеру у меня есть модель с огромной кучей дочерних данных. Каждый раз когда я что либо внутри обновляю, я меняю счётчик у основной модели.
Теперь мне надо куда то отдать сгруппированные данные с какими то там ещё вычислениями. Я всё это вычисляю и помещаю в кеш с тегом ValueDependency(значение счётчика).
При чтении я опять передаю значение счётчика и если оно поменялось, то значит надо инвалидировать кеш и всё пересчитать.
источник

m

mj4444 in Yii Framework 3
Alexander Makarov
А что такое ValueDependency?
Вот из реального проекта пример:
Исходная страница сайта хранится в виде XML. У этого XML есть версия. При запросе страницы мы генерируем HTML из этого XML. XML может обновляться раз в месяц или не обновляться никогда, а генерация процесс ресурсоёмий. По этому при обновлении версии XML мы должны перегенерировать HTML. Сейчас мы можем сделать так CallbackDependency(fn () => $xmlVersion), но ValueDependency($xmlVersion) будет красивее и понятнее.
источник

AM

Alexander Makarov in Yii Framework 3
А зачем в кеш пихать это всё?
источник

AM

Alexander Makarov in Yii Framework 3
Почему не перегенерить сразу в файл? Сравнив предварительно версии?
источник