从asp.net中的自定义缓存输出提供程序中删除特定页面

时间:2012-03-20 10:36:16

标签: asp.net outputcache

我正在使用asp.net 4.0(Web窗体网站),我已经实现了一个基于自定义磁盘的输出提供程序,可以很好地缓存我网站上的页面。我遇到的问题是我找不到从缓存中删除特定页面的方法,我怀疑它是Url重写的问题。

例如,如果我有一个名为test.aspx的页面,我可以使用以下命令轻松地将其从缓存中删除:

HttpResponse.RemoveOutputCacheItem("/test.aspx");

这对于通过id缓存输出的页面不起作用,例如http://www.example.com/page/1被重写为http://www.example.com/myfolder/Page.aspx?id=1

我可以看到页面的缓存版本但我无法将其从磁盘缓存中删除,因为我需要一个绝对虚拟路径来使RemoveOutputCacheItem工作。我尝试了以下内容:

HttpResponse.RemoveOutputCacheItem("/myfolder/Page.aspx?id=1");
HttpResponse.RemoveOutputCacheItem("/myfolder/page/1");

还有许多其他变化,但似乎没有任何效果。

尝试使用RemoveOutputCacheItem时,url的缓存键与存储的键a2_myfolder_page.aspxHQNidV1FCDE不匹配。

有没有解决方法呢?或者另一种获取特定缓存页面的方法被驱逐?感谢

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用VaryByParam或VaryByCustom,并使用“id”作为自定义标识符:http://msdn.microsoft.com/en-us/library/ms153453.aspx

相关问题