由于用户查询数据库比较多,我想当一个查询文件从客户端发出查询请求时,先在服务器端读出数据,接着把数据生成一个XML文件,文件里记录了查询出来的数据和查询的条件,当下一个用户再用这个查询时,先看当前的XML文件查询条件是否包了现在用户的查询,如果XLM的数据能够满足则不需要记取数据库,直接从XML文件中返回数据。不知道这种设计合不合理,实现有没有难度?
解决方案 »
- 谁有.net 版b2b开源的代码?
- 在asp.net 中 如何在登录成功后2秒内自动跳转到登录前的页面
- ASP.NET返回值问题
- 得干一个月才能做完的项目,谁愿意来(北京)?
- 将dataset内容导入Excel文件中的问题。
- 小女子求助大侠:System.Web.Mail发送E-Mail的问题,在线等!
- 对面的高手看过来!数据库里面读取数值的问题?
- 如何获得动态生成的file控件的控件名称?(有源码)
- DataGrid中一个cell中的字符太多,我不想让它全部显示出来怎么办?
- 把DataSet数据保存到数据库中出错~~
- 100分求asp.net的信息发布网站模板
- 我的网站页面里被人放入了<iframe src="">这样一段代码,请问是如何作到的。
自己在本地再实现一次缓存可以减少网络流量,但是缓存过期的问题会极其麻烦
你不是反而把速度搞慢了
ms-help://MS.MSDNQTR.2005JAN.1033/cpref/html/frlrfsystemwebcachingcacheclasstopic.htm
示例
[Visual Basic, C#, JScript] 下面的示例页向用户显示为缓存中的项所分配的值,并在将该项从缓存中移除时通知用户。它创建一个 RemovedCallback 方法(该方法使用 CacheItemRemovedCallback 委托的签名)在移除缓存项时通知用户,并使用 CacheItemRemovedReason 枚举向用户说明移除的原因。此外,它还使用 Cache.Item 属性向缓存中添加对象,并检索那些对象的值。在 AddItemToCache 方法中,它使用 Cache.Add 方法向缓存中添加项。若要使用 CacheItemRemovedCallback 委托,您必须用此方法或 Cache.Insert 方法向缓存中添加项,以便 ASP.NET 在该项被移除后可以自动调用适当的方法。自定义 RemoveItemFromCache 方法使用 Cache.Remove 方法从缓存中显式删除此项,从而导致 RemovedCallback 方法被调用。
[Visual Basic]
<%@ Page Language="VB" %>
<%@ Import Namespace="System.IO"%> <html>
<Script runat=server>
Shared itemRemoved As boolean = false
Shared reason As CacheItemRemovedReason
Dim onRemove As CacheItemRemovedCallback Public Sub RemovedCallback(k As String, v As Object, r As CacheItemRemovedReason)
itemRemoved = true
reason = r
End Sub Public Sub AddItemToCache(sender As Object, e As EventArgs)
itemRemoved = false onRemove = New CacheItemRemovedCallback(AddressOf Me.RemovedCallback) If (IsNothing(Cache("Key1"))) Then
Cache.Add("Key1", "Value 1", Nothing, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.High, onRemove)
End If
End Sub Public Sub RemoveItemFromCache(sender As Object, e As EventArgs)
If (Not IsNothing(Cache("Key1"))) Then
Cache.Remove("Key1")
End If
End Sub
</Script> <body>
<Form runat="server">
<input type=submit OnServerClick="AddItemToCache" value="Add Item To Cache" runat="server"/>
<input type=submit OnServerClick="RemoveItemFromCache" value="Remove Item From Cache" runat="server"/>
</Form>
<%
If (itemRemoved) Then
Response.Write("RemovedCallback event raised.")
Response.Write("<BR>")
Response.Write("Reason: <B>" + reason.ToString() + "</B>")
Else
Response.Write("Value of cache key: <B>" + Cache("Key1") + "</B>")
End If
%>
</body>
</html>
[C#]
<%@ Import Namespace="System.IO"%>
<html>
<Script runat=server language="C#">
static bool itemRemoved = false;
static CacheItemRemovedReason reason;
CacheItemRemovedCallback onRemove = null; public void RemovedCallback(String k, Object v, CacheItemRemovedReason r){
itemRemoved = true;
reason = r;
} public void AddItemToCache(Object sender, EventArgs e) {
itemRemoved = false; onRemove = new CacheItemRemovedCallback(this.RemovedCallback); if (Cache["Key1"] == null)
Cache.Add("Key1", "Value 1", null, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.High, onRemove);
} public void RemoveItemFromCache(Object sender, EventArgs e) {
if(Cache["Key1"] != null)
Cache.Remove("Key1");
}
</Script>
<body>
<Form runat="server">
<input type=submit OnServerClick="AddItemToCache" value="Add Item To Cache" runat="server"/>
<input type=submit OnServerClick="RemoveItemFromCache" value="Remove Item From Cache" runat="server"/>
</Form>
<% if (itemRemoved) {
Response.Write("RemovedCallback event raised.");
Response.Write("<BR>");
Response.Write("Reason: <B>" + reason.ToString() + "</B>");
}
else {
Response.Write("Value of cache key: <B>" + Cache["Key1"] + "</B>");
}
%>
</body>
</html>