From 02c4bb30370e4728f3d0ad7654fa46767439f68a Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Mon, 9 Oct 2017 14:54:32 -0400 Subject: [PATCH] configurable cache size limit --- src/Icons/Controllers/IconsController.cs | 5 ++--- src/Icons/IconsSettings.cs | 1 + src/Icons/Startup.cs | 18 ++++++++++++++++-- src/Icons/appsettings.json | 5 +++-- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/Icons/Controllers/IconsController.cs b/src/Icons/Controllers/IconsController.cs index a781ad51a5..4bcfe8ffa1 100644 --- a/src/Icons/Controllers/IconsController.cs +++ b/src/Icons/Controllers/IconsController.cs @@ -5,7 +5,6 @@ using Bit.Icons.Models; using Bit.Icons.Services; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; -using Microsoft.Extensions.Options; namespace Bit.Icons.Controllers { @@ -20,11 +19,11 @@ namespace Bit.Icons.Controllers public IconsController( IMemoryCache memoryCache, IDomainMappingService domainMappingService, - IOptions iconsSettingsOptions) + IconsSettings iconsSettings) { _memoryCache = memoryCache; _domainMappingService = domainMappingService; - _iconsSettings = iconsSettingsOptions.Value; + _iconsSettings = iconsSettings; } [HttpGet("")] diff --git a/src/Icons/IconsSettings.cs b/src/Icons/IconsSettings.cs index e4e6ee59f1..878f3f3170 100644 --- a/src/Icons/IconsSettings.cs +++ b/src/Icons/IconsSettings.cs @@ -4,5 +4,6 @@ { public virtual string BestIconBaseUrl { get; set; } public virtual int CacheHours { get; set; } + public virtual long? CacheSizeLimit { get; set; } } } diff --git a/src/Icons/Startup.cs b/src/Icons/Startup.cs index 7d4e443cb1..64f921d232 100644 --- a/src/Icons/Startup.cs +++ b/src/Icons/Startup.cs @@ -18,10 +18,24 @@ namespace Bit.Icons public void ConfigureServices(IServiceCollection services) { + // Options services.AddOptions(); - services.Configure(Configuration.GetSection("IconsSettings")); - services.AddMemoryCache(); + + // Settings + var iconsSettings = new IconsSettings(); + ConfigurationBinder.Bind(Configuration.GetSection("IconsSettings"), iconsSettings); + services.AddSingleton(s => iconsSettings); + + // Cache + services.AddMemoryCache(options => + { + options.SizeLimit = iconsSettings.CacheSizeLimit; + }); + + // Services services.AddSingleton(); + + // Mvc services.AddMvc(); } diff --git a/src/Icons/appsettings.json b/src/Icons/appsettings.json index e65db766af..e4535f3a0c 100644 --- a/src/Icons/appsettings.json +++ b/src/Icons/appsettings.json @@ -13,7 +13,8 @@ } }, "iconsSettings": { - "BestIconBaseUrl": "https://icons.better-idea.org", - "CacheHours": 24 + "bestIconBaseUrl": "https://icons.better-idea.org", + "cacheHours": 24, + "cacheSizeLimit": null } }