diff --git a/apps/files_sharing/lib/external/storage.php b/apps/files_sharing/lib/external/storage.php
index 41f7bef589b3468d2c5def7fec6607767a7e17f4..87f5a3598fb4438412adbb76ef99f99f545c7d4a 100644
--- a/apps/files_sharing/lib/external/storage.php
+++ b/apps/files_sharing/lib/external/storage.php
@@ -54,6 +54,11 @@ class Storage extends DAV implements ISharedStorage {
 	 */
 	private $token;
 
+	/**
+	 * @var \OCP\ICacheFactory
+	 */
+	private $memcacheFactory;
+
 	/**
 	 * @var \OCP\ICertificateManager
 	 */
@@ -67,8 +72,9 @@ class Storage extends DAV implements ISharedStorage {
 	private $manager;
 
 	public function __construct($options) {
+		$this->memcacheFactory = \OC::$server->getMemCacheFactory();
 		$discoveryManager = new DiscoveryManager(
-			\OC::$server->getMemCacheFactory(),
+			$this->memcacheFactory,
 			\OC::$server->getHTTPClientService()
 		);
 
@@ -241,10 +247,21 @@ class Storage extends DAV implements ISharedStorage {
 		}
 	}
 
+	/**
+	 * @param string $url
+	 * @return bool
+	 */
 	private function testRemoteUrl($url) {
+		$cache = $this->memcacheFactory->create('files_sharing_remote_url');
+		if($result = $cache->get($url)) {
+			return (bool)$result;
+		}
+
 		$result = file_get_contents($url);
 		$data = json_decode($result);
-		return (is_object($data) and !empty($data->version));
+		$returnValue = (is_object($data) and !empty($data->version));
+		$cache->set($url, $returnValue);
+		return $returnValue;
 	}
 
 	/**