diff --git a/lib/connector/sabre/file.php b/lib/connector/sabre/file.php
index f2efe0a5ac1df94420d7cd7cca94e49961013dbe..3ba1b3355f28266953ea4aea7e9d7ffac994ae5b 100644
--- a/lib/connector/sabre/file.php
+++ b/lib/connector/sabre/file.php
@@ -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'];
 
 	}
 
diff --git a/lib/connector/sabre/node.php b/lib/connector/sabre/node.php
index bb367a18c429500eb37f1ca7f6c8d3e3b59e7c58..e7bcea3171dfabdadbf14531311d8807420eea96 100644
--- a/lib/connector/sabre/node.php
+++ b/lib/connector/sabre/node.php
@@ -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'];
 
 	}