Widzę, że wiele modeli w Magento 2 implementuje Magento\Framework\DataObject\IdentityInterface
.
Ten interfejs ma jedną metodę o nazwie getIdentities
Implementacje metody zwykle zwracają return [self::CACHE_TAG . '_' . $this->getId()];
.
Przykład można znaleźć tutaj Do
czego to służy?
magento2
model
magento-2.0
interface
Marius
źródło
źródło
dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
pliku, więc może planuje się go później usunąć.vendor/magento/module-page-cache/Controller/Block/Esi.php
wiersz 28getIdentities
w tym przypadku metoda jest wywoływana w klasie blokowej, OP pyta o klasy modeliOdpowiedzi:
Z tego co zrozumiałem, jest to rodzaj równoważności
getCacheTags
metody Magento 1.getIdentities
Z klas modelu jest następnie wykorzystywana w każdej klasie bloku odsyłania tego modelu.Ok, weźmy
/Magento/Catalog/Model/Category.php
:Ta metoda jest następnie przywoływana w
/Magento/Catalog/Block/Category/View.php
:W M2 musisz teraz zadeklarować znacznik pamięci podręcznej za pomocą
getIdentities
metody na poziomie modelu, a następnie możesz go użyć w blokach odwołujących się do tych modeli.Jeśli zaznaczysz każdy blok implementujący
getIdentities
metodę, wszystkie odnoszą się do odpowiedniejgetIdentities
metody modelu lub odpowiedniego znacznika pamięci podręcznej modelu, takiego jak\Magento\Catalog\Model\Product::CACHE_TAG
Następnie te
getIdentities
metody blokowania są używane w Varnish z powodów buforowania, jak wspomniano przez Matthéo, aby ustawićX-Magento-Tags
nagłówek.Nagłówek ten jest następnie wykorzystywany w
Magento/Framework/App/PageCache/Kernel.php
wprocess()
sposób, aby zapisać w pamięci podręcznej:źródło
Sądząc po
Magento\Framework\DataObject\IdentityInterface
komentarzu klasy , jest on używany do buforowania i tworzy unikalny identyfikator encji, który jest używany w nagłówkach Varnish ESI wvendor/magento/module-page-cache/Controller/Block/Esi.php
wierszu 28.źródło
IdentityInterface zmusi klasę Model do zdefiniowania metody getIdentities (), która zwróci unikalny identyfikator modelu. Tego interfejsu można użyć tylko wtedy, gdy model wymagał odświeżenia pamięci podręcznej po operacji bazy danych i renderowania informacji na stronie interfejsu użytkownika.
źródło