Я вижу, что многие модели в Magento 2 реализованы Magento\Framework\DataObject\IdentityInterface
.
Этот интерфейс имеет единственный метод, который называется getIdentities
Реализация метода обычно возвращается return [self::CACHE_TAG . '_' . $this->getId()];
.
Пример можно найти здесь. Для
чего это нужно ?
magento2
model
magento-2.0
interface
Мариус
источник
источник
dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
файле, поэтому, возможно, он будет удален позже.vendor/magento/module-page-cache/Controller/Block/Esi.php
строке заголовков ESI 28getIdentities
в этом случае метод вызывается для блочного класса, OP спрашивает о классах моделейОтветы:
Из того, что я понял, это своего рода эквивалентность
getCacheTags
метода Magento 1.getIdentities
Из классов моделей затем используется в каждом блоке класса , ссылающегося эту модель.Хорошо, давайте возьмем
/Magento/Catalog/Model/Category.php
:Этот метод затем упоминается в
/Magento/Catalog/Block/Category/View.php
:В M2 вам теперь нужно объявить тег кеша
getIdentities
методом на уровне модели, а затем использовать его в блоках, ссылающихся на эти модели.Если вы проверите каждый блок, реализующий
getIdentities
метод, все они ссылаются на соответствующийgetIdentities
метод модели или соответствующий тег кэша модели, такой как\Magento\Catalog\Model\Product::CACHE_TAG
Затем эти блочные
getIdentities
методы используются в Varnish для целей кэширования, как было сказано Маттео для установкиX-Magento-Tags
заголовка.Этот заголовок затем используется
Magento/Framework/App/PageCache/Kernel.php
вprocess()
методе , чтобы сохранить кэш:источник
Судя по
Magento\Framework\DataObject\IdentityInterface
комментарию класса, он используется для кэширования и создания уникального идентификатора объекта, который используется в заголовках ESI Varnish вvendor/magento/module-page-cache/Controller/Block/Esi.php
строке 28.источник
IdentityInterface заставит класс Model определить метод getIdentities (), который будет возвращать уникальный идентификатор для модели. Вы должны использовать этот интерфейс только в том случае, если ваша модель требует обновления кэша после работы с базой данных и отображения информации на странице веб-интерфейса.
источник