Magento 2: làm thế nào để tạo loại bộ đệm tùy chỉnh của riêng bạn?


10

Trong Magento 1, có thể tạo loại bộ đệm của riêng bạn bằng cách khai báo các mục sau trong 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>

Nó sẽ dẫn đến một loại bộ đệm mới được thêm vào phụ trợ trong Hệ thống> Quản lý bộ đệm và do đó, nó sẽ thêm khả năng xóa bộ đệm liên quan đến CUSTOM_CACHE_TAGthẻ bộ đệm.

Có thể có trong M2 và làm thế nào để đạt được nó?


Để biết cách triển khai mẫu của câu trả lời được chấp nhận, hãy xem: magento.stackexchange.com/questions/150074/ dọa
RikW

Để biết cách triển khai mẫu của câu trả lời được chấp nhận, hãy xem: magento.stackexchange.com/questions/150074/ mẹo
RikW

Câu trả lời:


18

Đây là bên dưới một số cấu trúc cơ bản để tạo loại bộ đệm tùy chỉnh,

tạo một mô-đun với,

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

Cảm ơn.


7
Sẽ thật tuyệt nếu bạn có thể nói cách sử dụng bộ đệm. Ý tôi là làm thế nào để thêm, xóa, kiểm tra các mục bộ đệm.
Arvind07

nếu ai đó biết cách lưu trữ và lấy dữ liệu bộ đệm, sẽ rất tuyệt. Xin vui lòng
Arshad Hussain


1

Muốn chỉnh sửa bình luận được Rakesh chấp nhận, nhưng đã bị từ chối ....

Dù sao ở đây một số sửa đổi, thông tin bổ sung cho câu trả lời tốt từ Rakesh:

Bộ đệm cache cần được sửa đổi một chút:

<?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>

Vì vậy, tên phải phù hợp với cache_tag.

Làm thế nào để sử dụng nó, xem ở đây: Sử dụng bộ đệm tùy chỉnh Magento 2 trong mô-đun tùy chỉnh

Để sử dụng dữ liệu (sau khi được lưu trữ), bạn phải hủy xác nhận dữ liệu:

$data = unserialize($this->_cacheType->load($cacheKey));
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.