ITPub博客

首页 > Linux操作系统 > Linux操作系统 > .net2.0 缓存用法

.net2.0 缓存用法

原创 Linux操作系统 作者:gloot 时间:2009-01-06 17:42:13 0 删除 编辑

1. 应用程序缓存
我们在做程序的时候,有时候要经常的读取一些不怎么会改变,
不怎么会更新的内容 , 比如:用户资料信息

这时候我们可以用缓存,把这些信息用某种Key的Cache保存在服务器端,
当有用户要读取关于跟这个Key相关的信息时,用户就不用再去读数据据,
直接从Cache读取,这样就可以减少数据库的读取次数,大大提高应用程序的性能.

代码: VB.Net(比如我们要把一个用户的信息保存在Cache里, 假设用户信息在dt里)

Dim sqls as String = "select * from Userinfo where username='XXX' "
Dim dt as DataTable = XClass.getDataTableBySql(sqls) (相信可以看得懂,看不懂,英语再去读几个月)

''''''''''''''''Cache''''''''''''''''
Imports System
Imports System.Data

Public Class WebClass
 Inherits System.Web.UI.Page

 '全局page
 private page As System.Web.UI.Page
 Public Sub New()

 End Sub

 '创建一个返回DataTable的方法
 Public Function GetUserInfo(user As String,page As Page) As DataTable
  Me.page = page

  Dim sqls as String = "select * from Userinfo where username='XXX' "
  Dim dt as DataTable
  If page.Cache("DBUserInfo" & user) Is Nothing Then
   dt = XClass.getDataTableBySql(sqls)
   Dim callBack As CacheItemRemovedCallback = New CacheItemRemovedCallback(AddressOf onRemove)
              Me.page.Cache.Add("DBUserInfo" & user, dt, Nothing, DateTime.Now.AddHours(1), TimeSpan.Zero,

CacheItemPriority.High, callBack)
  Else
   dt = CType(Me.page.Cache("DBUserInfo" & user), DataTable)
  End If

  return dt
 End Function

 Public Sub onRemove(ByVal key As String, ByVal val As Object, ByVal reason As CacheItemRemovedReason)
  Dim callBack As CacheItemRemovedCallback = New CacheItemRemovedCallback(AddressOf onRemove)
  Me.page.Cache.Add(key, val & "*", Nothing, DateTime.Now.AddHours(-1), TimeSpan.Zero,

CacheItemPriority.Default, callBack)
 End Sub
End Class

'好了,格式就是这样. 如果有个用户第一次访问这个user的信息,就会在服务器创建个key为"DBUserInfo" & user 的Cache
'下次有新用户访问这个用户(user)信息,而且时间又没过期的话,就会直接从Cache去读取,而不用读数据库.

Add 与 Insert 使用情况:
Add:
将指定项添加到 Cache 对象,该对象具有依赖项、过期和优先级策略以及一个委托(可用于在从 Cache 移除插入项时通知应用程序)。如果

Cache 中已保存了具有相同 key 参数的项,则对此方法的调用将失败。若要使用相同的 key 参数改写现有的 Cache 项,请使用 Insert 方法

Insert:
向 Cache 对象插入项。使用此方法的某一版本改写具有相同 key 参数的现有 Cache 项。

//////////////////////////////////////////////////////////////////////////////////////////////

 

2. 页面输出缓存 (挺好用的)

用法:
Duration: 过期时间 (有相对跟绝对之分)
VaryByParam: 最关键的就是这个了(依赖于URL参数: http://domain.com/xx.aspx?page=3&classid=5 )
{
 1) 如果这个页是固定的VaryByParam="None" 没事,可以正常运行, 就是说这个页面不依赖于某个URL参数改变而改的情况.
 2) 如果这个页面是个列表页, 这个页面依赖的URL参数可能有page,classid等
    如果这时候你也写成VaryByParam="None", 不论你点第几页,显示出来都是你第一次访问的页的第几页的页面.
    VaryByParam="page: 如果你只是这样写:那你访问的时候,页面数可以改变, 但是呢,classid是不变的.
}

此方法可以用于.aspx页,也可以用于.ascx(用户控件)

<%@ OutputCache Duration="#ofseconds" Location="Any | Client | Downstream | Server | None" Shared="True | False"

其余可以自己去研究.



Link URL: http://blog.sina.com.cn/s/blog_5116ad5f0100a1h2.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/586303/viewspace-530066/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-01-06

  • 博文量
    19
  • 访问量
    10307