我正在使用 ASP.NET MVC(3) 应用程序。它是一个订购系统。当我在“选择产品”页面中添加产品时,它将重定向到“查看和应用”页面以查看购物车。
假设我在选择产品页面中添加产品“A”并移至查看和应用并返回选择产品页面并删除产品并添加产品“B”。当我移动到查看和应用页面时,我只看到产品 A。当我使用 IE 的网络选项卡检查它时,它说服务器以状态代码 304 响应,因此客户端使用缓存页面。
如何解决此问题,以便服务器向我发送新页面而不是 304。
谢谢。
我正在使用 ASP.NET MVC(3) 应用程序。它是一个订购系统。当我在“选择产品”页面中添加产品时,它将重定向到“查看和应用”页面以查看购物车。
假设我在选择产品页面中添加产品“A”并移至查看和应用并返回选择产品页面并删除产品并添加产品“B”。当我移动到查看和应用页面时,我只看到产品 A。当我使用 IE 的网络选项卡检查它时,它说服务器以状态代码 304 响应,因此客户端使用缓存页面。
如何解决此问题,以便服务器向我发送新页面而不是 304。
谢谢。
将输出缓存属性添加到您的控制器或操作。我建议您在 web.config 中使用缓存配置文件来实现此目的。
[OutputCache(CacheProfile = "NoCache")]
public class MyController : Controller
{
}
这将进入您的 web.config system.web 元素下。
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<clear />
<add name="NoCache" varyByParam="None" location="ServerAndClient" noStore="true" duration="0" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
现在棘手的一件事是使用较新版本的 MVC(3 和 4),如果您在子操作上应用缓存配置文件(即,如果您使用 @ Html.RenderAction)。因此,如果以这种方式调用您的操作,您将无法在其上使用 OutputCache 属性。而是在将呈现子操作的父操作上使用 OutputCache 属性。
例子:
public class MyController : Controller
{
[OutputCache(CacheProfile="NoCache")]
public ActionResult Index()
{
return View();
}
[ChildActionOnly]
public ActionResult ChildAction()
{
return View();
}
}