From 6ed511cd4539f29464f379aa8a38b00223447ad2 Mon Sep 17 00:00:00 2001 From: Hamid Reza Mohammadi Date: Tue, 5 Oct 2021 07:06:03 +0330 Subject: [PATCH] #218 added AggressiveCacheEnabled option --- RMuseum/RMuseum.xml | 7 ++++- .../GanjoorService-MySqlImports.cs | 26 ++++++++--------- .../GanjoorService-SQLiteUtils.cs | 14 ++++----- .../GanjoorService-SitemapGenerator.cs | 2 +- .../Services/Implementation/GanjoorService.cs | 29 ++++++++++++++++--- RMuseum/appsettings.json | 1 + 6 files changed, 53 insertions(+), 26 deletions(-) diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml index 4a90691a..401bf2f6 100644 --- a/RMuseum/RMuseum.xml +++ b/RMuseum/RMuseum.xml @@ -10848,12 +10848,17 @@ + + + aggressive cache + + Database Context - + Configuration diff --git a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-MySqlImports.cs b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-MySqlImports.cs index 338c9315..e705a7e5 100644 --- a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-MySqlImports.cs +++ b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-MySqlImports.cs @@ -48,13 +48,13 @@ namespace RMuseum.Services.Implementation var job = (await jobProgressServiceEF.NewJob("GanjoorService:ImportFromMySql", $"{stepCount} - start")).Result; - if(string.IsNullOrEmpty(_configuration.GetSection("AudioMySqlServer")["ReportedCommentsDatabase"])) + if(string.IsNullOrEmpty(Configuration.GetSection("AudioMySqlServer")["ReportedCommentsDatabase"])) { await jobProgressServiceEF.UpdateJob(job.Id, job.Progress, "", false, "ReportedCommentsDatabase is not set"); return; } - if (string.IsNullOrEmpty(_configuration.GetSection("AudioMySqlServer")["PoetImagesImportPath"])) + if (string.IsNullOrEmpty(Configuration.GetSection("AudioMySqlServer")["PoetImagesImportPath"])) { await jobProgressServiceEF.UpdateJob(job.Id, job.Progress, "", false, "PoetImagesImportPath is not set"); return; @@ -67,7 +67,7 @@ namespace RMuseum.Services.Implementation stepCount++; - MusicCatalogueService catalogueService = new MusicCatalogueService(_configuration, context); + MusicCatalogueService catalogueService = new MusicCatalogueService(Configuration, context); RServiceResult musicCatalogueRes = await catalogueService.ImportFromMySql($"{stepCount} MusicCatalogueImportFromMySql", jobProgressServiceEF, job); @@ -154,7 +154,7 @@ namespace RMuseum.Services.Implementation using (MySqlConnection connection = new MySqlConnection ( - $"server={_configuration.GetSection("AudioMySqlServer")["Server"]};uid={_configuration.GetSection("AudioMySqlServer")["Username"]};pwd={_configuration.GetSection("AudioMySqlServer")["Password"]};database={_configuration.GetSection("AudioMySqlServer")["Database"]};charset=utf8;convert zero datetime=True" + $"server={Configuration.GetSection("AudioMySqlServer")["Server"]};uid={Configuration.GetSection("AudioMySqlServer")["Username"]};pwd={Configuration.GetSection("AudioMySqlServer")["Password"]};database={Configuration.GetSection("AudioMySqlServer")["Database"]};charset=utf8;convert zero datetime=True" )) { connection.Open(); @@ -360,7 +360,7 @@ namespace RMuseum.Services.Implementation using (MySqlConnection connection = new MySqlConnection ( - $"server={_configuration.GetSection("AudioMySqlServer")["Server"]};uid={_configuration.GetSection("AudioMySqlServer")["Username"]};pwd={_configuration.GetSection("AudioMySqlServer")["Password"]};database={_configuration.GetSection("AudioMySqlServer")["Database"]};charset=utf8;convert zero datetime=True" + $"server={Configuration.GetSection("AudioMySqlServer")["Server"]};uid={Configuration.GetSection("AudioMySqlServer")["Username"]};pwd={Configuration.GetSection("AudioMySqlServer")["Password"]};database={Configuration.GetSection("AudioMySqlServer")["Database"]};charset=utf8;convert zero datetime=True" )) { connection.Open(); @@ -464,7 +464,7 @@ namespace RMuseum.Services.Implementation using (MySqlConnection connection = new MySqlConnection ( - $"server={_configuration.GetSection("AudioMySqlServer")["Server"]};uid={_configuration.GetSection("AudioMySqlServer")["Username"]};pwd={_configuration.GetSection("AudioMySqlServer")["Password"]};database={_configuration.GetSection("AudioMySqlServer")["Database"]};charset=utf8;convert zero datetime=True" + $"server={Configuration.GetSection("AudioMySqlServer")["Server"]};uid={Configuration.GetSection("AudioMySqlServer")["Username"]};pwd={Configuration.GetSection("AudioMySqlServer")["Password"]};database={Configuration.GetSection("AudioMySqlServer")["Database"]};charset=utf8;convert zero datetime=True" )) { connection.Open(); @@ -520,9 +520,9 @@ namespace RMuseum.Services.Implementation string connectionString = approved ? - $"server={_configuration.GetSection("AudioMySqlServer")["Server"]};uid={_configuration.GetSection("AudioMySqlServer")["Username"]};pwd={_configuration.GetSection("AudioMySqlServer")["Password"]};database={_configuration.GetSection("AudioMySqlServer")["Database"]};charset=utf8;convert zero datetime=True" + $"server={Configuration.GetSection("AudioMySqlServer")["Server"]};uid={Configuration.GetSection("AudioMySqlServer")["Username"]};pwd={Configuration.GetSection("AudioMySqlServer")["Password"]};database={Configuration.GetSection("AudioMySqlServer")["Database"]};charset=utf8;convert zero datetime=True" : - $"server={_configuration.GetSection("AudioMySqlServer")["Server"]};uid={_configuration.GetSection("AudioMySqlServer")["SongsUsername"]};pwd={_configuration.GetSection("AudioMySqlServer")["SongsPassword"]};database={_configuration.GetSection("AudioMySqlServer")["SongsDatabase"]};charset=utf8;convert zero datetime=True"; + $"server={Configuration.GetSection("AudioMySqlServer")["Server"]};uid={Configuration.GetSection("AudioMySqlServer")["SongsUsername"]};pwd={Configuration.GetSection("AudioMySqlServer")["SongsPassword"]};database={Configuration.GetSection("AudioMySqlServer")["SongsDatabase"]};charset=utf8;convert zero datetime=True"; using (MySqlConnection connection = new MySqlConnection ( @@ -621,7 +621,7 @@ namespace RMuseum.Services.Implementation { List list = new List(); string connectionString = - $"server={_configuration.GetSection("AudioMySqlServer")["Server"]};uid={_configuration.GetSection("AudioMySqlServer")["ReportedCommentsUsername"]};pwd={_configuration.GetSection("AudioMySqlServer")["ReportedCommentsPassword"]};database={_configuration.GetSection("AudioMySqlServer")["ReportedCommentsDatabase"]};charset=utf8;convert zero datetime=True"; + $"server={Configuration.GetSection("AudioMySqlServer")["Server"]};uid={Configuration.GetSection("AudioMySqlServer")["ReportedCommentsUsername"]};pwd={Configuration.GetSection("AudioMySqlServer")["ReportedCommentsPassword"]};database={Configuration.GetSection("AudioMySqlServer")["ReportedCommentsDatabase"]};charset=utf8;convert zero datetime=True"; using (MySqlConnection connection = new MySqlConnection ( @@ -665,7 +665,7 @@ namespace RMuseum.Services.Implementation job = (await jobProgressServiceEF.UpdateJob(job.Id, 0, $"{jobName} - pre mysql data fetch")).Result; string connectionString = - $"server={_configuration.GetSection("AudioMySqlServer")["Server"]};uid={_configuration.GetSection("AudioMySqlServer")["Username"]};pwd={_configuration.GetSection("AudioMySqlServer")["Password"]};database={_configuration.GetSection("AudioMySqlServer")["Database"]};charset=utf8;convert zero datetime=True"; + $"server={Configuration.GetSection("AudioMySqlServer")["Server"]};uid={Configuration.GetSection("AudioMySqlServer")["Username"]};pwd={Configuration.GetSection("AudioMySqlServer")["Password"]};database={Configuration.GetSection("AudioMySqlServer")["Database"]};charset=utf8;convert zero datetime=True"; using (MySqlConnection connection = new MySqlConnection ( @@ -990,7 +990,7 @@ namespace RMuseum.Services.Implementation job = (await jobProgressServiceEF.UpdateJob(job.Id, 0, $"{jobName} - pre mysql data fetch")).Result; string connectionString = - $"server={_configuration.GetSection("AudioMySqlServer")["Server"]};uid={_configuration.GetSection("AudioMySqlServer")["Username"]};pwd={_configuration.GetSection("AudioMySqlServer")["Password"]};database={_configuration.GetSection("AudioMySqlServer")["Database"]};charset=utf8;convert zero datetime=True"; + $"server={Configuration.GetSection("AudioMySqlServer")["Server"]};uid={Configuration.GetSection("AudioMySqlServer")["Username"]};pwd={Configuration.GetSection("AudioMySqlServer")["Password"]};database={Configuration.GetSection("AudioMySqlServer")["Database"]};charset=utf8;convert zero datetime=True"; using (MySqlConnection connection = new MySqlConnection ( @@ -1037,7 +1037,7 @@ namespace RMuseum.Services.Implementation //poet image - string imagePath = Path.Combine(_configuration.GetSection("AudioMySqlServer")["PoetImagesImportPath"], $"{poet.Id}.png"); + string imagePath = Path.Combine(Configuration.GetSection("AudioMySqlServer")["PoetImagesImportPath"], $"{poet.Id}.png"); if (!File.Exists(imagePath)) { job = (await jobProgressServiceEF.UpdateJob(job.Id, curPoet, $"{jobName} - {poet.Name} - {poet.Id}.png not found")).Result; @@ -1045,7 +1045,7 @@ namespace RMuseum.Services.Implementation } - ImageFileServiceEF imageFileService = new ImageFileServiceEF(context, _configuration); + ImageFileServiceEF imageFileService = new ImageFileServiceEF(context, Configuration); using(FileStream fs = File.OpenRead(imagePath)) { diff --git a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-SQLiteUtils.cs b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-SQLiteUtils.cs index 38e9add4..1585b62d 100644 --- a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-SQLiteUtils.cs +++ b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-SQLiteUtils.cs @@ -46,9 +46,9 @@ namespace RMuseum.Services.Implementation try { - string outDir = _configuration.GetSection("Ganjoor")["GDBStorage"]; - string imgDir = _configuration.GetSection("Ganjoor")["GDBStorageImageSource"]; - string xmlFile = _configuration.GetSection("Ganjoor")["GDBListXMLFile"]; + string outDir = Configuration.GetSection("Ganjoor")["GDBStorage"]; + string imgDir = Configuration.GetSection("Ganjoor")["GDBStorageImageSource"]; + string xmlFile = Configuration.GetSection("Ganjoor")["GDBListXMLFile"]; var poets = await context.GanjoorPoets.AsNoTracking().ToListAsync(); @@ -160,7 +160,7 @@ namespace RMuseum.Services.Implementation /// public async Task> ExportToSqlite(int poetId) { - return await _ExportToSqlite(_context, poetId, Path.Combine($"{_configuration.GetSection("PictureFileService")["StoragePath"]}", "SQLiteExports")); + return await _ExportToSqlite(_context, poetId, Path.Combine($"{Configuration.GetSection("PictureFileService")["StoragePath"]}", "SQLiteExports")); } private async Task> _ExportToSqlite(RMuseumDbContext context, int poetId, string dir, string fileName = null, bool ignoreBio = false) @@ -247,7 +247,7 @@ namespace RMuseum.Services.Implementation { try { - string dir = Path.Combine($"{_configuration.GetSection("PictureFileService")["StoragePath"]}", "SQLiteImports"); + string dir = Path.Combine($"{Configuration.GetSection("PictureFileService")["StoragePath"]}", "SQLiteImports"); if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); @@ -259,7 +259,7 @@ namespace RMuseum.Services.Implementation await file.CopyToAsync(fsMain); } - string email = $"{_configuration.GetSection("Ganjoor")["SystemEmail"]}"; + string email = $"{Configuration.GetSection("Ganjoor")["SystemEmail"]}"; var userId = (await _appUserService.FindUserByEmail(email)).Result.Id; _backgroundTaskQueue.QueueBackgroundWorkItem @@ -490,7 +490,7 @@ namespace RMuseum.Services.Implementation { try { - string dir = Path.Combine($"{_configuration.GetSection("PictureFileService")["StoragePath"]}", "SQLiteImports"); + string dir = Path.Combine($"{Configuration.GetSection("PictureFileService")["StoragePath"]}", "SQLiteImports"); if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); diff --git a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-SitemapGenerator.cs b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-SitemapGenerator.cs index 40d98073..5fa3c859 100644 --- a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-SitemapGenerator.cs +++ b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-SitemapGenerator.cs @@ -58,7 +58,7 @@ namespace RMuseum.Services.Implementation var job = (await jobProgressServiceEF.NewJob("BuildSitemap", "Query data")).Result; try { - string xmlSitemap = _configuration.GetSection("Ganjoor")["SitemapLocation"]; + string xmlSitemap = Configuration.GetSection("Ganjoor")["SitemapLocation"]; if (File.Exists(xmlSitemap)) File.Delete(xmlSitemap); diff --git a/RMuseum/Services/Implementation/GanjoorService.cs b/RMuseum/Services/Implementation/GanjoorService.cs index 8ad8d61f..cce01f5f 100644 --- a/RMuseum/Services/Implementation/GanjoorService.cs +++ b/RMuseum/Services/Implementation/GanjoorService.cs @@ -468,7 +468,7 @@ namespace RMuseum.Services.Implementation } break; } - if (page.FullUrl != "/hashieha" && page.FullUrl != "/vazn" && page.FullUrl != "/simi" && page.FullUrl != "/audioclip") + if ( (AggressiveCacheEnabled || page.GanjoorPageType == GanjoorPageType.CatPage) && page.FullUrl != "/hashieha" && page.FullUrl != "/vazn" && page.FullUrl != "/simi" && page.FullUrl != "/audioclip") { _memoryCache.Set(cachKey, page); } @@ -1431,7 +1431,10 @@ namespace RMuseum.Services.Implementation Comments = poemComments }; - _memoryCache.Set(cachKey, poemViewModel); + if (AggressiveCacheEnabled) + { + _memoryCache.Set(cachKey, poemViewModel); + } } return new RServiceResult ( @@ -3607,6 +3610,24 @@ namespace RMuseum.Services.Implementation } } + /// + /// aggressive cache + /// + public bool AggressiveCacheEnabled + { + get + { + try + { + return bool.Parse(Configuration["AggressiveCacheEnabled"]); + } + catch + { + return false; + } + } + } + /// /// Database Context /// @@ -3615,7 +3636,7 @@ namespace RMuseum.Services.Implementation /// /// Configuration /// - protected IConfiguration _configuration { get; } + protected IConfiguration Configuration { get; } /// /// Background Task Queue Instance @@ -3667,7 +3688,7 @@ namespace RMuseum.Services.Implementation _notificationService = notificationService; _imageFileService = imageFileService; _memoryCache = memoryCache; - _configuration = configuration; + Configuration = configuration; _httpClient = httpClient; } } diff --git a/RMuseum/appsettings.json b/RMuseum/appsettings.json index 7b121e43..8e639053 100644 --- a/RMuseum/appsettings.json +++ b/RMuseum/appsettings.json @@ -3,6 +3,7 @@ "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=museum;Trusted_Connection=True;MultipleActiveResultSets=true" }, "DatabaseMigrate": "False", + "AggressiveCacheEnabled": "False", "PictureFileService": { "StoragePath": "C:\\museum", "ResizedImageContentType": "image/jpeg",