日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

文件和缓存项目依赖

發布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文件和缓存项目依赖 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文件和緩存項目依賴

?????? 要創建緩存依賴,你需要創建一個 CacheDependency 對象并在添加依賴的緩存項目時使用它。例如,下面的代碼創建一個緩存項目,它在一個 XML 文件被修改、刪除、覆蓋時自動從緩存中移除:

CacheDependency prodDependency = new CacheDependency(Server.MapPath("ProductList.xml"));
Cache.Insert("ProductInfo", prodInfo, prodDependency);

?CacheDependency 還有一個構造函數,接收一個文件名的數組和一個緩存鍵值的數組。下面這個示例使用該構造函數創建了一個依賴于緩存中其他項目的項目:

Cache["Key1"] = "Cache Item 1";string[] dependencyKey = new string[1];
dependencyKey[0] = "Key2";
CacheDependency dependency = new CacheDependency(null, dependencyKey);Cache.Insert("Key2", "Cache Item 2", dependency);

? ? ? ?此后,當 Cache["Key1"] 發生變化或從緩存中移除時,Cache["Key2"] 就會被自動移除。

聚合依賴

?????? 有時你可能會希望組合多個依賴創建一個項目,它依賴多個其他資源。例如,它在 3 個文件中的任意一個發生變化時就無效等等。

?????? 使用 AggregateCacheDependency 可以包含任意多個 CacheDependency 對象。你所需要做的只是使用 AggregateCacheDependency .Add()方法提供一個 CacheDependency 對象的數組。

?????? 下面這個示例使一個緩存項目依賴于兩個文件:

CacheDependency dep1 = new CacheDependency(Server.MapPath("ProductList1.xml"));
CacheDependency dep2 = new CacheDependency(Server.MapPath("ProductList2.xml"));CacheDependency[] deps = new CacheDependency[] { dep1, dep2 };
AggregateCacheDependency aggregateDep = new AggregateCacheDependency();
aggregateDep.Add(deps);Cache.Insert("ProductInfo", prodInfo, aggregateDep);

?

如何設置HttpRuntime.Cache的有效期

//添加到文件依賴緩存
System.Web.Caching.CacheDependency dep = new System.Web.Caching.CacheDependency(xmlname);
HttpRuntime.Cache.Insert(cachename, data, dep);//添加絕對過期時間
DateTime absExpireTime = DateTime.Now.AddSeconds(3600);
HttpRuntime.Cache.Insert(cacheName, data, null, absExpireTime, TimeSpan.Zero);

?

個人應用:

    public class AppReturnMsg{public GloablMsg msg;public GloablMsg Msg{get{if (msg == null || msg.MsgType <= 0){GlobalMsgList msglist;string fileFullName = AppDomain.CurrentDomain.BaseDirectory + "/App_Data/" + "GlobalMsgConfig.xml";object obj = HttpRuntime.Cache["GlobalMsg"];if (obj == null){msglist = XmlHelper.XmlToObj<GlobalMsgList>(fileFullName); //從XML獲取數據//緩存文件內容HttpRuntime.Cache.Insert("GlobalMsg", msglist, new System.Web.Caching.CacheDependency(fileFullName));}else{msglist = obj as GlobalMsgList;}if (msglist != null){string path = "";if (HttpContext.Current != null){path = HttpContext.Current.Request.Path;   //gateway/QueryReCategoryBrands
                        }msg = msglist.MsgItem.FirstOrDefault(t => String.Equals(t.Path, path, StringComparison.CurrentCultureIgnoreCase));}}return msg;}set { msg = value; }}}[XmlRoot("GlobalMsg")]public class GlobalMsgList{[XmlElement("MsgItem")]public List<GloablMsg> MsgItem { get; set; }}[DataContract]  [Serializable]public class GloablMsg{[IgnoreDataMember][XmlElement("Path")]public string Path { get; set; }[DataMember]  [XmlElement("MsgType")]public int MsgType { get; set; }[DataMember]  [XmlElement("Redirect")]public string Redirect { get; set; }[DataMember]  [XmlElement("Content")]public string Content { get; set; }[DataMember]  [XmlElement("Title")]public string Title { get; set; }}
<?xml version="1.0" encoding="utf-8" ?>
<GlobalMsg><MsgItem><Path>/json/reply/Test</Path>  <MsgType>1</MsgType><!--1頭部廣告條,2確認彈窗,3提示彈窗,4自動消失,5Picture,6寶貝幣,10強制跳轉--><Redirect>www.baidu.com</Redirect><Content>測試內容關于廣告內容1</Content><Title>測試配置文件第一個</Title></MsgItem><MsgItem><Path>/gateway/QueryReCategoryBrands</Path><MsgType>1</MsgType><Redirect>www.baidu.com</Redirect><Content>測試內容關于廣告內容2</Content><Title>測試配置文件第一個</Title></MsgItem>
</GlobalMsg>

?

?

        [System.Web.Mvc.HttpGet]public JsonResult GetMenu(){List<BigMenu> menuList = new List<BigMenu>();try{string filePath = Path.Combine(HttpContext.Server.MapPath("~/"), Menufilename);object obj = HttpRuntime.Cache["MenuList"];if (obj == null){XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(filePath);XmlNode NarBarXmlNode = xmlDoc.SelectSingleNode("//NavBar");XmlNodeList xmlNodeList = NarBarXmlNode.ChildNodes;if (xmlNodeList != null && xmlNodeList.Count > 0){foreach (XmlNode xmlnode in xmlNodeList){string itemtext = xmlnode.Attributes["Name"].Value; //一級菜單int count = 0;//獲取當前結點的子節點//Dictionary<string, string> smallmenu = new Dictionary<string, string>();List<SmallMenu> smMunuList = new List<SmallMenu>();foreach (XmlNode childxmlnode in xmlnode.ChildNodes){string childitemtext = childxmlnode.Attributes["Name"].Value; //二級菜單頁面名稱string childitemsrc = childxmlnode.Attributes["Src"].Value; //二級菜單頁面跳轉路徑if (FormUser.UserInfo.ArrRightList.Contains(childitemtext)) //判斷是否包含權限
                                {SmallMenu smMenu = new SmallMenu();smMenu.SmallMenuName = childitemtext.Replace("PSS", "");smMenu.MenuSrc = childitemsrc;smMunuList.Add(smMenu);count++;}}if (count > 0){BigMenu bgMenu = new BigMenu();bgMenu.BigMenuName = itemtext;bgMenu.smobj = smMunuList;menuList.Add(bgMenu);}}}//緩存文件內容HttpRuntime.Cache.Insert("MenuList", menuList, new System.Web.Caching.CacheDependency(filePath));}else{menuList = obj as List<BigMenu>;}return Json(new{Status = "OK",Menu = menuList//(new System.Web.Script.Serialization.JavaScriptSerializer()).Serialize(menuList)
                }, JsonRequestBehavior.AllowGet);}catch{return Json(new{Status = "Fail",Menu = menuList//(new System.Web.Script.Serialization.JavaScriptSerializer()).Serialize(menuList)
                }, JsonRequestBehavior.AllowGet);}}

?

轉載于:https://www.cnblogs.com/shy1766IT/p/5464059.html

總結

以上是生活随笔為你收集整理的文件和缓存项目依赖的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。