|
|
- @using System.Web.Caching;
- @{
- Page.Title = Blog.Title;
- Layout = "~/themes/" + Blog.Theme + "/_Layout.cshtml";
- DateTime lastModified = DateTime.MinValue;
-
- if (string.IsNullOrEmpty(Blog.CurrentSlug))
- {
- Page.ShowPaging = true;
- var posts = Blog.GetPosts(Blog.PostsPerPage);
-
- foreach (var post in posts)
- {
- @RenderPage("~/themes/" + Blog.Theme + "/Post.cshtml", post);
- }
-
- if (posts.Any())
- {
- lastModified = posts.Max(p => p.LastModified);
- }
-
- Response.AddCacheItemDependency("posts");
- Response.Cache.VaryByParams["page"] = true;
- Response.Cache.VaryByParams["category"] = true;
- }
- else
- {
- Post post = Blog.IsNewPost ? new Post() : Blog.CurrentPost;
-
- if (Blog.IsNewPost && !User.Identity.IsAuthenticated)
- {
- FormsAuthentication.RedirectToLoginPage();
- }
-
- if (post == null) { throw new HttpException(404, "Post not found"); }
-
- Page.Title = post.Title;
- lastModified = post.LastModified;
-
- Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/posts/" + post.ID + ".xml")));
-
- @RenderPage("~/themes/" + Blog.Theme + "/Post.cshtml", post)
- }
-
- if (!Request.IsLocal)
- {
- Response.Cache.AppendCacheExtension("max-age=0");
- Response.Cache.SetValidUntilExpires(true);
- Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);
- Response.Cache.SetVaryByCustom("authenticated");
- Response.Cache.VaryByParams["slug"] = true;
- Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/")));
- Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/scripts")));
- Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/css")));
- Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/themes/" + Blog.Theme)));
-
- Blog.SetConditionalGetHeaders(lastModified, Context);
- }
- }
|