Use runtime mode to determine cache TTL for manifest files (#16393)
* Use runtime mode to determine cache TTL for manifest files * Remove unused manifest settings
This commit is contained in:
@@ -1,10 +0,0 @@
|
||||
namespace Umbraco.Cms.Core.Configuration.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Typed configuration options for package manifest settings.
|
||||
/// </summary>
|
||||
[UmbracoOptions(Constants.Configuration.ConfigPackageManifests)]
|
||||
public class PackageManifestSettings
|
||||
{
|
||||
public TimeSpan CacheTimeout { get; set; } = TimeSpan.FromMinutes(10);
|
||||
}
|
||||
@@ -85,7 +85,6 @@ public static partial class UmbracoBuilderExtensions
|
||||
.AddUmbracoOptions<ContentDashboardSettings>()
|
||||
.AddUmbracoOptions<HelpPageSettings>()
|
||||
.AddUmbracoOptions<DataTypesSettings>()
|
||||
.AddUmbracoOptions<PackageManifestSettings>()
|
||||
.AddUmbracoOptions<WebhookSettings>();
|
||||
|
||||
// Configure connection string and ensure it's updated when the configuration changes
|
||||
|
||||
@@ -10,16 +10,18 @@ internal sealed class PackageManifestService : IPackageManifestService
|
||||
{
|
||||
private readonly IEnumerable<IPackageManifestReader> _packageManifestReaders;
|
||||
private readonly IAppPolicyCache _cache;
|
||||
private readonly PackageManifestSettings _packageManifestSettings;
|
||||
private RuntimeSettings _runtimeSettings;
|
||||
|
||||
|
||||
public PackageManifestService(
|
||||
IEnumerable<IPackageManifestReader> packageManifestReaders,
|
||||
AppCaches appCaches,
|
||||
IOptions<PackageManifestSettings> packageManifestSettings)
|
||||
IOptionsMonitor<RuntimeSettings> runtimeSettingsOptionsMonitor)
|
||||
{
|
||||
_packageManifestReaders = packageManifestReaders;
|
||||
_packageManifestSettings = packageManifestSettings.Value;
|
||||
_cache = appCaches.RuntimeCache;
|
||||
_runtimeSettings = runtimeSettingsOptionsMonitor.CurrentValue;
|
||||
runtimeSettingsOptionsMonitor.OnChange(runtimeSettings => _runtimeSettings = runtimeSettings);
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<PackageManifest>> GetAllPackageManifestsAsync()
|
||||
@@ -34,7 +36,9 @@ internal sealed class PackageManifestService : IPackageManifestService
|
||||
|
||||
return tasks.SelectMany(x => x.Result);
|
||||
},
|
||||
_packageManifestSettings.CacheTimeout)
|
||||
_runtimeSettings.Mode == RuntimeMode.Production
|
||||
? TimeSpan.FromDays(30)
|
||||
: TimeSpan.FromSeconds(10))
|
||||
?? Array.Empty<PackageManifest>();
|
||||
|
||||
public async Task<IEnumerable<PackageManifest>> GetPublicPackageManifestsAsync()
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
using Microsoft.Extensions.Options;
|
||||
using Moq;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Cms.Core.Cache;
|
||||
using Umbraco.Cms.Core.Configuration.Models;
|
||||
using Umbraco.Cms.Core.Manifest;
|
||||
using Umbraco.Cms.Infrastructure.Manifest;
|
||||
using Umbraco.Cms.Tests.Common;
|
||||
|
||||
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Manifest;
|
||||
|
||||
@@ -32,7 +32,10 @@ public class PackageManifestServiceTests
|
||||
NoAppCache.Instance,
|
||||
new IsolatedCaches(type => NoAppCache.Instance));
|
||||
|
||||
_service = new PackageManifestService(new[] { _readerMock.Object }, appCaches, new OptionsWrapper<PackageManifestSettings>(new PackageManifestSettings()));
|
||||
_service = new PackageManifestService(
|
||||
new[] { _readerMock.Object },
|
||||
appCaches,
|
||||
new TestOptionsMonitor<RuntimeSettings>(new RuntimeSettings { Mode = RuntimeMode.Production }));
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
Reference in New Issue
Block a user