using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Primitives; using Shared; using Shared.Engine; using Shared.Models; using Shared.Models.AppConf; using Shared.Models.Events; using System; using System.Collections.Concurrent; using System.IO; using System.IO.Compression; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; namespace Lampac.Engine.Middlewares { public class Staticache { #region Staticache protected static readonly SemaphoreSlim semaphore = new SemaphoreSlim(1, 1); static readonly ConcurrentDictionary cacheFiles = new(); static readonly Timer cleanupTimer = new Timer(cleanup, null, TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(1)); static Staticache() { Directory.CreateDirectory("cache/static"); var now = DateTime.Now; foreach (string inFile in Directory.EnumerateFiles("cache/static", "*")) { try { if (inFile.EndsWith(".gz")) continue; // cacheKey-