C#简单的文件依赖缓存的使用
一,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#简单的文件依赖缓存的使用的更多相关文章
- 。net 文件依赖缓存
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- asp.NetCore3.1系统自带Imemcache缓存-滑动/绝对/文件依赖的缓存使用测试
个人测试环境为:Asp.net coe 3.1 WebApi 1:封装自定义的cacheHelper帮助类,部分代码 1 public static void SetCacheByFile<T& ...
- java最简单复制文件方法,不依赖任何框架
java最简单复制文件方法 把java2.txt内容复制到java.txt中 import java.io.File; import java.io.IOException; import jav ...
- ASP.NET MVC 实现与SQLSERVER的依赖缓存
原文:ASP.NET MVC 实现与SQLSERVER的依赖缓存 本文主要是为了了解ASP.NET MVC 实现与SQLSERVER的依赖缓存的功能,针对自己对于这方面知识的学习的过程的一个记录.由于 ...
- 初遇 Asp.net MVC 数据库依赖缓存那些事儿
问题背景: 最近做一个非常简单的功能,就是使用ajax请求的方式从服务端请求一段下拉表的数据. 以前也有做过这个功能,只不过这次做这个功能的时候冒出了一个想法: 我请求的这段数据它是一段相对比较固定的 ...
- ASP.NET MVC 数据库依赖缓存
ASP.NET MVC 数据库依赖缓存 问题背景 最近做一个非常简单的功能,就是使用ajax请求的方式从服务端请求一段下拉表的数据. 以前也有做过这个功能,只不过这次做这个功能的时候冒出了一个想法 ...
- 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理
服务器文档下载zip格式 刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...
- C# 依赖缓存
使用轮询的方式 数据库: 在VS的命令里面输入 aspnet_regsql.exe -S (local) -U sa -P 123456 -d ERP_SQL -ed 上面这句是用来设置哪个服务器上的 ...
- ASP.NET MVC 数据库依赖缓存的实现
当数据库中的信息发生变化的时候,应用程序能够获取变化的通知是缓存依赖得以实现的基础.应用程序可以通过轮询获取数据变化的信息,使用轮询的话也不可能重新查一次后再和以前的数据做比较,如果这样的话如果我一个 ...
随机推荐
- RabbitMQ ——整体架构
一 .概述 从整体上讲Rabbitmq就是一个生产者消费者的模型. 我们将中间的整个broker就当做是一个消息中间件的实体就可以了. 单从这个方面上讲,生产者发送消息到broker上面,然后消费者从 ...
- tensorflow的阶、形状、数据类型
张量的阶.形状.数据类型 TensorFlow用张量这种数据结构来表示所有的数据.你可以把一个张量想象成一个n维的数组或列表.一个张量有一个静态类型和动态类型的维数.张量可以在图中的节点之间流通. 阶 ...
- Python内置函数(19)-slice
官方文档 class slice(stop) class slice(start, stop[, step]) Return a slice object representing the set o ...
- 大数据-hadoop学习记录
hadoop 创始人 DogCutting 高效,可扩展性,高容错性,价格低廉的大数据软件处理架构 主要应用于数据分析.数据实时查询.数据挖掘领域 HDFS(HadoopDistributeFileS ...
- 续上文,中的\\u00a0是怎么解释出来的
public String utf8ToUnicode(String inStr) { char[] myBuffer = inStr.toCharArray(); StringBuffer sb = ...
- reids 持久化
RDB: RDB是整个内存压缩过的Snapshot,RDB 的数据结构,可以配置符合的快照触发条件,默认如下 900s 1次修改 300s 10次修改 60s 10000 次修改 自动备份为dump ...
- C++ 从txt文本中读取map
由于存入文本文件的内容都为文本格式,所以在读取内容时需要将文本格式的内容遍历到map内存中,因此在读取时需要将文本进行切分(切分成key和value) 环境gcc #include<iostre ...
- mysql 数据库连接状态查询
查看当前数据库进程 show processlist
- python基础:4.请至少列举5个 PEP8 规范(越多越好)。
1.变量命名规则: 不能与关键字重名,必须以数字字母下划线组成,且不能以数字开头 2.导包规则: # 推荐这样写 import random import sys # 不推荐这样写 import ra ...
- Spring Transaction Propagation
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11530611.html REQUIRED behavior Spring REQUIRED behav ...