我正在使用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不匹配。
有没有解决方法呢?或者另一种获取特定缓存页面的方法被驱逐?感谢
答案 0 :(得分:0)
您是否尝试过使用VaryByParam或VaryByCustom,并使用“id”作为自定义标识符:http://msdn.microsoft.com/en-us/library/ms153453.aspx