对于一些不经常改变却经常被request的数据,我们喜欢将它们缓存在内存。这样用户请求时先到缓存中去取,如果缓存中没有,再去数据库拿,提高响应速度。缓存一般实现在BLL,这样可以与DAL分离,更换数据库源时也无需改变缓存逻辑。

 ASP.NET中常用的缓存技术有以下几种:

  1. A per request cache using HttpContext.Items 

  2. A session cache using HttpContext.Session 

   3. An application cache using HttpContext.Cache or HttpRuntime.Cache

  HttpContext.Current.Items的生命周期极短,尽在一次request中有效,当此次request结束后,Items被清空。所以可以用在HttpModel和HttpHandler之间通信上。关于HttpModel和HttpHandler的概念可以参看:http://www.cnblogs.com/stwyhm/archive/2006/08/09/471729.html

  HttpContext.Current.Session在一次会话总有效,JSP中Session的生命周期时间可以在web.xml配置. 默认30分钟 ,也有很多人说Session的生命周期即浏览器打开到关闭的时间。所以,session最适合用来保存用户登录名和密码等。

  HttpContxt.Current.Cache和HttpRuntime.Cache生命周期最长,和整个应用的生命周期等长。可以用来存一些公共数据,比如上文中提到的这种应用场景就适合使用。

  值得注意的一点是HttpContext.Current.Cache 和 HttpRuntime.Cache 的区别,以下英文摘自某网站:

  "HttpRuntime.Cache is the recommended technique.



  Calling the HttpContext does some additional look-ups as it has to resolve the current context relative to the running thread.

  I use HttpContext.Current in a lot of the code I write too; but touching it as little as possible. Rather than calling HttpContext.Current repeatedly
it's best to hang onto a reference and pass it around (when possible)."

ASP.NET中各种缓存技术的特点及使用场景的更多相关文章

  1. PHP开发中的缓存技术汇总

    在PHP开发中,出于对网站服务器负载的考虑,往往需要对页面.数据等内容进行缓存处理,下面就来看看,在PHP开发中有哪些缓存方式吧. 1.页面部分缓存该种方式,是将一个页面中不经常变的部分进行静态缓存, ...

  2. java中的缓存技术该如何实现

    1缓存为什么要存在?2缓存可以存在于什么地方?3缓存有哪些属性?4缓存介质? 搞清楚这4个问题,那么我们就可以随意的通过应用的场景来判断使用何种缓存了. 1. 缓存为什么要存在?一 般情况下,一个网站 ...

  3. python中的缓存技术

    python缓存技术 def console(a,b): print('进入函数') return (a,b) print(console(3,'a')) print(console(2,'b')) ...

  4. 一文带你理解TDengine中的缓存技术

    作者 | 王明明,涛思数据软件工程师 小 T 导读:在计算机系统中,缓存是一种常用的技术,既有硬件缓存,比如我们经常听到的 CPU L2 高速缓存,也有软件缓存,比如很多系统里把 Redis 当做数据 ...

  5. ASP.NET中的缓存机制

    ASP.NET 提供一个功能完整的缓存引擎,页面可使用该引擎通过 HTTP 请求存储和检索任意对象.缓存的生存期与应用程序的生存期相同,也就是说,当应用程序重新启动时,将重新创建缓存. 将数据添加到缓 ...

  6. Asp.net中使用缓存(cache)

    做了一个时间优化的项目,目的就是缩短程序过程中的时间花费,最后发现了asp.net和asp.net core 中都有缓存工具来进行缓存,以加快访问速度. 找了官方demo来进行分析: ObjectCa ...

  7. Asp.net中全局缓存的几种方式

    public class StaticCacheTest { private static IDictionary<string, object> _dic; private static ...

  8. 批量删除ASP.NET中的缓存(cache)

    IDictionaryEnumerator em = HttpContext.Current.Cache.GetEnumerator(); while (em.MoveNext())        { ...

  9. .Net环境下的缓存技术介绍 (转)

    .Net环境下的缓存技术介绍 (转) 摘要:介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1         概念 ...

随机推荐

  1. 【领略RxSwift源码】- 变换操作(Operators)

    在上一篇中,我们分析了在RxSwift中的整个订阅流程.在开讲变换操作之前,首先要弄清楚Sink的概念,不清楚的同学可以翻看上一篇的分析.简单的来说,在每一次订阅操作之前都会进行一次Sink对流的操作 ...

  2. UNIX网络编程(转载)

    1.1 客户端程序和服务端程序 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 网络程序是先有服务器程序启动,等待客户端的程序运行并建立连接.一般的来说是服务端 ...

  3. 优动漫PAINT漫画和插画方面软件特色

    优动漫PAINT也就是我们常说的clip studio paint(CSP)的中文版本,它是一款功能强大的漫画.插画绘制软件,它搭载了绘制漫画和插画所需的所有功能,包括丰富的笔工具.超强的笔压感应和手 ...

  4. 如何使用Matlab做数字信号处理的仿真1

    例如 第三版数字信号处理P51 -1.14习题时域离散信号的相关性研究x(n)=Asin(ωn)+u(n),其中ω=π/16,u(n)是白噪声,现要求 ⑴.产生均值为0,功率P=0.1的均匀分布白噪声 ...

  5. java 常用API 包装 数组的覆盖和遍历

    package com.oracel.demo01; public class Sz { public static void main(String[] args) { // TODO Auto-g ...

  6. php 的多进程

    php的多进程处理依赖于pcntl扩展,通过pcntl_fork创建子进程来进行并行处理 例子1: <?php $pid = pcntl_fork(); if($pid == -1) { //错 ...

  7. 洛谷P3628 [APIO2010]特别行动队 斜率优化

    裸题,注意队列下标不要写错 Code: #include<cstdio> #include<algorithm> #include<cmath> using nam ...

  8. sublimText3 快捷键大全(转)

    Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中并更改所有相同的变量名.函数名等. ...

  9. Nginx负载均衡health_check分析

    在Nginx负载均衡中,我们很难保证说每一台应用服务器都能一直正常的运行下去.但是我们可以通过设置Nginx来检测这些应用服务器,检测这些服务器当中不能访问的. Nginx的检测方式分为两种,一种是被 ...

  10. 新人--使用layui做的表格,复杂表头,固定列,操作单元格数据计算,点击查询重载表格,可以选择部分或者全部导出

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...