diff --git a/src/Symfony/Component/HttpKernel/HttpCache/Store.php b/src/Symfony/Component/HttpKernel/HttpCache/Store.php index 1b624230d4124..7c3f152a7f17d 100644 --- a/src/Symfony/Component/HttpKernel/HttpCache/Store.php +++ b/src/Symfony/Component/HttpKernel/HttpCache/Store.php @@ -297,13 +297,19 @@ private function getMetadata($key) */ public function purge($url) { - if (is_file($path = $this->getPath($this->getCacheKey(Request::create($url))))) { - unlink($path); + $key = $this->getCacheKey(Request::create($url)); - return true; + $path = $this->getPath($key); + if (!is_file($path)) { + return false; + } + + foreach ($this->getMetadata($key) as $entry) { + $response = $this->restoreResponse($entry[1]); + unlink($this->getPath($response->headers->get('X-Content-Digest'))); } - return false; + return unlink($path); } /** diff --git a/src/Symfony/Component/HttpKernel/Tests/HttpCache/StoreTest.php b/src/Symfony/Component/HttpKernel/Tests/HttpCache/StoreTest.php index fa879ce931f8c..dbceb95b3c9a2 100644 --- a/src/Symfony/Component/HttpKernel/Tests/HttpCache/StoreTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/HttpCache/StoreTest.php @@ -66,10 +66,16 @@ public function testRemovesEntriesForKeyWithPurge() { $request = Request::create('/foo'); $this->store->write($request, new Response('foo')); - $this->assertNotEmpty($this->getStoreMetadata($request)); + + $metadata = $this->getStoreMetadata($request); + $this->assertNotEmpty($metadata); + + $path = $this->store->getPath($metadata[0][1]['x-content-digest'][0]); + $this->assertTrue(is_file($path)); $this->assertTrue($this->store->purge('/foo')); $this->assertEmpty($this->getStoreMetadata($request)); + $this->assertFalse(is_file($path)); $this->assertFalse($this->store->purge('/bar')); }