如何从同一服务器上的ASP.NET网站删除ASP网站中的缓存?

时间:2010-07-21 04:14:06

标签: asp.net caching asp-classic

我在同一台服务器上有两个独立的网站。一个站点是一个论坛(用ASP Classic编写),用户可以在各个部分和线程等中发布信息。另一个站点(用ASP.NET VB编写)用于俱乐部,用户可以购买和下载视频等。论坛站点使用缓存来保留每个注册用户的成员信息。俱乐部网站已对会员数据库中存储的一些用户数据字段进行更新。问题是,每当我从俱乐部网站更新用户信息时,我都需要删除为特定用户保存到缓存的缓存信息。在论坛上完成的更新工作正常,因为它确实删除了缓存。

我尝试使用以下命令从ASP.NET俱乐部网站访问缓存:     Application.Contents( “_ mbUI-2”) 哪个是正确的钥匙,但我得到“没什么”。由于我无法访问它,我也无法删除它。我认为“应用程序”因单独的网站而分开。

如果我可以使用xmlhttp在ASP站点上调用页面,我可以编写一个程序来删除缓存。但是,我需要从代码隐藏中调用它,而不是通过按下按钮和使用javascript来进行http调用等事件。

如果有办法从两个网站访问缓存,那将是理想的。

有什么建议吗?

谢谢, 詹姆斯

1 个答案:

答案 0 :(得分:1)

使用直接在数据库中检测更改的活动缓存,例如SqlCacheDependency。或者使用共享缓存,例如memcached。或者在两个进程(ASP.Net进程和经典ASP进程)之间编写进程间通信协议。在Classic ASP中实现Web服务并从ASP.Net调用服务可能是IPC的一种形式(足够低效但很简单)。

  

如果有办法访问   来自两个网站的缓存   是理想的。

使用Memcached会给你这样的。 Memcached同时具有.Net客户端库和COM客户端库,因此您的ASP.Net和ASP Classic都可以访问相同的Memcached服务器场(在您的情况下,“服务器场”只是在IIS服务器主机上运行的一个Memcached服务)。您将为应用程序命名空间前缀所有项目,以避免分隔项目的分类。共享项可以使用共享命名空间(更优雅,更高效),但这需要两个客户端编组相同的(非常简单),或者您可以简单地让每个进程使缓存无效另一个(不太有效,更丑,但更简单)。