private static bool IsSourceModified(HttpRequest request) { bool dateModified = false; string requestIfModifiedSinceHeader = request.Headers["If-Modified-Since"] ?? string.Empty; DateTime requestIfModifiedSince; DateTime.TryParse(requestIfModifiedSinceHeader, out requestIfModifiedSince); DateTime responseLastModified = new DateTime(ResourceHandler.GetAssemblyTime(typeof(ResourceHandler).Assembly)).ToUniversalTime(); if (requestIfModifiedSince != DateTime.MinValue && responseLastModified != DateTime.MinValue) { requestIfModifiedSince = requestIfModifiedSince.ToUniversalTime(); if (responseLastModified > requestIfModifiedSince) { TimeSpan diff = responseLastModified - requestIfModifiedSince; if (diff > TimeSpan.FromSeconds(1)) { dateModified = true; } } } else { dateModified = true; } return(dateModified); }
private void SetResponseCache(HttpContext context) { HttpCachePolicy cache = context.Response.Cache; DateTime modifiedDate = new DateTime(ResourceHandler.GetAssemblyTime(typeof(ResourceHandler).Assembly)).ToUniversalTime(); DateTime nowDate = DateTime.Now.ToUniversalTime().AddSeconds(-1); if (modifiedDate > nowDate) { modifiedDate = nowDate; } cache.SetLastModified(modifiedDate); cache.SetOmitVaryStar(true); cache.SetVaryByCustom("v"); cache.SetExpires(DateTime.UtcNow.AddDays(365)); cache.SetMaxAge(TimeSpan.FromDays(365)); cache.SetValidUntilExpires(true); cache.SetRevalidation(HttpCacheRevalidation.AllCaches); cache.SetCacheability(HttpCacheability.Public); cache.SetLastModifiedFromFileDependencies(); }