Saya melihat bahwa banyak model di Magento 2 diimplementasikan Magento\Framework\DataObject\IdentityInterface
.
Antarmuka ini memiliki metode tunggal yang disebut getIdentities
Implementasi metode biasanya kembali return [self::CACHE_TAG . '_' . $this->getId()];
.
Contoh dapat ditemukan di sini Untuk
apa ini digunakan?
magento2
model
magento-2.0
interface
Marius
sumber
sumber
dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
file jadi mungkin ini dimaksudkan untuk dihapus nanti.vendor/magento/module-page-cache/Controller/Block/Esi.php
baris header ESI 28getIdentities
metode ini disebut pada kelas blok dalam hal ini, OP bertanya tentang kelas modelJawaban:
Dari apa yang saya mengerti, ini adalah semacam kesetaraan
getCacheTags
metode Magento 1.Kelas
getIdentities
dari model kemudian digunakan di setiap kelas blok yang mereferensikan model ini.Ok mari kita ambil
/Magento/Catalog/Model/Category.php
:Metode ini kemudian dirujuk dalam
/Magento/Catalog/Block/Category/View.php
:Dalam M2, Anda sekarang harus mendeklarasikan tag cache dengan
getIdentities
metode di tingkat model, maka Anda dapat menggunakannya dalam blok yang merujuk pada model-model itu.Jika Anda memeriksa setiap blok yang menerapkan
getIdentities
metode ini, mereka semua merujukgetIdentities
metode model yang sesuai atau tag cache model yang sesuai seperti\Magento\Catalog\Model\Product::CACHE_TAG
Kemudian
getIdentities
metode blok tersebut digunakan dalam Varnish untuk alasan caching seperti yang disebutkan oleh Matthéo untuk mengaturX-Magento-Tags
header.Header ini kemudian digunakan di
Magento/Framework/App/PageCache/Kernel.php
dalamprocess()
metode untuk menyimpan cache:sumber
Dilihat oleh
Magento\Framework\DataObject\IdentityInterface
komentar kelas itu digunakan untuk cache dan membuat ID entitas unik yang digunakan dalam header Varnish ESI divendor/magento/module-page-cache/Controller/Block/Esi.php
baris 28.sumber
IdentityInterface akan memaksa kelas Model untuk mendefinisikan metode getIdentities () yang akan mengembalikan id unik untuk model. Anda hanya harus menggunakan antarmuka ini jika model Anda memerlukan penyegaran cache setelah operasi basis data dan memberikan informasi ke halaman frontend.
sumber