"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
我需要直接从 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