From 04805d0be9add28f0b374df01ca4211a997d21d0 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Wed, 29 May 2013 10:19:03 -0400 Subject: [PATCH 1/2] Only update metadata that has changed --- lib/files/cache/scanner.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/files/cache/scanner.php b/lib/files/cache/scanner.php index 46122221dc..cd022d2513 100644 --- a/lib/files/cache/scanner.php +++ b/lib/files/cache/scanner.php @@ -78,7 +78,7 @@ class Scanner { $this->scanFile($parent); } } - if($cacheData = $this->cache->get($file)) { + if ($cacheData = $this->cache->get($file)) { if ($data['mtime'] === $cacheData['mtime'] && $data['size'] === $cacheData['size']) { $data['etag'] = $cacheData['etag']; @@ -89,7 +89,14 @@ class Scanner { $data['size'] = $cacheData['size']; } } - $this->cache->put($file, $data); + $newData = $data; + if ($cacheData) { + // Only update metadata that has changed + $newData = array_diff($data, $cacheData); + } + if (!empty($newData)) { + $this->cache->put($file, $newData); + } } return $data; } From ea553676789a4b62c1850dc156552ba8276fde5f Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Wed, 29 May 2013 10:40:05 -0400 Subject: [PATCH 2/2] Organize conditionals in a better order --- lib/files/cache/scanner.php | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/lib/files/cache/scanner.php b/lib/files/cache/scanner.php index cd022d2513..8f9a792195 100644 --- a/lib/files/cache/scanner.php +++ b/lib/files/cache/scanner.php @@ -78,19 +78,15 @@ class Scanner { $this->scanFile($parent); } } + $newData = $data; if ($cacheData = $this->cache->get($file)) { + if ($checkExisting && $data['size'] === -1) { + $data['size'] = $cacheData['size']; + } if ($data['mtime'] === $cacheData['mtime'] && $data['size'] === $cacheData['size']) { $data['etag'] = $cacheData['etag']; } - } - if ($checkExisting and $cacheData) { - if ($data['size'] === -1) { - $data['size'] = $cacheData['size']; - } - } - $newData = $data; - if ($cacheData) { // Only update metadata that has changed $newData = array_diff($data, $cacheData); }