Max*_*sky 5 c# asp.net asp.net-mvc caching outputcache
我OutputCache在ASP.NET MVC中使用该属性相当新.
我在我网站上的静态页面上启用了它,代码如下:
[OutputCache(Duration = 7200, VaryByParam = "None")]
public class HomeController : Controller
{
public ActionResult Index()
{
//...
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,我将整个控制器缓存7200秒(2小时).
但是,它如何与动态页面一起使用?通过动态,我指的是用户必须提交表单的位置.
例如,我有一个带有电子邮件表单的页面.这是代码的样子:
public class ContactController : Controller
{
//
// GET: /Contact/
public ActionResult Index()
{
return RedirectToAction("SubmitEmail");
}
public ActionResult SubmitEmail()
{
//In view for CAPTCHA: <%= Html.GenerateCaptcha() %>
return View();
}
[CaptchaValidator]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SubmitEmail(FormCollection formValues, bool captchaValid)
{
//Validate form fields, send email if everything's good...
if (isError)
{
return View();
}
else
{
return RedirectToAction("Index", "Home");
}
}
public void SendEmail(string title, string name, string email, string message)
{
//Send an email...
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在这里将OutputCache应用到整个控制器会发生什么?
HTTP POST表单提交是否有效?另外,我的表格有一个CAPTCHA; 这会改变等式中的任何东西吗?
换句话说,使用动态页面进行缓存的最佳方法是什么?
提前致谢.
通过利用输出缓存,您可以显着提高 ASP.NET MVC 应用程序的性能。页面可以生成一次并缓存在内存中以供多个用户使用,而不是每次请求页面时都重新生成页面。
首先,您要实施的场景是不正确的。请记住一件事,输出缓存应该仅在不影响业务逻辑的情况下使用,您希望减少服务器负载和 Sql 数据检索经常使用的页面但不频繁更新的数据。
幸运的是,有一个简单的解决方案。您可以利用 ASP.NET 框架的一项称为缓存后替换的功能。缓存后替换使您能够替换已缓存在内存中的页面中的动态内容。