Skip to content
Snippets Groups Projects
Commit d9d6876b authored by Bart Visscher's avatar Bart Visscher
Browse files

Add stat cache to OC_Connector_Sabre_Node and OC_Connector_Sabre_File

Speeds up access of directories with large number of files.
parent 7c5c257b
No related branches found
No related tags found
No related merge requests found
......@@ -63,8 +63,8 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
* @return int
*/
public function getSize() {
return OC_Filesystem::filesize($this->path);
$this->stat();
return $this->stat_cache['size'];
}
......
......@@ -29,6 +29,11 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
* @var string
*/
protected $path;
/**
* file stat cache
* @var array
*/
protected $stat_cache;
/**
* Sets up the node, expects a full path name
......@@ -77,7 +82,14 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
}
/**
* Set the stat cache
*/
protected function stat() {
if (!isset($this->stat_cache)) {
$this->stat_cache = OC_Filesystem::stat($this->path);
}
}
/**
* Returns the last modification time, as a unix timestamp
......@@ -85,8 +97,8 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
* @return int
*/
public function getLastModified() {
return OC_Filesystem::filemtime($this->path);
$this->stat();
return $this->stat_cache['mtime'];
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment