summaryrefslogtreecommitdiffstats
path: root/apps/files_external/lib/Lib/Storage
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2021-10-19 15:03:22 +0200
committerRobin Appelman <robin@icewind.nl>2021-10-19 15:03:22 +0200
commita1ca901e58e89a8cd7848910fd9700b4b6f5b402 (patch)
tree1e52a344108d60ba53e8fb02777681c186f8baf3 /apps/files_external/lib/Lib/Storage
parenteb6e6e3a85a5d65215736998c916c5fe30d8271b (diff)
downloadnextcloud-server-a1ca901e58e89a8cd7848910fd9700b4b6f5b402.tar.gz
nextcloud-server-a1ca901e58e89a8cd7848910fd9700b4b6f5b402.zip
cache versioning enabled status
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'apps/files_external/lib/Lib/Storage')
-rw-r--r--apps/files_external/lib/Lib/Storage/AmazonS3.php18
1 files changed, 16 insertions, 2 deletions
diff --git a/apps/files_external/lib/Lib/Storage/AmazonS3.php b/apps/files_external/lib/Lib/Storage/AmazonS3.php
index cb5fe134e6f..827fd63d1d6 100644
--- a/apps/files_external/lib/Lib/Storage/AmazonS3.php
+++ b/apps/files_external/lib/Lib/Storage/AmazonS3.php
@@ -51,6 +51,8 @@ use OC\Files\ObjectStore\S3ObjectTrait;
use OCP\Constants;
use OCP\Files\FileInfo;
use OCP\Files\IMimeTypeDetector;
+use OCP\ICacheFactory;
+use OCP\IMemcache;
class AmazonS3 extends \OC\Files\Storage\Common {
use S3ConnectionTrait;
@@ -75,6 +77,9 @@ class AmazonS3 extends \OC\Files\Storage\Common {
/** @var bool|null */
private $versioningEnabled = null;
+ /** @var IMemcache */
+ private $memCache;
+
public function __construct($parameters) {
parent::__construct($parameters);
$this->parseParams($parameters);
@@ -82,6 +87,9 @@ class AmazonS3 extends \OC\Files\Storage\Common {
$this->directoryCache = new CappedMemoryCache();
$this->filesCache = new CappedMemoryCache();
$this->mimeDetector = \OC::$server->get(IMimeTypeDetector::class);
+ /** @var ICacheFactory $cacheFactory */
+ $cacheFactory = \OC::$server->get(ICacheFactory::class);
+ $this->memCache = $cacheFactory->createLocal('s3-external');
}
/**
@@ -721,8 +729,14 @@ class AmazonS3 extends \OC\Files\Storage\Common {
public function versioningEnabled(): bool {
if ($this->versioningEnabled === null) {
- $result = $this->getConnection()->getBucketVersioning(['Bucket' => $this->getBucket()]);
- $this->versioningEnabled = $result->get('Status') === 'Enabled';
+ $cached = $this->memCache->get('versioning-enabled::' . $this->getBucket());
+ if ($cached === null) {
+ $result = $this->getConnection()->getBucketVersioning(['Bucket' => $this->getBucket()]);
+ $this->versioningEnabled = $result->get('Status') === 'Enabled';
+ $this->memCache->set('versioning-enabled::' . $this->getBucket(), $this->versioningEnabled, 60);
+ } else {
+ $this->versioningEnabled = $cached;
+ }
}
return $this->versioningEnabled;
}