Magento 2: कैसे अपने खुद के कस्टम कैश प्रकार बनाने के लिए?


10

मैगेंटो 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कैश टैग से संबंधित कैश फ्लश करने की क्षमता को जोड़ देगा ।

क्या यह एम 2 में संभव है और इसे कैसे प्राप्त किया जाए?


स्वीकृत उत्तर के नमूने के कार्यान्वयन के लिए देखें: magento.stackexchange.com/questions/150074/…
RikW

स्वीकृत उत्तर के नमूने के कार्यान्वयन के लिए देखें: magento.stackexchange.com/questions/150074/…
RikW

जवाबों:


19

यह कस्टम कैश प्रकार बनाने के लिए कुछ मूल संरचना से नीचे है,

एक मॉड्यूल बनाएं,

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
यह बहुत अच्छा होगा यदि आप बता सकते हैं कि कैश का उपयोग कैसे करें। मेरा मतलब है कि कैश आइटम कैसे जोड़ें, हटाएं, चेक करें।
अरविंद

अगर कोई जानता है कि कैश डेटा को कैसे स्टोर किया जाए और कैसे प्राप्त किया जाए, तो यह बहुत अच्छा होगा। कृपया
अरशद हुसैन


2

राकेश द्वारा स्वीकृत टिप्पणी को संपादित करना चाहेंगे, लेकिन अस्वीकार कर दिया गया ...।

वैसे भी यहाँ कुछ संशोधन, राकेश के अच्छे उत्तर के लिए अतिरिक्त जानकारी:

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));
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.