0

我们有一个排名表方法,需要 5 个小程序才能完成。

我们将列表缓存在 memcache 中,但是当缓存过期时,它会阻塞所有请求。

所以我想把列表和缓存时间都缓存在memcache中,并设置一个较长的过期时间。

每次从 memcache 中获取列表,程序也会检查缓存时间,如果超过 1 小时,程序启动一个新线程重新生成排名列表,程序立即返回旧列表,

因此,程序中没有阻塞。

问题是,在 asp.net 中开始一个新的步骤是否正确?如果新线程在aspx线程响应结束时被杀死?

以及如何解决传播缓存锁???我们使用 3 个 iis 服务器

4

3 回答 3

0

您可以App_Start在 Global.asax 中使用来获取与请求无关的线程,但您应该知道它仍然有限制(例如,工作池可能会在一段时间后终止它)。

在这里查看更多信息:http ://www.informit.com/articles/article.aspx?p=25722&seqNum=8

于 2013-03-19T08:28:06.370 回答
0

您必须首先增加应​​用程序的超时时间,您可以在配置文件中设置。为了不断开

<system.web>
     <sessionState timeout="60"></sessionState>
</system.web>

链接: http: //msdn.microsoft.com/fr-fr/library/system.web.sessionstate.httpsessionstate.timeout (v=vs.80).aspx

对于缓存,您可以使用不同的持久缓存系统:会话、缓存或应用程序

如果您使用Cache,您可以设置 TimeSpan 的持久时间

链接:http: //msdn.microsoft.com/fr-fr/library/system.web.caching.cache.aspx

于 2013-03-19T08:29:05.847 回答
0

我认为你应该使用http-handler。
http://msdn.microsoft.com/en-us/library/ms228090%28v=vs.100%29.aspx
它作为一个线程工作,您可以在那里访问任何东西sessioncache
为此,您必须使用IRequiresSessionState
http://msdn.microsoft.com/en-us/library/system.web.sessionstate.irequiressessionstate.aspx

您可以从任何地方调用它。
code behind或从jquery

于 2013-03-19T08:37:34.697 回答