summaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/lib/external/storage.php
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2016-03-04 15:13:56 +0100
committerLukas Reschke <lukas@owncloud.com>2016-03-04 15:13:56 +0100
commit63bd6b25db5e3d9860e12789032b42890d23c202 (patch)
tree6ce476b8d3aecaa8b173256d6632439376dd3602 /apps/files_sharing/lib/external/storage.php
parent8be6054e5ce8aeffd6e305317e57e2747f7909ea (diff)
downloadnextcloud-server-63bd6b25db5e3d9860e12789032b42890d23c202.tar.gz
nextcloud-server-63bd6b25db5e3d9860e12789032b42890d23c202.zip
Cache results of testRemoteUrl
Otherwise setting up the storage will result in a HTTP request and thus slowing down ownCloud. Replaces https://github.com/owncloud/core/pull/22855
Diffstat (limited to 'apps/files_sharing/lib/external/storage.php')
-rw-r--r--apps/files_sharing/lib/external/storage.php21
1 files changed, 19 insertions, 2 deletions
diff --git a/apps/files_sharing/lib/external/storage.php b/apps/files_sharing/lib/external/storage.php
index 41f7bef589b..87f5a3598fb 100644
--- a/apps/files_sharing/lib/external/storage.php
+++ b/apps/files_sharing/lib/external/storage.php
@@ -55,6 +55,11 @@ class Storage extends DAV implements ISharedStorage {
private $token;
/**
+ * @var \OCP\ICacheFactory
+ */
+ private $memcacheFactory;
+
+ /**
* @var \OCP\ICertificateManager
*/
private $certificateManager;
@@ -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;
}
/**