文件依赖缓存的运用

来源:互联网 发布:四虎影库软件app 编辑:程序博客网 时间:2024/04/29 17:46
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();        }                 }}
原创粉丝点击