误用ASP.NET中CACHE 导致网站内容无法更新
2011-10-08 17:45
344 查看
用CACHE的最初目的是想缓存一下数据,减轻一下数据库服务器的压力,2分钟查询一下数据库,将数据缓存一下。
结果我是这么写的:
Cache.Insert("ds", objDataSet, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(2));
这样写完全没有实现我的目的。这样写的含义是离最后一次访问2分钟后才过期,如果网站持续有人访问,那就永远不会过期,导致你更新的内容无法显示。
最后代码调整为以下:
Cache.Insert("ds", objDataSet, null, DateTime.Now.AddMinutes(2),System.Web.Caching.Cache.NoSlidingExpiration);
以下是该方法的详细解释。
[C#]
public void Insert(
string key,
object value,
CacheDependency dependencies,
DateTime absoluteExpiration,
TimeSpan slidingExpiration
);
参数
key
用于引用该对象的缓存键。
value
要插入缓存中的对象。
dependencies
所插入对象的文件依赖项或缓存键依赖项。当任何依赖项更改时,该对象即无效,并从缓存中移除。如果没有依赖项,则此参数包含空引用(Visual Basic 中为 Nothing)。
absoluteExpiration
所插入对象将过期并被从缓存中移除的时间。
slidingExpiration
最后一次访问所插入对象时与该对象过期时之间的时间间隔。如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将过期并被从缓存中移除。
如果 slidingExpiration 参数设置为 NoSlidingExpiration,则禁用可调整过期。如果将 slidingExpiration 参数设置为大于 Zero,则 absoluteExpiration 参数设置为 Now 加 slidingExpiration 参数中包含的值。如果在 absoluteExpiration 参数指定的时间之前从缓存请求该项,该项将再次放入缓存,并且 absoluteExpiration 将再次设置为 DateTime.Now 加 slidingExpiration 参数中包含的值。如果在 absoluteExpiration 参数中的日期以前并未从缓存中请求该项,则从缓存移除该项。
结果我是这么写的:
Cache.Insert("ds", objDataSet, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(2));
这样写完全没有实现我的目的。这样写的含义是离最后一次访问2分钟后才过期,如果网站持续有人访问,那就永远不会过期,导致你更新的内容无法显示。
最后代码调整为以下:
Cache.Insert("ds", objDataSet, null, DateTime.Now.AddMinutes(2),System.Web.Caching.Cache.NoSlidingExpiration);
以下是该方法的详细解释。
[C#]
public void Insert(
string key,
object value,
CacheDependency dependencies,
DateTime absoluteExpiration,
TimeSpan slidingExpiration
);
参数
key
用于引用该对象的缓存键。
value
要插入缓存中的对象。
dependencies
所插入对象的文件依赖项或缓存键依赖项。当任何依赖项更改时,该对象即无效,并从缓存中移除。如果没有依赖项,则此参数包含空引用(Visual Basic 中为 Nothing)。
absoluteExpiration
所插入对象将过期并被从缓存中移除的时间。
slidingExpiration
最后一次访问所插入对象时与该对象过期时之间的时间间隔。如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将过期并被从缓存中移除。
如果 slidingExpiration 参数设置为 NoSlidingExpiration,则禁用可调整过期。如果将 slidingExpiration 参数设置为大于 Zero,则 absoluteExpiration 参数设置为 Now 加 slidingExpiration 参数中包含的值。如果在 absoluteExpiration 参数指定的时间之前从缓存请求该项,该项将再次放入缓存,并且 absoluteExpiration 将再次设置为 DateTime.Now 加 slidingExpiration 参数中包含的值。如果在 absoluteExpiration 参数中的日期以前并未从缓存中请求该项,则从缓存移除该项。
相关文章推荐
- IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题
- IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题
- 关于asp.net网站发布后,使用登录控件和注册控件时出现“数据库只读,无法进行数据更新”的解决方法
- Asp.net Membership的BUG:存储过程错误导致无法更新用户最近活动时间
- IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题
- IIS配置asp.net网站出现错误:请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理
- IIS配置asp.net网站出现错误:请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理
- IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题
- iis部署网站(asp.net或者wcf)出现HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
- MaCfee导致Asp.net/Jmail无法发送邮件的解决办法
- 先装了FRAMEWORK,后装IIS导致asp.net页面无法访问的解决方法
- 解决IIS部署asp/asp.net网站无法浏览并出现w3wp.exe调试问题
- ASP.NET网站在线更新注意事项
- asp.net 1.1网站开发配置出现”Visual Studio .NET 无法创建或打开应用程序”解决方法
- [课堂笔记]ASP.NET网站管理工具无法连接SQL Sever数据库解决办法
- asp.net 使用驻留在页面中的Cache缓存常用可定时更新的数据[转]
- asp.net,AJAX,ADO.net视频教程下载网站及相关视频内容(有目录)
- WCF发布由于不支持asp.net兼容性而导致服务无法激活启用
- ASP.NET关于引用bootstrap.css导致Gridview Header无法居中
- ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题