diff --git a/lib/files/storage/common.php b/lib/files/storage/common.php
index 8aa227ec0b72deb06bdd553b04d46e1a0c6fc565..38fe5e546f6be008daa43ad64a6cfc870afb8aa7 100644
--- a/lib/files/storage/common.php
+++ b/lib/files/storage/common.php
@@ -21,6 +21,10 @@ namespace OC\Files\Storage;
  */
 
 abstract class Common implements \OC\Files\Storage\Storage {
+	private $cache;
+	private $scanner;
+	private $permissioncache;
+	private $watcher;
 
 	public function __construct($parameters) {
 	}
@@ -269,19 +273,31 @@ abstract class Common implements \OC\Files\Storage\Storage {
 	}
 
 	public function getCache($path = '') {
-		return new \OC\Files\Cache\Cache($this);
+		if (!isset($this->cache)) {
+			$this->cache = new \OC\Files\Cache\Cache($this);
+		}
+		return $this->cache;
 	}
 
 	public function getScanner($path = '') {
-		return new \OC\Files\Cache\Scanner($this);
+		if (!isset($this->scanner)) {
+			$this->scanner = new \OC\Files\Cache\Scanner($this);
+		}
+		return $this->scanner;
 	}
 
 	public function getPermissionsCache($path = '') {
-		return new \OC\Files\Cache\Permissions($this);
+		if (!isset($this->permissioncache)) {
+			$this->permissioncache = new \OC\Files\Cache\Permissions($this);
+		}
+		return $this->permissioncache;
 	}
 
 	public function getWatcher($path = '') {
-		return new \OC\Files\Cache\Watcher($this);
+		if (!isset($this->watcher)) {
+			$this->watcher = new \OC\Files\Cache\Watcher($this);
+		}
+		return $this->watcher;
 	}
 
 	/**