站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
▼
建站程序
开发
服务器
办公软件
开发教程
▼
服务器教程
软件使用教程
运营教程
热门电子书
▼
CSS教程
WordPress教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
热点词条
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
缓存
”(章节)
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
==Asp.net缓存== <p style="text-indent:2em;">将常用的数据保存在内存中对asp的开发人员来说并不陌生,Session对象和Application对象提供键值对来缓存数据,Session对象保存和单个用户有关的数据,Application对象可保留和应用程序有关的数据,每个用户都可以访问。</p> <p style="text-indent:2em;">在Asp.net中,提供了专门用于缓存数据的Cache对象,它的应用范围是应用程序域。生存期是和应用程序紧密相关的,每当应用程序启动的时候就重新创建Cache对象。它域Application对象的主要区别就是提供了专门用于缓存管理的特性,比如依赖和过期策略。</p> <p style="text-indent:2em;">你可以使用Cache对象和它的属性来实现高级的缓存功能,同时可以利用Asp.net Cache来对客户端输出的响应内容进行缓存。关于Asp.net中的缓存技术,有以下内容要介绍:</p> === 编程缓存Programmatic Caching === <p style="text-indent:2em;">Cache对象定义在System.Web.Caching命名空间,可以使用HttpContext类的Cache属性或Page对象的Cache属性来得到Cache的引用,Cache对象除了存储键值对以外,还可以存储.net框架的对象。下面介绍相应的依赖和过期策略。</p> ===依赖和过期策略 === <p style="text-indent:2em;">当向缓存中加数据时,可以指定它的依赖关系来实现在某些情况下强制移除它。可用的方案包括以下几种:</p> :1.文件依赖(File Dependency)——当硬盘上的某个(某些)文件更改时,强制移除缓存数据; 如: :CacheDependency cDependency = new :CacheDependency(Server.MapPath("authors.[[XML]]")); :Cache.Insert("CachedItem", item, cDependency); :2.键值依赖(Key Dependency)——指定缓存中的某个数据项更改时移除。如: :// Create a cache entry. :Cache["key1"] = "Value 1"; :// Make key2 dependent on key1. :String[] dependencyKey = new String[1]; :dependencyKey[0] = "key1"; :CacheDependency dependency = new CacheDependency(null, dependencyKey); :Cache.Insert("key2", "Value 2", dependency); :3.基于时间的过期策略——按照预先定义的时间策略来使数据失效,可以是[[绝对时间]](如某个日期的18:00)也可以是相对现在的相对时间。如: :/// Absolute expiration :Cache.Insert("CachedItem", item, null, DateTime.Now.AddSeconds(5),Cache.NoSlidingExpiration); :/// Sliding expiration :Cache.Insert("CachedItem", item, null, Cache.NoAbsoluteExpiration, :TimeSpan.FromSeconds(5)); <p style="text-indent:2em;">使用太短和太长的过期时间都不行,不是造成用不上的缓存数据,就是缓存了陈旧的数据并加重了缓存负担,所以可以使用高并发的测试来决定过期时间的最佳值。</p> '''对缓存项使用[[优先级]] ''' <p style="text-indent:2em;">当运行应用程序的服务器内存不足时,会自动清除缓存中的数据,称为“清除scavenging”。此时,Cache对象根据缓存项的优先级来决定先移除哪些[[缓存数据]],你可以在代码中指定缓存项的优先级。参看MSDN中“CacheItemPriority 枚举”,如:</p> :Cache.Insert("DSN", connectionString, null, d, t, CacheItemPriority.High, onRemove); '''刷新数据(清除缓存) ''' <p style="text-indent:2em;">没有直接的方法来刷新Asp.net的输出缓存,但是有替代方法(设置所有数据失效),比如:Response.Cache.SetExpires(DateTime.Now) <p style="text-indent:2em;">这可以清除缓存,但页面上并不立刻体现出来,直到最初的缓存期结束,比如:<%@ OutputCache Duration="10" VaryByParam="none" %>指令指定的缓存只会在10秒后才清除。通常并不需要清除所有缓存项,你只要重新加载数据更新缓存就够了。</p> '''输出缓存(Output Cache) ''' <p style="text-indent:2em;">Page Output Caching将对页面请求的响应放入缓存中,后续对此页面的请求将直接从缓存中得到信息而不是重建此页面。可以通过添加Page指令(高级别,声明实现)来实现,也可以使用HTTPCachePolicy类来实现(低级别,程序实现)。本指南不打算介绍技术细节,只给出如何更好使用的指南和最佳实践。有四方面的内容:</p> #决定缓存的内容 # 缓存动态页面 #控制缓存的位置 # 配置页面输出缓存 ===页面片断缓存=== :有时候缓存整个页面并不灵活,同时内存的发但也比较大,这时候应考虑片断缓存。页面片断缓存适合以下类型的数据: *创建开销很大的页面片断(控件); *包含静态数据的页面片断; *可被多个用户使用的页面片断; *多个页面共享的页面片断(如公用菜单条) '''以下是缓存部分页面的例子: ''' :// Partial caching for 120 seconds :[System.Web.UI.PartialCaching(120)] :public class WebUserControl : System.Web.UI.UserControl :{ :// Your Web control code :}
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)