mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
Type storage cache control config
This commit is contained in:
@@ -19,6 +19,7 @@ use Appwrite\Event\Webhook;
|
||||
use Appwrite\Extend\Exception;
|
||||
use Appwrite\Extend\Exception as AppwriteException;
|
||||
use Appwrite\Functions\EventProcessor;
|
||||
use Appwrite\Platform\Modules\Storage\Config\CacheControl;
|
||||
use Appwrite\SDK\Method;
|
||||
use Appwrite\Usage\Context;
|
||||
use Appwrite\Utopia\Database\Documents\User;
|
||||
@@ -706,19 +707,19 @@ Http::init()
|
||||
$cache->save($key, $data);
|
||||
}
|
||||
|
||||
$cacheControl = $cacheControlForStorage([
|
||||
'route' => $route,
|
||||
'source' => 'cache',
|
||||
'project' => $project,
|
||||
'user' => $user,
|
||||
'bucket' => $bucket,
|
||||
'file' => $file,
|
||||
'fileSecurity' => $fileSecurity,
|
||||
'resourceToken' => $resourceToken,
|
||||
'cacheLog' => $cacheLog,
|
||||
'maxAge' => $timestamp,
|
||||
'isImageTransformation' => $isImageTransformation,
|
||||
]);
|
||||
$cacheControl = $cacheControlForStorage(new CacheControl(
|
||||
source: CacheControl::SOURCE_CACHE,
|
||||
project: $project,
|
||||
user: $user,
|
||||
bucket: $bucket,
|
||||
file: $file,
|
||||
resourceToken: $resourceToken,
|
||||
maxAge: $timestamp,
|
||||
isImageTransformation: $isImageTransformation,
|
||||
fileSecurity: $fileSecurity,
|
||||
cacheLog: $cacheLog,
|
||||
route: $route,
|
||||
));
|
||||
|
||||
$response
|
||||
->addHeader('Cache-Control', $cacheControl)
|
||||
|
||||
@@ -9,6 +9,7 @@ use Appwrite\Event\Publisher\Migration as MigrationPublisher;
|
||||
use Appwrite\Event\Publisher\Screenshot as ScreenshotPublisher;
|
||||
use Appwrite\Event\Publisher\StatsResources as StatsResourcesPublisher;
|
||||
use Appwrite\Event\Publisher\Usage as UsagePublisher;
|
||||
use Appwrite\Platform\Modules\Storage\Config\CacheControl;
|
||||
use Appwrite\Utopia\Database\Documents\User;
|
||||
use Executor\Executor;
|
||||
use Utopia\Abuse\Adapters\TimeLimit\Redis as TimeLimitRedis;
|
||||
@@ -203,10 +204,8 @@ $container->set('cache', function (Group $pools, Telemetry $telemetry) {
|
||||
return $cache;
|
||||
}, ['pools', 'telemetry']);
|
||||
|
||||
$container->set('cacheControlForStorage', fn () => function (array $context): string {
|
||||
$maxAge = $context['maxAge'] ?? 0;
|
||||
|
||||
return \sprintf('private, max-age=%d', \is_int($maxAge) ? $maxAge : 0);
|
||||
$container->set('cacheControlForStorage', fn () => function (CacheControl $config): string {
|
||||
return \sprintf('private, max-age=%d', $config->maxAge);
|
||||
});
|
||||
|
||||
$container->set('redis', function () {
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Appwrite\Platform\Modules\Storage\Config;
|
||||
|
||||
use Appwrite\Utopia\Database\Documents\User;
|
||||
use Utopia\Database\Document;
|
||||
use Utopia\Http\Route;
|
||||
|
||||
final class CacheControl
|
||||
{
|
||||
public const SOURCE_ACTION = 'action';
|
||||
public const SOURCE_CACHE = 'cache';
|
||||
|
||||
public function __construct(
|
||||
public readonly string $source,
|
||||
public readonly Document $project,
|
||||
public readonly User $user,
|
||||
public readonly Document $bucket,
|
||||
public readonly Document $file,
|
||||
public readonly Document $resourceToken,
|
||||
public readonly int $maxAge,
|
||||
public readonly bool $isImageTransformation,
|
||||
public readonly ?bool $fileSecurity = null,
|
||||
public readonly ?Document $cacheLog = null,
|
||||
public readonly ?Route $route = null,
|
||||
) {
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ namespace Appwrite\Platform\Modules\Storage\Http\Buckets\Files\Preview;
|
||||
|
||||
use Appwrite\Extend\Exception;
|
||||
use Appwrite\OpenSSL\OpenSSL;
|
||||
use Appwrite\Platform\Modules\Storage\Config\CacheControl;
|
||||
use Appwrite\SDK\AuthType;
|
||||
use Appwrite\SDK\ContentType;
|
||||
use Appwrite\SDK\Method;
|
||||
@@ -297,17 +298,17 @@ class Get extends Action
|
||||
}
|
||||
|
||||
$maxAge = 2592000; // 30 days
|
||||
$cacheControl = $cacheControlForStorage([
|
||||
'source' => 'action',
|
||||
'project' => $project,
|
||||
'user' => $user,
|
||||
'bucket' => $bucket,
|
||||
'file' => $file,
|
||||
'fileSecurity' => $fileSecurity,
|
||||
'resourceToken' => $resourceToken,
|
||||
'maxAge' => $maxAge,
|
||||
'isImageTransformation' => true,
|
||||
]);
|
||||
$cacheControl = $cacheControlForStorage(new CacheControl(
|
||||
source: CacheControl::SOURCE_ACTION,
|
||||
project: $project,
|
||||
user: $user,
|
||||
bucket: $bucket,
|
||||
file: $file,
|
||||
resourceToken: $resourceToken,
|
||||
maxAge: $maxAge,
|
||||
isImageTransformation: true,
|
||||
fileSecurity: $fileSecurity,
|
||||
));
|
||||
|
||||
$response
|
||||
->addHeader('Cache-Control', $cacheControl)
|
||||
|
||||
Reference in New Issue
Block a user