【问题标题】:how to delete cache in an ASP website from an ASP.NET website on same server?如何从同一服务器上的 ASP.NET 网站删除 ASP 网站中的缓存?
【发布时间】:2010-07-21 12:42:02
【问题描述】:

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

我尝试使用以下方法从 ASP.NET 俱乐部网站访问缓存: Application.Contents("_mbUI-2") 哪个是正确的键,但我得到“无”。由于我无法访问它,因此我也无法删除它。我猜“应用程序”是分开的,因为网站不同。

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

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

有什么建议吗?

谢谢, 詹姆斯

【问题讨论】:

    标签: asp.net caching asp-classic


    【解决方案1】:

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

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

    使用 Memcached 可以做到这一点。 Memcached 具有 .Net 客户端库和 COM 客户端库,因此您的 ASP.Net 和 ASP Classic 都可以访问同一个 Memcached 场(在您的情况下,“场”只是在 IIS 服务器主机上运行的一个 Memcached 服务)。您将为所有项目添加应用程序名称空间的前缀,以避免分隔项目的集合。您可以使用共享命名空间(更优雅和高效)的共享项目,但这需要两个客户端编组相同(不是微不足道的),或者您可以简单地让每个进程使缓存无效另一个(效率较低且更丑陋,但更简单)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-01
    • 2010-11-23
    • 1970-01-01
    • 2012-07-30
    • 2011-07-13
    • 1970-01-01
    • 2018-10-28
    相关资源
    最近更新 更多