asp.net mvc3的静态化实现
静态化处理,可以大大提高客户的访问浏览速度,提高用户体验,同时也降低了服务器本身的压力。在asp.net mvc3中,可以相对容易地处理静态化问题,不用过多考虑静态网页的同步,生成等等问题。我提供这个方法很简单,就需要在需要静态化处理的Controller或Action上加一个Attribute就可以。下面是我写的一个生成静态文件的ActionFilterAttribute。
1 using System;
2 using System.IO;
3 using System.Text;
4 using System.Web;
5 using System.Web.Mvc;
6 using NLog;
7
8 /// <summary>
9 /// 生成静态文件
10 /// </summary>
11 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
12 public class GenerateStaticFileAttribute : ActionFilterAttribute
13 {
14 #region 私有属性
15
16 private static readonly Logger logger = LogManager.GetCurrentClassLogger();
17
18 #endregion
19
20 #region 公共属性
21
22 /// <summary>
23 /// 过期时间,以小时为单位
24 /// </summary>
25 public int Expiration { get; set; }
26
27 /// <summary>
28 /// 文件后缀名
29 /// </summary>
30 public string Suffix { get; set; }
31
32 /// <summary>
33 /// 缓存目录
34 /// </summary>
35 public string CacheDirectory { get; set; }
36
37 /// <summary>
38 /// 指定生成的文件名
39 /// </summary>
40 public string FileName { get; set; }
41
42 #endregion
43
44 #region 构造函数
45
46 /// <summary>
47 /// 默认构造函数
48 /// </summary>
49 public GenerateStaticFileAttribute()
50 {
51 Expiration = 1;
52 CacheDirectory = AppDomain.CurrentDomain.BaseDirectory;
53 }
54
55 #endregion
56
57 #region 方法
58
59 public override void OnResultExecuted(ResultExecutedContext filterContext)
60 {
61 var fileInfo = GetCacheFileInfo(filterContext);
62
63 if ((fileInfo.Exists && fileInfo.CreationTime.AddHours(Expiration) < DateTime.Now) || !fileInfo.Exists)
64 {
65 var deleted = false;
66
67 try
68 {
69 if (fileInfo.Exists)
70 {
71 fileInfo.Delete();
72 }
73
74 deleted = true;
75 }
76 catch (Exception ex)
77 {
78 logger.Error("删除文件:{0}发生异常:{1}", fileInfo.FullName, ex.StackTrace);
79 }
80
81 var created = false;
82
83 try
84 {
85 if (!fileInfo.Directory.Exists)
86 {
87 fileInfo.Directory.Create();
88 }
89
90&nb
补充:Web开发 , ASP.Net ,