Add stat cache to OC_Connector_Sabre_Node and OC_Connector_Sabre_File
Speeds up access of directories with large number of files.
This commit is contained in:
parent
4d627d66a1
commit
e728635c8a
|
@ -63,8 +63,8 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
public function getSize() {
|
public function getSize() {
|
||||||
|
$this->stat();
|
||||||
return OC_Filesystem::filesize($this->path);
|
return $this->stat_cache['size'];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,11 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $path;
|
protected $path;
|
||||||
|
/**
|
||||||
|
* file stat cache
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $stat_cache;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets up the node, expects a full path name
|
* 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
|
* 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
|
* @return int
|
||||||
*/
|
*/
|
||||||
public function getLastModified() {
|
public function getLastModified() {
|
||||||
|
$this->stat();
|
||||||
return OC_Filesystem::filemtime($this->path);
|
return $this->stat_cache['mtime'];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue