summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@users.noreply.github.com>2022-04-22 08:15:40 +0200
committerGitHub <noreply@github.com>2022-04-22 08:15:40 +0200
commit3f55108227287f780623115662edfcfa28a5f745 (patch)
tree50eda7baddd586f828857cf205b20e07cf0ec13c /lib
parent9a1a14d563659b2143e2eff6f050c21503c0b3c9 (diff)
parentbdfef2dbd1872f1895ec88bd8879a252f4d147b7 (diff)
downloadnextcloud-server-3f55108227287f780623115662edfcfa28a5f745.tar.gz
nextcloud-server-3f55108227287f780623115662edfcfa28a5f745.zip
Merge pull request #32048 from nextcloud/cache-storage-info
cache storage info in memcache for 5m
Diffstat (limited to 'lib')
-rw-r--r--lib/private/legacy/OC_Helper.php19
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/private/legacy/OC_Helper.php b/lib/private/legacy/OC_Helper.php
index 547ffef8607..68fb4311ef8 100644
--- a/lib/private/legacy/OC_Helper.php
+++ b/lib/private/legacy/OC_Helper.php
@@ -44,7 +44,9 @@
*
*/
use bantu\IniGetWrapper\IniGetWrapper;
+use OC\Files\Filesystem;
use OCP\Files\Mount\IMountPoint;
+use OCP\ICacheFactory;
use OCP\IUser;
use Symfony\Component\Process\ExecutableFinder;
@@ -486,9 +488,20 @@ class OC_Helper {
* @throws \OCP\Files\NotFoundException
*/
public static function getStorageInfo($path, $rootInfo = null, $includeMountPoints = true) {
+ /** @var ICacheFactory $cacheFactory */
+ $cacheFactory = \OC::$server->get(ICacheFactory::class);
+ $memcache = $cacheFactory->createLocal('storage_info');
+
// return storage info without adding mount points
$includeExtStorage = \OC::$server->getSystemConfig()->getValue('quota_include_external_storage', false);
+ $fullPath = Filesystem::getView()->getAbsolutePath($path);
+ $cacheKey = $fullPath. '::' . ($includeMountPoints ? 'include' : 'exclude');
+ $cached = $memcache->get($cacheKey);
+ if ($cached) {
+ return $cached;
+ }
+
if (!$rootInfo) {
$rootInfo = \OC\Files\Filesystem::getFileInfo($path, $includeExtStorage ? 'ext' : false);
}
@@ -559,7 +572,7 @@ class OC_Helper {
[,,,$mountPoint] = explode('/', $mount->getMountPoint(), 4);
}
- return [
+ $info = [
'free' => $free,
'used' => $used,
'quota' => $quota,
@@ -570,6 +583,10 @@ class OC_Helper {
'mountType' => $mount->getMountType(),
'mountPoint' => trim($mountPoint, '/'),
];
+
+ $memcache->set($cacheKey, $info, 5 * 60);
+
+ return $info;
}
/**