"Global" 在 Spryker 中缓存

"Global" cache in Spryker

我需要直接从 Yves 控制器发出 HTTP 请求。为了减少整个操作的时间,最好缓存这个请求的结果。我们是否有类似可快速访问的系统级(或“全局”)缓存之类的东西来注入 Yves 控制器?

为了快速解决问题,我建议使用 Redis 作为键值存储。

存储客户端的 DI

<?php

const CLIENT_STORAGE = 'CLIENT_STORAGE';

/**
 * @param \Spryker\Client\Kernel\Container $container
 *
 * @return \Spryker\Client\Kernel\Container
 */
public function provideServiceLayerDependencies(Container $container)
{
    $container[static::CLIENT_STORAGE] = function (Container $container) {
        return $container->getLocator()->storage()->client();
    };

    return $container;
}

工厂

<?php

 /**
 * @return \Spryker\Client\Storage\StorageClientInterface
 */
public function getStorageClient()
{
    return $this->getProvidedDependency(MyBundleDependencyProvider::CLIENT_STORAGE);
}

访问密钥

<?php
$storedValue = $this->storageClient->get($myKey);
if (!empty($storedValue)) {
    return $storedValue;
} 
// generate and return value