Add cache for getStorage and getInternalPath functions.
These are called for almost every file operation.
This commit is contained in:
parent
d9d6876be9
commit
6af980c20c
1 changed files with 10 additions and 2 deletions
|
@ -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];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue