We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
I'm defining a DelegatingCacheStrategy, and I'm using a simple config to define which endpoint should be cached:
DelegatingCacheStrategy
$cache_config = [ 'get' => [ 'agreements' ], ]; $cache = new Cache( new FilesystemAdapter('testCache',0, __DIR__), $cache_config );
$strategy = new DelegatingCacheStrategy( $defaultStrategy = new NullCacheStrategy() ); $strategy->registerRequestMatcher( new CacheRequestMatcher($this->cache->getConfig()), new GreedyCacheStrategy( new Psr6CacheStorage( $this->cache->getCacheItemPool() ), 1600 ) ); $stack->push( new CacheMiddleware( $strategy ) );
and the matcher method looks like this:
/** * @inheritDoc */ public function matches( RequestInterface $request ) { $request_type = strtolower( $request->getMethod() ); if (empty($this->config[$request_type])) { return false; } foreach ( $this->config[$request_type] as $endpoint ) { if (strpos($request->getUri()->getPath(), $endpoint) !== false) { return true; } } return false; }
This works great, but I'd need to be able to define different TTLs for different endpoints. Is there a way to set that somehow?
The text was updated successfully, but these errors were encountered:
@vaclavgreif did you figure that out? I need that too :/
Sorry, something went wrong.
Hi Marcus, in the end I did something like this:
$cache_rules = [ new Rule( Rule::REQUEST_TYPE_GET, 'agreements', 400 ), ]; $cache = new Cache( new FilesystemAdapter( 'testCache', 0, __DIR__ ), $cache_rules ); $careCloud = new MySdk( $config, $cache );
and in the MySDK:
if ( $this->cache ) { $strategy = new DelegatingCacheStrategy( $defaultStrategy = new NullCacheStrategy() ); foreach ( $this->cache->getRules() as $item ) { $strategy->registerRequestMatcher( new CacheRequestMatcher( $item ), new GreedyCacheStrategy( new Psr6CacheStorage( $this->cache->getCacheItemPool() ), $item->getTtl() ) ); } $stack->push( new CacheMiddleware( $strategy ) ); }
No branches or pull requests
I'm defining a
DelegatingCacheStrategy
, and I'm using a simple config to define which endpoint should be cached:and the matcher method looks like this:
This works great, but I'd need to be able to define different TTLs for different endpoints. Is there a way to set that somehow?
The text was updated successfully, but these errors were encountered: