diff --git a/src/Umbraco.Core/Configuration/Models/PackageManifestSettings.cs b/src/Umbraco.Core/Configuration/Models/PackageManifestSettings.cs
deleted file mode 100644
index f353281ddd..0000000000
--- a/src/Umbraco.Core/Configuration/Models/PackageManifestSettings.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace Umbraco.Cms.Core.Configuration.Models;
-
-///
-/// Typed configuration options for package manifest settings.
-///
-[UmbracoOptions(Constants.Configuration.ConfigPackageManifests)]
-public class PackageManifestSettings
-{
- public TimeSpan CacheTimeout { get; set; } = TimeSpan.FromMinutes(10);
-}
diff --git a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Configuration.cs b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Configuration.cs
index f11aa5d982..6832bbe789 100644
--- a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Configuration.cs
+++ b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Configuration.cs
@@ -85,7 +85,6 @@ public static partial class UmbracoBuilderExtensions
.AddUmbracoOptions()
.AddUmbracoOptions()
.AddUmbracoOptions()
- .AddUmbracoOptions()
.AddUmbracoOptions();
// Configure connection string and ensure it's updated when the configuration changes
diff --git a/src/Umbraco.Infrastructure/Manifest/PackageManifestService.cs b/src/Umbraco.Infrastructure/Manifest/PackageManifestService.cs
index e161a7171a..fbf00b7fa3 100644
--- a/src/Umbraco.Infrastructure/Manifest/PackageManifestService.cs
+++ b/src/Umbraco.Infrastructure/Manifest/PackageManifestService.cs
@@ -10,16 +10,18 @@ internal sealed class PackageManifestService : IPackageManifestService
{
private readonly IEnumerable _packageManifestReaders;
private readonly IAppPolicyCache _cache;
- private readonly PackageManifestSettings _packageManifestSettings;
+ private RuntimeSettings _runtimeSettings;
+
public PackageManifestService(
IEnumerable packageManifestReaders,
AppCaches appCaches,
- IOptions packageManifestSettings)
+ IOptionsMonitor runtimeSettingsOptionsMonitor)
{
_packageManifestReaders = packageManifestReaders;
- _packageManifestSettings = packageManifestSettings.Value;
_cache = appCaches.RuntimeCache;
+ _runtimeSettings = runtimeSettingsOptionsMonitor.CurrentValue;
+ runtimeSettingsOptionsMonitor.OnChange(runtimeSettings => _runtimeSettings = runtimeSettings);
}
public async Task> 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();
public async Task> GetPublicPackageManifestsAsync()
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/PackageManifestServiceTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/PackageManifestServiceTests.cs
index 2c30dc6214..9bba7839e8 100644
--- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/PackageManifestServiceTests.cs
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/PackageManifestServiceTests.cs
@@ -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(new PackageManifestSettings()));
+ _service = new PackageManifestService(
+ new[] { _readerMock.Object },
+ appCaches,
+ new TestOptionsMonitor(new RuntimeSettings { Mode = RuntimeMode.Production }));
}
[Test]