Better handling of static files.
This commit is contained in:
@@ -61,15 +61,6 @@ namespace VAR.Focus.Web.Code
|
||||
}
|
||||
}
|
||||
|
||||
public void PrepareCacheableResponse(HttpResponse response)
|
||||
{
|
||||
const int secondsInDay = 86400;
|
||||
response.ExpiresAbsolute = DateTime.Now.AddSeconds(secondsInDay);
|
||||
response.Expires = secondsInDay;
|
||||
response.Cache.SetCacheability(HttpCacheability.Public);
|
||||
response.Cache.SetMaxAge(new TimeSpan(0, 0, secondsInDay));
|
||||
}
|
||||
|
||||
#endregion Public methods
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Web;
|
||||
using System;
|
||||
using System.Web;
|
||||
using VAR.Json;
|
||||
|
||||
namespace VAR.Focus.Web.Code
|
||||
@@ -27,6 +28,15 @@ namespace VAR.Focus.Web.Code
|
||||
context.Response.Write(strObject);
|
||||
}
|
||||
|
||||
public static void PrepareCacheableResponse(this HttpResponse response)
|
||||
{
|
||||
const int secondsInDay = 86400;
|
||||
response.ExpiresAbsolute = DateTime.Now.AddSeconds(secondsInDay);
|
||||
response.Expires = secondsInDay;
|
||||
response.Cache.SetCacheability(HttpCacheability.Public);
|
||||
response.Cache.SetMaxAge(new TimeSpan(0, 0, secondsInDay));
|
||||
}
|
||||
|
||||
#endregion HttpContext
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@ namespace VAR.Focus.Web.Code
|
||||
public void ProcessRequest(HttpContext context)
|
||||
{
|
||||
Bundler bundler = new Bundler(context.Server.MapPath("~/Scripts/"));
|
||||
bundler.PrepareCacheableResponse(context.Response);
|
||||
context.Response.PrepareCacheableResponse();
|
||||
bundler.WriteResponse(context.Response, "text/javascript");
|
||||
}
|
||||
|
||||
|
||||
94
VAR.Focus.Web/Code/StaticFileHelper.cs
Normal file
94
VAR.Focus.Web/Code/StaticFileHelper.cs
Normal file
@@ -0,0 +1,94 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
|
||||
namespace VAR.Focus.Web.Code
|
||||
{
|
||||
public class StaticFileHelper
|
||||
{
|
||||
private static Dictionary<string, string> _mimeTypeByExtension = new Dictionary<string, string> { {".aac", "audio/aac"},
|
||||
{".abw", "application/x-abiword"},
|
||||
{".arc", "application/octet-stream"},
|
||||
{".avi", "video/x-msvideo"},
|
||||
{".azw", "application/vnd.amazon.ebook"},
|
||||
{".bin", "application/octet-stream"},
|
||||
{".bz", "application/x-bzip"},
|
||||
{".bz2", "application/x-bzip2"},
|
||||
{".csh", "application/x-csh"},
|
||||
{".css", "text/css"},
|
||||
{".csv", "text/csv"},
|
||||
{".doc", "application/msword"},
|
||||
{".epub", "application/epub+zip"},
|
||||
{".gif", "image/gif"},
|
||||
{".htm", "text/html"},
|
||||
{".html", "text/html"},
|
||||
{".ico", "image/x-icon"},
|
||||
{".ics", "text/calendar"},
|
||||
{".jar", "application/java-archive"},
|
||||
{".jpg", "image/jpeg"},
|
||||
{".jpeg", "image/jpeg"},
|
||||
{".js", "application/javascript"},
|
||||
{".json", "application/json"},
|
||||
{".mid", "audio/midi"},
|
||||
{".midi", "audio/midi"},
|
||||
{".mpeg", "video/mpeg"},
|
||||
{".mpkg", "application/vnd.apple.installer+xml"},
|
||||
{".odp", "application/vnd.oasis.opendocument.presentation"},
|
||||
{".ods", "application/vnd.oasis.opendocument.spreadsheet"},
|
||||
{".odt", "application/vnd.oasis.opendocument.text"},
|
||||
{".oga", "audio/ogg"},
|
||||
{".ogv", "video/ogg"},
|
||||
{".ogx", "application/ogg"},
|
||||
{".png", "image/png"},
|
||||
{".pdf", "application/pdf"},
|
||||
{".ppt", "application/vnd.ms-powerpoint"},
|
||||
{".rar", "application/x-rar-compressed"},
|
||||
{".rtf", "application/rtf"},
|
||||
{".sh", "application/x-sh"},
|
||||
{".svg", "image/svg+xml"},
|
||||
{".swf", "application/x-shockwave-flash"},
|
||||
{".tar", "application/x-tar"},
|
||||
{".tiff", "image/tiff"},
|
||||
{".tif", "image/tiff"},
|
||||
{".ttf", "font/ttf"},
|
||||
{".vsd", "application/vnd.visio"},
|
||||
{".wav", "audio/x-wav"},
|
||||
{".weba", "audio/webm"},
|
||||
{".webm", "video/webm"},
|
||||
{".webp", "image/webp"},
|
||||
{".woff", "font/woff"},
|
||||
{".woff2", "font/woff2"},
|
||||
{".xhtml", "application/xhtml+xml"},
|
||||
{".xls", "application/vnd.ms-excel"},
|
||||
{".xml", "application/xml"},
|
||||
{".xul", "application/vnd.mozilla.xul+xml"},
|
||||
{".zip", "application/zip"},
|
||||
{".7z", "application/x-7z-compressed"},
|
||||
};
|
||||
|
||||
public static void ResponseStaticFile(HttpContext context, string filePath)
|
||||
{
|
||||
string extension = Path.GetExtension(filePath).ToLower();
|
||||
string contentType = null;
|
||||
if (_mimeTypeByExtension.ContainsKey(extension))
|
||||
{
|
||||
contentType = _mimeTypeByExtension[extension];
|
||||
}
|
||||
|
||||
context.Response.Clear();
|
||||
|
||||
if (string.IsNullOrEmpty(contentType) == false)
|
||||
{
|
||||
context.Response.ContentType = contentType;
|
||||
}
|
||||
context.Response.PrepareCacheableResponse();
|
||||
|
||||
context.Response.Buffer = true;
|
||||
context.Response.WriteFile(filePath);
|
||||
context.Response.Flush();
|
||||
context.Response.Close();
|
||||
context.Response.End();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@ namespace VAR.Focus.Web.Code
|
||||
public void ProcessRequest(HttpContext context)
|
||||
{
|
||||
Bundler bundler = new Bundler(context.Server.MapPath("~/Styles/"));
|
||||
bundler.PrepareCacheableResponse(context.Response);
|
||||
context.Response.PrepareCacheableResponse();
|
||||
bundler.WriteResponse(context.Response, "text/css");
|
||||
}
|
||||
|
||||
|
||||
@@ -122,11 +122,7 @@ namespace VAR.Focus.Web
|
||||
string filePath = context.Server.MapPath(string.Format("~/{0}", context.Request.FilePath));
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
context.Response.Buffer = true;
|
||||
context.Response.WriteFile(filePath);
|
||||
context.Response.Flush();
|
||||
context.Response.Close();
|
||||
context.Response.End();
|
||||
StaticFileHelper.ResponseStaticFile(context, filePath);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,6 +81,7 @@
|
||||
<ItemGroup>
|
||||
<Compile Include="Code\Bundler.cs" />
|
||||
<Compile Include="Code\ExtensionMethods.cs" />
|
||||
<Compile Include="Code\StaticFileHelper.cs" />
|
||||
<Compile Include="Code\WebSessions.cs" />
|
||||
<Compile Include="Controls\CardBoardControl.cs" />
|
||||
<Compile Include="Controls\CardBoardHandler.cs" />
|
||||
|
||||
Reference in New Issue
Block a user