一,FileCache.aspx页面

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileCache.aspx.cs" Inherits="WebApplication1.FileCache" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" />
</div>
</form>
</body>
</html>

二,FileCache.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Linq; namespace WebApplication1
{
public partial class FileCache : System.Web.UI.Page
{
/// <summary>
/// 获取当前应用程序指定CacheKey的Cache对象值
/// </summary>
/// <param name="cacheKey">索引键值</param>
/// <returns>返回缓存对象</returns>
public static object GetCache(string cacheKey)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
return objCache[cacheKey];
} /// <summary>
/// 设置以缓存依赖的方式缓存数据
/// </summary>
/// <param name="cacheKey">索引键值</param>
/// <param name="objObject">缓存对象</param>
/// <param name="dep"></param>
public static void SetCache(string cacheKey, object objObject, System.Web.Caching.CacheDependency caDep)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Insert(
cacheKey,
objObject,
caDep,
System.Web.Caching.Cache.NoAbsoluteExpiration, //从不过期
System.Web.Caching.Cache.NoSlidingExpiration, //禁用可调过期
System.Web.Caching.CacheItemPriority.Default,
null);
}
protected void Page_Load(object sender, EventArgs e)
{
Dictionary<string, string> dic = new Dictionary<string, string>();
string CacheKey = "CacheKey";
Dictionary<string, string> objModel = GetCache(CacheKey) as Dictionary<string, string>;//从缓存中获取
if (objModel == null) //缓存里没有
{
string path = Server.MapPath("SX.xml"); //读取服务器路径下的XML文件,生成Dictionary储存到缓存,并依赖这个文件
XElement root = XElement.Load(path); foreach (var item in root.Elements("Settings").Elements("row"))
{
var xAttribute = item.Attribute("Name");
if (xAttribute != null && !dic.ContainsKey(xAttribute.Value))
{
dic.Add(xAttribute.Value, item.Attribute("Value").Value);
}
}
System.Web.Caching.CacheDependency dep = new System.Web.Caching.CacheDependency(path);
SetCache(CacheKey, dic, dep);//写入缓存,并依赖SX.xml文件 }
objModel = GetCache(CacheKey) as Dictionary<string, string>;
if (objModel != null) Label1.Text = objModel["V"]; //当更改服务器的SX.xml的Name=V的value时,缓存会自动更新值
}
}
}

三,服务器下的SX.xml

<?xml version="1.0" encoding="utf-8"?>
<root>
<Settings>
<row Name="V" Value=""></row>
<row Name="V1" Value=""></row>
<row Name="V2" Value=""></row>
</Settings>
</root>

设计思路是:将XML文件读取,储存到Dictionary<string,string>中,并同时将这个Dictionary储存到缓存并依赖XML文件,当XML文件发生变化是,缓存会自动更新改变的值

C#简单的文件依赖缓存的使用的更多相关文章

  1. 。net 文件依赖缓存

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  2. asp.NetCore3.1系统自带Imemcache缓存-滑动/绝对/文件依赖的缓存使用测试

    个人测试环境为:Asp.net coe 3.1 WebApi 1:封装自定义的cacheHelper帮助类,部分代码 1 public static void SetCacheByFile<T& ...

  3. java最简单复制文件方法,不依赖任何框架

    java最简单复制文件方法   把java2.txt内容复制到java.txt中 import java.io.File; import java.io.IOException; import jav ...

  4. ASP.NET MVC 实现与SQLSERVER的依赖缓存

    原文:ASP.NET MVC 实现与SQLSERVER的依赖缓存 本文主要是为了了解ASP.NET MVC 实现与SQLSERVER的依赖缓存的功能,针对自己对于这方面知识的学习的过程的一个记录.由于 ...

  5. 初遇 Asp.net MVC 数据库依赖缓存那些事儿

    问题背景: 最近做一个非常简单的功能,就是使用ajax请求的方式从服务端请求一段下拉表的数据. 以前也有做过这个功能,只不过这次做这个功能的时候冒出了一个想法: 我请求的这段数据它是一段相对比较固定的 ...

  6. ASP.NET MVC 数据库依赖缓存

    ASP.NET MVC 数据库依赖缓存   问题背景 最近做一个非常简单的功能,就是使用ajax请求的方式从服务端请求一段下拉表的数据. 以前也有做过这个功能,只不过这次做这个功能的时候冒出了一个想法 ...

  7. 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理

    服务器文档下载zip格式   刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...

  8. C# 依赖缓存

    使用轮询的方式 数据库: 在VS的命令里面输入 aspnet_regsql.exe -S (local) -U sa -P 123456 -d ERP_SQL -ed 上面这句是用来设置哪个服务器上的 ...

  9. ASP.NET MVC 数据库依赖缓存的实现

    当数据库中的信息发生变化的时候,应用程序能够获取变化的通知是缓存依赖得以实现的基础.应用程序可以通过轮询获取数据变化的信息,使用轮询的话也不可能重新查一次后再和以前的数据做比较,如果这样的话如果我一个 ...

随机推荐

  1. CSS中quotes属性以及content的open(close)-quotes属性

    定义和用法 quotes 属性设置嵌套引用(embedded quotation)的引号类型. 可能的值 值 描述 none 规定 "content" 属性的 "open ...

  2. JSTL 使用 c:forEach 累加变量值

    <body> <%    int x = 1;    int y = 2;    request.setAttribute("x", x);    request ...

  3. RabbitMQ ——简单队列

    一 .概述 我们不从开始就讲述基本的概念,尤其是在Rabbitmq之中有些概念确实比较难以理解,我们首先做的就是将光放提供的消息模型 进行实现,然后再总结一下Rabbitmq之中的基本概念. 二 .基 ...

  4. swiper轮播图设置每组显示的个数及自定义slide宽度

    一.html演示代码: <div class="swiper-container"> <div class="swiper-wrapper"& ...

  5. valueOf()对象返回值

    valueOf()对象返回值 Array数组的元素被转换为字符串,这些字符串由逗号分隔,连接在一起.其操作与 Array.toString 和 Array.join 方法相同. Boolean为Boo ...

  6. Java Predicate

    Predicate 接口说明 /* * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. * O ...

  7. 基于Xilinx Zynq的计算处理平台

    基于Xilinx Zynq XC7Z045 FFG 900的高性能计算模块 本模块基于Xilinx公司的FPGA XC7Z045 FFG 9000 芯片, 支持64bitDDR3, 容量2GByte: ...

  8. 一、表单和ajax中的post请求&&后台获取数据方法

    一.表单和ajax中的post请求&&后台获取数据方法 最近要做后台数据接收,因为前台传来的数据太过于混乱,所以总结了一下前台数据post请求方法,顺便写了下相对应的后台接收方法. 前 ...

  9. python常用函数 S

    slice(int,int) 切片,可以为切片命名增加可读性. 例子: sorted(iterable, key) 排序,支持传入参数,例如通过itemgetter传入参数(itemgetter可以传 ...

  10. k8s阅读笔记1-云原生

    前言 阅读书籍地址https://rootsongjc.gitbooks.io/kubernetes-handbook/content/cloud-native/cloud-native-defini ...