ASP.NET学习笔记[缓存篇]

王朝asp·作者佚名  2006-11-24
宽屏版  字体: |||超大  

1.Cache对象支持清扫(scavenging):当系统资源不足时,它会自动从缓存中删除低优先级的或不常用的项。

2.在从缓存中获取一个项后,应当检查看该项是否为nothing。如果为nothing,就需要把该项重新赋值给缓存。

3.在添加一个项到缓存中时,可以把该项与一个文件关联。如果文件发生变化,则该项被自动从缓存中删除:Cache.Insert("itemName","itemValue!",New CacheDependency(MapPath("fileName.txt")))

4.设置缓存依赖,当数据库数据发生变化时,清除缓存中相应的项:

1.首先创建一个触发器:

CREATE TRIGGER UpdateCache

ON Products

FOR UPDATE, DELETE, INSERT

AS

DECLARE @cmd Varchar( 200 )

SELECT @cmd = 'echo ' + Cast( getDATE() As Varchar( 50 ) ) +

' > c:\dataTableChange.txt'

EXEC master..xp_cmdshell @cmd, no_output

2.测试页面

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Data.SqlClient" %>

<Script Runat="Server">

Sub Page_Load

Dim dstProducts As DataSet

dstProducts = Cache( "productsDS" )

If dstProducts Is Nothing Then

dstProducts = GetProducts()

Cache.Insert( "Products", dstProducts, _

New CacheDependency( "c:\dataTableChange.txt" ) )

End If

dgrdProducts.DataSource = dstProducts

dgrdProducts.DataBind()

End Sub

Function GetProducts() As DataSet

Dim conNorthwind As SqlConnection

Dim strSelect As String

Dim dadProducts As SqlDataAdapter

Dim dstProducts As DataSet

conNorthwind = New SqlConnection( "Server=Localhost;UID=sa;PWD=XXXXXX;Database=Northwind" )

strSelect = "Select TOP 10 * From Products ORDER BY ProductID"

dadProducts = New SqlDataAdapter( strSelect, conNorthwind )

dstProducts = New DataSet()

dadProducts.Fill( dstProducts, "ProductsDS" )

Return dstProducts

End Function

</Script>

<html>

<head><title>test.aspx</title>

</head>

<body>

<asp:DataGrid

ID="dgrdProducts"

Runat="Server" />

</body>

</html>

注:该方法调用xp_cmdshell存储过程来完成该功能,则需要赋予访问者管理员权限,安全性差。慎用!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有