마 젠토 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/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
캐시를 활용하는 방법을 말할 수 있다면 좋을 것입니다. 캐시 항목을 추가, 삭제, 확인하는 방법을 의미합니다.
Arvind07

누군가 캐시 데이터를 저장하고 얻는 방법을 알고 있다면 좋을 것입니다. 제발
Arshad Hussain


2

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.