Magento 2: bagaimana cara membuat jenis cache kustom Anda sendiri?

10

Di Magento 1, dimungkinkan untuk membuat jenis cache Anda sendiri dengan mendeklarasikan yang berikut di Anda config.xml:

<global>
    <cache>
        <types>
            <custom translate="label,description" module="module">
                <label>Custom Cache</label>
                <description>This is my custom cacge</description>
                <tags>CUSTOM_CACHE_TAG</tags>
            </custom >
        </types>
    </cache>
</global>

Ini akan menghasilkan jenis cache baru yang ditambahkan ke backend di bawah System> Cache Management dan dengan demikian, itu akan menambah kemampuan untuk menyiram cache yang terkait dengan CUSTOM_CACHE_TAGtag cache.

Apakah itu mungkin dalam M2 dan bagaimana mencapainya?

Raphael di Digital Pianism
sumber
Untuk contoh implementasi jawaban yang diterima, lihat: magento.stackexchange.com/questions/150074/…
RikW
Untuk contoh implementasi jawaban yang diterima, lihat: magento.stackexchange.com/questions/150074/…
RikW

Jawaban:

19

Ini di bawah beberapa struktur dasar untuk membuat jenis cache khusus,

buat satu modul dengan,

app/code/Vendor/Cachetype/etc/cache.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Cache/etc/cache.xsd">
    <type name="custom_cache" translate="label,description" instance="Vendor\Cachetype\Model\Cache\Type">
        <label>Custom Cache type</label>
        <description>Custom cache description.</description>
    </type>
</config>

app/code/Vendor/Cachetype/i18n/en_US.csv

"Custom cache description.","Custom cache description."
"cachetype","Cache type"

app/code/Vendor/Cachetype/Model/Cache/Type.php

<?php
namespace Vendor\Cachetype\Model\Cache;

/**
 * System / Cache Management / Cache type "Custom Cache Tag"
 */
class Type extends \Magento\Framework\Cache\Frontend\Decorator\TagScope
{
    /**
     * Cache type code unique among all cache types
     */
    const TYPE_IDENTIFIER = 'custom_cache_tag';

    /**
     * Cache tag used to distinguish the cache type from all other cache
     */
    const CACHE_TAG = 'CUSTOM_CACHE_TAG';

    /**
     * @param \Magento\Framework\App\Cache\Type\FrontendPool $cacheFrontendPool
     */
    public function __construct(\Magento\Framework\App\Cache\Type\FrontendPool $cacheFrontendPool)
    {
        parent::__construct($cacheFrontendPool->get(self::TYPE_IDENTIFIER), self::CACHE_TAG);
    }
}

Terima kasih.

Rakesh Jesadiya
sumber
7
Akan lebih bagus jika Anda bisa mengetahui cara memanfaatkan cache. Maksud saya cara menambah, menghapus, memeriksa item cache.
Arvind07
jika seseorang tahu cara menyimpan dan mendapatkan data cache, akan lebih bagus. Tolong
Arshad Hussain
2

Ingin mengedit komentar yang diterima Rakesh, tetapi ditolak ....

Pokoknya di sini beberapa modifikasi, info tambahan untuk jawaban yang baik dari Rakesh:

Cache.xml perlu dimodifikasi sedikit:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:noNamespaceSchemaLocation="urn:magento:framework:Cache/etc/cache.xsd">
<type name="custom_cache_tag" translate="label,description" instance="Vendor\Cachetype\Model\Cache\Type">
        <label>Custom Cache type</label>
        <description>Custom cache description.</description>
    </type>
 </config>

Jadi nama harus cocok dengan cache_tag.

Cara menggunakannya, lihat di sini: Menggunakan cache kustom Magento 2 dalam modul khusus

Untuk menggunakan data (setelah di-cache) Anda harus membatalkan pengunaannya:

$data = unserialize($this->_cacheType->load($cacheKey));
Mo3bius
sumber