Closed sevenate closed 12 years ago
Original report by sevenate (Bitbucket: sevenate, GitHub: sevenate).
Create a custom http handler for handling *.xap files and then set your caching options inside the handler:
#!c# using System; using System.IO; using System.Web; public class FileCacheHandler : IHttpHandler { public virtual void ProcessRequest(HttpContext context) { if (File.Exists(context.Request.PhysicalPath)) { DateTime lastWriteTime = File.GetLastWriteTime(filePath); DateTime? modifiedSinceHeader = GetModifiedSinceHeader(context.Request); if (modifiedSinceHeader == null || lastWriteTime > modifiedSinceHeader) { context.Response.AddFileDependency(filePath); context.Response.Cache.SetLastModifiedFromFileDependencies(); context.Response.Cache.SetCacheability(HttpCacheability.Public); context.Response.TransmitFile(filePath); context.Response.StatusCode = 200; context.Response.ContentType = "application/x-silverlight-app"; context.Response.OutputStream.Flush(); } else { context.Response.StatusCode = 304; } } } public DateTime? GetModifiedSinceHeader(HttpRequest request) { string modifiedSinceHeader = request.Headers["If-Modified-Since"]; DateTime modifiedSince; if (string.IsNullOrEmpty(modifiedSinceHeader) || modifiedSinceHeader.Length == 0 || !DateTime.TryParse(modifiedSinceHeader, out modifiedSince)) return null; return modifiedSince; } }
Original comment by sevenate (Bitbucket: sevenate, GitHub: sevenate).
See [[https://bitbucket.org/sevenate/fab/changeset/e2cf5fd84ce6|e2cf5fd84ce6]]
Original report by sevenate (Bitbucket: sevenate, GitHub: sevenate).
Create a custom http handler for handling *.xap files and then set your caching options inside the handler: