首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

HttpContext.Current.Cache与HttpRuntime.Cache

HttpContext.Current.Cache是ASP.NET中用来缓存数据的对象,它提供了对缓存数据的访问和管理。而HttpRuntime.Cache则是ASP.NET中用来缓存页面的对象,它提供了对缓存页面的访问和管理。

这两个对象的主要区别在于,HttpContext.Current.Cache是针对于单个请求的缓存,而HttpRuntime.Cache是针对于整个应用程序的缓存。也就是说,如果一个页面被多次请求,那么HttpContext.Current.Cache中的数据会被共享,而HttpRuntime.Cache中的数据则不会被共享。

另外,HttpContext.Current.Cache中的数据是依赖于Session的,也就是说,如果一个用户登录了一个应用程序,那么HttpContext.Current.Cache中的数据就会依赖于这个用户的Session。而HttpRuntime.Cache中的数据则不依赖于Session,也就是说,如果一个用户登录了一个应用程序,那么HttpRuntime.Cache中的数据对于所有用户的请求都是可用的。

在ASP.NET中,如果需要使用缓存,可以在应用程序的Global.asax文件中创建一个Cache对象,例如:

代码语言:txt
复制
protected void Application_Start()
{
    //...
    Cache cache = new Cache();
    //...
}

在这个例子中,我们创建了一个Cache对象,并为其指定了一个名称。然后,我们可以通过HttpContext.Current.Cache或HttpRuntime.Cache来访问这个缓存对象,例如:

代码语言:txt
复制
protected void Page_Load(object sender, EventArgs e)
{
    //...
    string data = HttpContext.Current.Cache["key"];
    //...
}

在这个例子中,我们通过HttpContext.Current.Cache来访问缓存对象,并获取一个名为"key"的数据。如果缓存中不存在这个数据,那么会返回一个空字符串。

总的来说,HttpContext.Current.Cache和HttpRuntime.Cache都是ASP.NET中用来缓存数据的对象,它们的主要区别在于,HttpContext.Current.Cache是针对于单个请求的缓存,而HttpRuntime.Cache是针对于整个应用程序的缓存。在使用缓存时,需要根据具体的需求选择合适的缓存对象,并注意缓存的生命周期和缓存数据的维护。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 关于WinFormWeb如何使用缓存Cach

    Cache 的绝对到期滑动到期 绝对到期:设置绝对过期时间 到了指定时间以后会失效。(类似Cookie机制) 相对到期也称滑动到期:设置相对过期时间 指定时间内无访问会失效。...(类似Session机制) HttpRuntime.CacheHttpContext.Current.Cache 为同一个对象 HttpRuntime.Cache.Add 存在相同的键会异常,返回缓存成功的对象...HttpRuntime.Cache.Insert存在相同的键会替换无返回值 HttpRuntime.Cache["key"] 使用字典的方式也可以读取和设置 HttpRuntime.Cache.Insert...AddInsert的不同 HttpRuntime.Cache.Add 存在相同的键会异常,返回缓存成功的对象。...缓存的设计主要是考虑到网络带宽可能会延缓数据的提交与回发,如果把数据保存在客户端,用户就可以直接从客户端读取数据,减少客户端服务器端的数据交互,提高程序的性能。

    1.3K10

    .Net 如何模拟会话级别的信号量,对http接口调用频率进行限制(有demo)

    按照惯性思维,我们自然会想到缓存的过期策略这种方法,但是严格来讲就HttpRuntime.Cache而言,通过缓存的过期策略来对请求进行频率的并发控制是不合适的。..."); 4 } 5 else 6 { 7 HttpRuntime.Cache["GetUserListNum"] = (int)HttpRuntime.Cache["GetUserListNum...分布式下Redis 上面介绍了一种频率限制的模型,分布式单机相比,无非就是载体不同,我们只要把这个容器的载体从程序上移植出来,来弄成一个单独的服务或者直接借用Redis也是可行的。...Redis是个基于内存的数据库,于性能而言,瓶颈在于网络 IO 上,Get一次发出一次请求相比,能不能通过一段脚本来实现大部分逻辑呢?....Net交流群, QQ群:166843154 欲望挣扎

    82420

    领悟Web设计模式

    MVC模式下的WebForm MVC模式是一个用于将用户界面逻辑业务逻辑分离开来的基础设计模式,它将数据处理、界面以及用户的行为控制分为:Model-View-Controller。...Model:负责当前应用的数据获取变更及相关的业务逻辑 View:负责显示信息 Controller:负责收集转化用户的输入 image.png View和Controller都依赖于Model,但是...但是如果相同结构的程序很多,而我们又需要做一些统一的控制,如用户身份的判断,统一的界面风格等;或者您还希望ControllerModel分离的更彻底,在Controller中不涉及到Model层的代码...也许您只是想保存部分的内容而不是想保存整个页面,那么我们回到MVC模式中的SQLHelper.cs,我对它进行了少许修改: public static DataSet GetPortal() { DataSet dataSet; if ( HttpContext.Current.Cache...= null ) { //如果数据存在于缓存中则直接取出 dataSet = ( DataSet ) HttpContext.Current.Cache["SELECT_PORTAL_CACHE"];

    1.2K50

    KeyValue之王Memcached初探:一、掀起Memcached的盖头来

    但是ASP.NET中的HttpRuntime.Cache虽然已经可以实现对页面局部进行缓存,但还是不够灵活,此时Memcached或许是你想要的。   ...我们会很惊奇的发现memcached的集群非常easy,简单得甚至只需要在客户端的配置文件中添加服务器IP端口号;换句话说,我们的应用程序只需要将数据请求给memcached客户端,在memcached...(2)MemcachedRedis的对比   ①没有必要过多的关心性能,因为二者的性能都已经足够高了。...我们可以得出一个结论:在简单的Key/Value应用场景(例如缓存),Memcached拥有更高的读写性能;而在数据持久化和数据同步场景,Redis拥有更加强大的功能和更为丰富的数据类型; 三、Memcached的安装简单操作

    47320

    基于业务对象(列表)的排序

    基于业务对象(列表)的排序 2008-3-21 作者: 张子阳 分类: 设计模式 引言 在上一篇文章 基于业务对象的筛选 中,我们讨论了如何实现Predicate(T object)委托,...筛选一样,排序也是常见且重要的操作。在对业务对象进行排序时,不能使用ObjectDataSource作为数据源,因为它只对 DataView、DataTable 和 DataSet 支持自动排序。...简单排序 - 对固定属性的默认排序 上篇文章不同,我不再说明使用拼装SQL来完成排序的方式,我们直接看基于List对象的排序。...// 获取用于排序的列表 public static List GetSortList() { List list = HttpContext.Current.Cache...public interface IComparable { int CompareTo(T other); } 这个接口只需要实现一个方法,CompareTo(),它传递要比较的对象(

    1.9K20
    领券