文件依赖缓存的运用

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO ; using System.Xml ; using System.Web.Caching ; using System.Threading ; namespace BasicCompent {     public    class PageCssProvider     {         static System.Web.HttpContext cxt;         static ManualResetEvent mr = new ManualResetEvent(true);         static ManualResetEvent mw = new ManualResetEvent(true);         static XmlDocument _doc;         private PageCssProvider()         {         }         static PageCssProvider()         {             cxt = System.Web.HttpContext.Current;             Init();         }         public static string PageCss(string pageName)         {                             if (string.IsNullOrEmpty(pageName))                     return string.Empty;                 string xmpath = string.Format("/pages/page[@name=/"{0}/"]", pageName);                            mw.WaitOne();                 mr.Reset();                 try                 {                     if(_doc ==null )                         return string.Empty ;                     XmlNode   node = _doc.SelectSingleNode(xmpath);                     return node.InnerXml;                 }                 finally                 {                     mr.Set();                 }                     }         static void Init()         {             mr.WaitOne();             mw.Reset();             try             {                 string realPath = cxt.Server.MapPath("~/Css.xml");                 if (!File.Exists(realPath))                     return;                 _doc = new XmlDocument();                 _doc.Load(realPath);                 CacheDependency cd = new CacheDependency(realPath);                 cxt.Cache.Insert("pageCss", realPath, cd, Cache.NoAbsoluteExpiration,                     Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, reportRemovedCallback);             }             finally             {                 mw.Set();             }         }         static void reportRemovedCallback(String key, object value, CacheItemRemovedReason reason)         {             Init();         }                  } }

posted on 2008-07-08 11:16  老代哥哥  阅读(140)  评论(0编辑  收藏  举报

导航