symfony Кеширование - как сделать

Простой пример кеширования запроса к API с помощью кеш-контракта (см метод getClients()):

use Symfony\Component\Cache\Adapter\FilesystemAdapter;
use Symfony\Contracts\Cache\ItemInterface;
        
/**
 * Запросы к VK
 */
class VkApiClientService
{
    private $accountId;
    private $apiVersion;
    private $accessToken;
    
    /**
     * @var  VK\Client\VKApiClient  Клиент из стандартного VK SDK
     */
    private $client;
    
    /**
     * @var  Symfony\Component\Cache\Adapter\FilesystemAdapter  стандартный компонент кеширования
     */
    private $cache;
    
    /**
     * @var  int время жизни кеша
     */
    private $defaultCacheLifetime = 3600;
    
    
    public function __construct(string $accountId, string $apiVersion, string $accessToken)
    {
        $this->accountId =  $accountId;
        $this->apiVersion = $apiVersion;
        $this->accessToken = $accessToken;
        
        $this->client = new VKApiClient($this->apiVersion);
        $this->cache = new FilesystemAdapter();
    }
    
    /**
     * Данные по клиентам 
     * 
     * @return array
     */
    public function getClients()
    {
        $responce = $this->cache->get(__FUNCTION__, function (ItemInterface $item) {
//            var_dump('call!');
            $item->expiresAfter($this->defaultCacheLifetime);

            $responce = $this->client->ads()->getClients($this->accessToken, 
                       ['account_id' => $this->accountId]);

            return $responce;
        });
       
//        var_dump('from cache');
//        $this->cache->delete(__FUNCTION__);
       return $responce;
    }

Подробнее о кешировании: https://symfony.com/doc/current/componen...

Возможность отказаться от закешированных данных (брать ли из кеша)

Можно используйте подход с указанием того брать ли данные из кеша.

Key Words for FKN + antitotal forum (CS VSU):