diff --git a/lib/private/Template/IconsCacher.php b/lib/private/Template/IconsCacher.php
index aab3295405d4d9c089afee9b76b2c209ad1287ac..0d838c4d06d79314a1735f99b18aa42057638e15 100644
--- a/lib/private/Template/IconsCacher.php
+++ b/lib/private/Template/IconsCacher.php
@@ -58,6 +58,9 @@ class IconsCacher {
 
 	private $iconList = 'icons-list.template';
 
+	private $cachedCss;
+	private $cachedList;
+
 	/**
 	 * @param ILogger $logger
 	 * @param Factory $appDataFactory
@@ -137,6 +140,8 @@ class IconsCacher {
 			$cachedVarsCssFile->putContent($data);
 			$list = ":root {\n$list\n}";
 			$cachedFile->putContent($list);
+			$this->cachedList = null;
+			$this->cachedCss = null;
 		}
 
 		return preg_replace($this->iconVarRE, '', $css);
@@ -204,7 +209,10 @@ class IconsCacher {
 	 */
 	public function getCachedCSS() {
 		try {
-			return $this->folder->getFile($this->fileName);
+			if (!$this->cachedCss) {
+				$this->cachedCss = $this->folder->getFile($this->fileName);
+			}
+			return $this->cachedCss;
 		} catch (NotFoundException $e) {
 			return false;
 		}
@@ -216,7 +224,10 @@ class IconsCacher {
 	 */
 	public function getCachedList() {
 		try {
-			return $this->folder->getFile($this->iconList);
+			if (!$this->cachedList) {
+				$this->cachedList = $this->folder->getFile($this->iconList);
+			}
+			return $this->cachedList;
 		} catch (NotFoundException $e) {
 			return false;
 		}
diff --git a/tests/lib/Template/IconsCacherTest.php b/tests/lib/Template/IconsCacherTest.php
index cc6224f32287084ee79e1da640b285a033a4ed7e..376243564430637b53c5900df619a6249e90a417 100644
--- a/tests/lib/Template/IconsCacherTest.php
+++ b/tests/lib/Template/IconsCacherTest.php
@@ -144,7 +144,7 @@ class IconsCacherTest extends \Test\TestCase {
 		";
 
 		$iconsFile = $this->createMock(ISimpleFile::class);
-		$this->folder->expects($this->exactly(6))
+		$this->folder->expects($this->exactly(4))
 			->method('getFile')
 			->willReturn($iconsFile);