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(); } } }
文件依赖缓存的运用
最新推荐文章于 2024-09-22 16:16:34 发布