From: Bart Visscher Date: Fri, 8 Jun 2012 18:47:11 +0000 (+0200) Subject: Add cache for getStorage and getInternalPath functions. X-Git-Tag: v4.5.0beta1~74^2~422^2~38 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=6af980c20c99e31629f283dae39161ece8a415fc;p=nextcloud-server.git Add cache for getStorage and getInternalPath functions. These are called for almost every file operation. --- diff --git a/lib/filesystemview.php b/lib/filesystemview.php index c8df59cf827..8aa7b49f413 100644 --- a/lib/filesystemview.php +++ b/lib/filesystemview.php @@ -40,6 +40,8 @@ class OC_FilesystemView { private $fakeRoot=''; + private $internal_path_cache=array(); + private $storage_cache=array(); public function __construct($root){ $this->fakeRoot=$root; @@ -84,7 +86,10 @@ class OC_FilesystemView { * @return bool */ public function getInternalPath($path){ - return OC_Filesystem::getInternalPath($this->getAbsolutePath($path)); + if (!isset($this->internal_path_cache[$path])) { + $this->internal_path_cache[$path] = OC_Filesystem::getInternalPath($this->getAbsolutePath($path)); + } + return $this->internal_path_cache[$path]; } /** * get the storage object for a path @@ -92,7 +97,10 @@ class OC_FilesystemView { * @return OC_Filestorage */ public function getStorage($path){ - return OC_Filesystem::getStorage($this->getAbsolutePath($path)); + if (!isset($this->storage_cache[$path])) { + $this->storage_cache[$path] = OC_Filesystem::getStorage($this->getAbsolutePath($path)); + } + return $this->storage_cache[$path]; } /**