ASP.NET中各种缓存技术的特点及使用场景
对于一些不经常改变却经常被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中各种缓存技术的特点及使用场景的更多相关文章
- PHP开发中的缓存技术汇总
在PHP开发中,出于对网站服务器负载的考虑,往往需要对页面.数据等内容进行缓存处理,下面就来看看,在PHP开发中有哪些缓存方式吧. 1.页面部分缓存该种方式,是将一个页面中不经常变的部分进行静态缓存, ...
- java中的缓存技术该如何实现
1缓存为什么要存在?2缓存可以存在于什么地方?3缓存有哪些属性?4缓存介质? 搞清楚这4个问题,那么我们就可以随意的通过应用的场景来判断使用何种缓存了. 1. 缓存为什么要存在?一 般情况下,一个网站 ...
- python中的缓存技术
python缓存技术 def console(a,b): print('进入函数') return (a,b) print(console(3,'a')) print(console(2,'b')) ...
- 一文带你理解TDengine中的缓存技术
作者 | 王明明,涛思数据软件工程师 小 T 导读:在计算机系统中,缓存是一种常用的技术,既有硬件缓存,比如我们经常听到的 CPU L2 高速缓存,也有软件缓存,比如很多系统里把 Redis 当做数据 ...
- ASP.NET中的缓存机制
ASP.NET 提供一个功能完整的缓存引擎,页面可使用该引擎通过 HTTP 请求存储和检索任意对象.缓存的生存期与应用程序的生存期相同,也就是说,当应用程序重新启动时,将重新创建缓存. 将数据添加到缓 ...
- Asp.net中使用缓存(cache)
做了一个时间优化的项目,目的就是缩短程序过程中的时间花费,最后发现了asp.net和asp.net core 中都有缓存工具来进行缓存,以加快访问速度. 找了官方demo来进行分析: ObjectCa ...
- Asp.net中全局缓存的几种方式
public class StaticCacheTest { private static IDictionary<string, object> _dic; private static ...
- 批量删除ASP.NET中的缓存(cache)
IDictionaryEnumerator em = HttpContext.Current.Cache.GetEnumerator(); while (em.MoveNext()) { ...
- .Net环境下的缓存技术介绍 (转)
.Net环境下的缓存技术介绍 (转) 摘要:介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1 概念 ...
随机推荐
- DataTable的Select()方法
DataRow[] partno = dtPack.Select("PK_SOHEAD = " + pk_sohead + " AND PART_NO = '" ...
- 数组、ArrayList、HashTable
相同点:都可以存储一组数据 不同点: 1)数组,必须要先分配空间,存储数据固定 2)ArrayList,存储数据可以自由扩展 3)HashTable与ArrayList一样,但是它是有意义的,键值对形 ...
- "国学"能带给孩子什么?
您是家长吗? 是!就点标题下方蓝色的 静心坊 三字,然后点关注!您就可以享受到我们为您提供的最新教育信息. 读国学,除大量识字之外,还能带给孩子什么呢? 男孩子读国学,国学能教会他做一个正直 ...
- 优动漫PAINT核心功能介绍
优动漫PAINT是一款功能强大的动漫绘图软件,适用于个人和专业团队创作,分为个人版和EX版.搭载了绘制漫画和插画所需的所有功能——丰富的笔工具.超强的笔压感应和手颤修正功能,可分别满足画师对于插画.漫 ...
- JS 从100里面随机取10个数比大小
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- [51nod1074] 约瑟夫问题 V2
毫无思路,Orz了一下大佬的思路%%%. 大概就是因为k比n小的多,我们知道约瑟夫环有个公式是fn=(fn-1+k) mod n 可以改一下,改成fn+p=(fn+pk) mod (n+p) 但是这样 ...
- assound.conf
pcm.!dmix {type dmixipc_key 5678293ipc_key_add_uid yesslave {pcm "hw:0,0"period_time 0peri ...
- ubuntu的LAMP环境搭建
服务器的搭建,经典组合:LAMP(Linux+Apache+Mysql+PHP) unbuntu源更新:sudo apt update 更新:sudo apt upgrade 安装Apache:sud ...
- CF787A - The Monster
/* CF787A - The Monster http://codeforces.com/contest/787/problem/A 数学 扩展欧几里得 注意x或y为0的时候要特判 并且结果要大于b ...
- PatentTips - Optimizing power usage by factoring processor architectural events to PMU
BACKGROUND Processor power consumption has become a major issue in recent years. The current trend o ...