VaryByParam在MVC中无法正常工作

时间:2017-08-09 04:51:02

标签: asp.net-mvc .htaccess caching

在我的MVC项目中,我使用OutCache来缓存页面。而且我也使用.htaccess,这样对于2-3个不同的网址,它会获得相同的页面。

我正在使用VaryByParam将页面存储在缓存中。当我用任何一个查询字符串点击任意一个url时,它将输出存储在缓存中,但当我点击不同的url(重定向到与第一个控制器相同的控制器)时,我使用的第一次存储的相同查询字符串这次不同的副本。

我不明白为什么会发生这种情况,因为VaryByParam会根据查询字符串存储数据,而不是基于URL。

这是我的代码。 控制器:Main.cs

[OutputCache(Duration=200,VaryByParam="*")]
public ActionResult Details(Filter filter)
{
//some code
} 

此处Filter是基于其参数存储查询字符串的类。

.htaccess

RewriteRule ^cars/get-details/          /main/details/ [QSA,NC,L]

所以,当我点击http://localhost/main/details/?car=1它在缓存中存储页面并且如果我点击相同网址就可以正常工作我会从缓存中获取数据但是当我点击http://localhost/cars/get-details/?car=1而不是从缓存中进行处理时它会存储另一个副本这个。 我不明白为什么会这样。任何帮助都会有效。

0 个答案:

没有答案