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.