当前位置:编程学习 > asp >>

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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,