/** * @param Request $request * @param Response $response * @param array $params * * @return string */ public function writeCache(Request $request, Response $response, array $params = array()) { $cacheableData = $this->createCacheableData($request, $params, $response->getContent()); $this->cacheAdapter->set($cacheableData); $variantParams = $this->getVariantParams($request); $insersectParams = array_intersect_key($params['tags'], array_keys($variantParams)); $tags = array(); foreach ($insersectParams as $key => $tag) { $tags[$tag] = $variantParams[$tag]; } $this->tagHandler->createTags($tags, $cacheableData->getHashKey()); return $cacheableData->getHashKey(); }
/** * @param FilterResponseEvent $responseEvent */ public function invalidate(FilterResponseEvent $responseEvent) { $request = $responseEvent->getRequest(); $tags = array(); if ($request->isMethod('POST')) { $parameters = array_merge($request->request->all(), $request->query->all(), $request->attributes->all()); foreach ($this->tags as $key => $associatedTag) { foreach ($associatedTag['associated'] as $tag) { if (isset($parameters[$tag])) { $tags[$key] = array('value' => $parameters[$tag], 'type' => $associatedTag['decache_type']); break; } } } $this->tagHandler->cleanTags($tags, true); } }