diff --git a/lib/private/helper.php b/lib/private/helper.php
index 8e9b7d3b6f32d7ade2d286593f38c846d3b2d456..86cc0850bc31fb72b8d0fc7b5d6bb95e4a54d921 100644
--- a/lib/private/helper.php
+++ b/lib/private/helper.php
@@ -882,13 +882,19 @@ class OC_Helper {
 	 * @return null|string
 	 */
 	public static function findBinaryPath($program) {
+		$memcache = \OC::$server->getMemCacheFactory()->create('findBinaryPath');
+		if ($memcache->hasKey($program)) {
+			return $memcache->get($program);
+		}
+		$result = null;
 		if (!\OC_Util::runningOnWindows() && self::is_function_enabled('exec')) {
 			exec('command -v ' . escapeshellarg($program) . ' 2> /dev/null', $output, $returnCode);
 			if ($returnCode === 0 && count($output) > 0) {
-				return escapeshellcmd($output[0]);
+				$result = escapeshellcmd($output[0]);
 			}
 		}
-		return null;
+		$memcache->set($program, $result, 3600);
+		return $result;
 	}
 
 	/**
diff --git a/lib/private/memcache/factory.php b/lib/private/memcache/factory.php
index dba9e8a0e00d6a4f31eaf802cc7bbba93666ad4b..1e663eecfe1bdf0a18a46f0f9ca032da0316a011 100644
--- a/lib/private/memcache/factory.php
+++ b/lib/private/memcache/factory.php
@@ -24,7 +24,7 @@ class Factory implements ICacheFactory {
 	}
 
 	/**
-	 * get a cache instance, will return null if no backend is available
+	 * get a cache instance, or Null backend if no backend available
 	 *
 	 * @param string $prefix
 	 * @return \OC\Memcache\Cache
@@ -42,7 +42,7 @@ class Factory implements ICacheFactory {
 		} elseif (Memcached::isAvailable()) {
 			return new Memcached($prefix);
 		} else {
-			return null;
+			return new Null($prefix);
 		}
 	}
 
diff --git a/lib/private/memcache/null.php b/lib/private/memcache/null.php
new file mode 100644
index 0000000000000000000000000000000000000000..62cd060aacad9b25a4f1b289d1202aa934a32d29
--- /dev/null
+++ b/lib/private/memcache/null.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Copyright (c) 2015 Robin McCorkell <rmccorkell@karoshi.org.uk>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\Memcache;
+
+class Null extends Cache {
+	public function get($key) {
+		return null;
+	}
+
+	public function set($key, $value, $ttl = 0) {
+		return true;
+	}
+
+	public function hasKey($key) {
+		return false;
+	}
+
+	public function remove($key) {
+		return true;
+	}
+
+	public function clear($prefix = '') {
+		return true;
+	}
+
+	static public function isAvailable() {
+		return true;
+	}
+}