1

我有这个疯狂的大型数据库,我想打印出来的数据,但由于数据库相当大,通常需要大约10-20分钟执行。ASP.NET和后台缓存

我真的不希望网络用户等待那么长时间才能显示一个页面,并且想知道是否有办法预先将全球SQL数据每隔1小时预先缓存一次,以供所有人查看?

我尝试搜索谷歌的aspx和后台工作人员,我发现大多数awsers是,asp不是为此设计的,我需要使用Windows服务..但作为票价,我知道,Windows服务确实不支持Web浏览器访问? 或者有没有办法通过Windows Service的ASPX运行WebServer?

我从来没有与ASPX工作过,并有不知道我在做什么,但是我在vb.net

+3

如果您的查询需要20分钟执行,那么您需要解决此问题。例如,创建第二个临时数据库,即将最终数据保存在一个平面表中,每6小时更新一次这些平面数据,然后使用该平面表读取它们。 – Aristos

回答

1

看看这个MSDN文章2000小时左右:How to: Add Items to the Cache

你可能想将数据添加到应用程序缓存,以1小时的滑动过期:

Cache.Insert("yourBigData", bigDataObject, _ 
    Nothing, System.Web.Caching.Cache.NoAbsoluteExpiration, _ 
    New TimeSpan(0, 60, 0)) 

然后,在你的代码,只要你想访问大数据,首先检查缓存:

If(Cache("yourBigData") IsNot Nothing) Then 
    ' Get your data out of the cache, and use that 
    Dim yourBigData As DataTable = CType(Cache("yourBigData"), DataTable) 
Else 
    ' retrieve the data and add it to the cache again 
End If 

对于更宽的视角,见this MSDN article on "Caching Application Data",尤其是这样的:

AS P.NET具有功能强大,易于使用的缓存机制,允许您 在内存中存储需要大量的服务器资源,以创建

这似乎正是你的脚本对象。

+0

我的道歉,如果VB.NET代码有语法错误 - 我不再写VB了。 – jadarnel27

+0

感谢您的解决方案,主要问题是,它会精确地仍然使网站变得缓慢,当它需要更新缓存数据,或者我错过了什么? – Droa

+0

你是对的,这只会导致缓慢问题不那么频繁。 Aristos用一种不同的方法留下了对这个问题的良好评论(利用数据库使查询更便宜)。 – jadarnel27