我对在ASP.NET MVC中使用OutputCache
属性还比较新。
静态页面
我已经在我的网站的静态页面上启用了它,例如以下代码:
[OutputCache(Duration = 7200, VaryByParam = "None")]
public class HomeController : Controller
{
public ActionResult Index()
{
//...
如果我理解正确的话,我将整个控制器缓存了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...
}
}
如果我将OutputCache应用到整个控制器上,会发生什么?这里呢?
HTTP POST表单提交会工作吗?另外,我的表单有验证码;这会改变方程中的任何内容吗?
换句话说,如何处理具有动态页面的缓存是最佳方式?
提前感谢。