我对OutputCache
在 ASP.NET MVC 中使用该属性相当陌生。
静态页面
我已经在我的网站上的静态页面上启用了它,代码如下:
[OutputCache(Duration = 7200, VaryByParam = "None")]
public class HomeController : Controller
{
public ActionResult Index()
{
//...
如果我理解正确,我将整个控制器缓存了 7200 秒(2 小时)。
动态页面
但是,它如何处理动态页面?通过dynamic,我的意思是用户必须在哪里提交表单。
例如,我有一个带有电子邮件表单的页面。这是该代码的样子:
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 表单提交会起作用吗?另外,我的表格有一个验证码;这会改变方程式中的任何东西吗?
换句话说,使用动态页面进行缓存的最佳方法是什么?
提前致谢。