public CssMinifier(ILoggerFactory loggerFactory) { if (loggerFactory == null) { throw new ArgumentNullException(nameof(loggerFactory)); } _logger = loggerFactory.CreateLogger <CssMinifier>(); _minifier = new KristensenCssMinifier(); }
private static Dictionary <string, Tuple <string, byte[]> > LoadCache(string basePath, string[] extensions = null) { //put static files minificated in a memory store -> cache var staticFilesStorage = new Dictionary <string, Tuple <string, byte[]> >(); //read all static files and load into mmemory var files = Directory.GetFiles(basePath, "*", SearchOption.AllDirectories).ToList(); if (extensions != null) { files = files.Where(f => extensions.Contains(Path.GetExtension(f))).ToList(); } var minifyJs = new WebMarkupMin.Core.CrockfordJsMinifier(); var minifyCss = new WebMarkupMin.Core.KristensenCssMinifier(); var minifyHtml = new WebMarkupMin.Core.HtmlMinifier(); files.ForEach(file => { var content = File.ReadAllBytes(file); var ext = Path.GetExtension(file); //compress or minify if (Environment.GetEnvironmentVariable("minifyResponse") != "false") { switch (ext) { case ".js": //javascript minify var js = System.Text.UTF8Encoding.Default.GetString(content); var minifiedJs = minifyJs.Minify(js, false); if (!minifiedJs.Errors.Any()) { content = System.Text.UTF8Encoding.Default.GetBytes(minifiedJs.MinifiedContent); } break; case ".css": //css minify var css = System.Text.UTF8Encoding.Default.GetString(content); var minifiedCss = minifyCss.Minify(css, false); if (!minifiedCss.Errors.Any()) { content = System.Text.UTF8Encoding.Default.GetBytes(minifiedCss.MinifiedContent); } break; case ".html": //html minify var html = System.Text.UTF8Encoding.Default.GetString(content); var minifiedHtml = minifyHtml.Minify(html, false); if (!minifiedHtml.Errors.Any()) { content = System.Text.UTF8Encoding.Default.GetBytes(minifiedHtml.MinifiedContent); } break; } } staticFilesStorage.Add(file, new Tuple <string, byte[]>(MimeMapping.MimeUtility.GetMimeMapping(file), content)); }); var usedMemory = Math.Round(staticFilesStorage.Select(s => s.Value).Sum(s => s.Item2.Length) / 1024.0 / 1024.0); Console.WriteLine($"{staticFilesStorage.Count} static files loaded into memory using {usedMemory} MB"); return(staticFilesStorage); }