Magento 2:独自のカスタムキャッシュタイプを作成する方法


10

Magento 1では、で以下を宣言することにより、独自のキャッシュタイプを作成することができました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>

その結果、システム>キャッシュ管理の下のバックエンドに新しいキャッシュタイプが追加され、CUSTOM_CACHE_TAGキャッシュタグに関連するキャッシュをフラッシュする機能が追加されます。

M2でそれは可能ですか?それを達成する方法は?


受け入れられた回答の実装例については、magento.stackexchange.com
questions

承認された回答のサンプル実装については、magento.stackexchange.com
questions

回答:


18

これは、カスタムキャッシュタイプを作成するための基本的な構造の一部です。

1つのモジュールを作成し、

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);
    }
}

ありがとう。


7
キャッシュの活用方法を教えていただければ幸いです。キャッシュアイテムを追加、削除、確認する方法を意味します。
Arvind07 2016

誰かがキャッシュデータを保存および取得する方法を知っているとしたら、すばらしいでしょう。お願い
Arshad Hussain


1

Rakeshで承認されたコメントを編集したいのですが、却下されました...

とにかくここでいくつかの変更、Rakeshからの良い答えへの追加情報:

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_tag" translate="label,description" instance="Vendor\Cachetype\Model\Cache\Type">
        <label>Custom Cache type</label>
        <description>Custom cache description.</description>
    </type>
 </config>

したがって、名前はcache_tagと一致する必要があります。

それを使用する方法、ここを見てください:カスタムモジュールでMagento 2カスタムキャッシュを使用する

(キャッシュされた後)データを使用するには、データのシリアル化を解除する必要があります。

$data = unserialize($this->_cacheType->load($cacheKey));
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.