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.0.3~47 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=598a090db41f9c76d347aec0ed996192e8255a36;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 b62bb82c699..93fce38af41 100644 --- a/lib/filesystemview.php +++ b/lib/filesystemview.php @@ -23,6 +23,8 @@ class OC_FilesystemView { private $fakeRoot=''; + private $internal_path_cache=array(); + private $storage_cache=array(); public function __construct($root){ $this->fakeRoot=$root; @@ -67,7 +69,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 @@ -75,7 +80,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]; } /**