0
Как я могу кэшировать пользовательскую страницу с использованием outputcache?Как кэшировать пользовательскую страницу с помощью outputcache
настроить страницу ошибки:
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" path="/customerror/notfound" responseMode="ExecuteURL" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" path="/customerror/servererror" responseMode="ExecuteURL" />
</httpErrors>
customerrorcontroller:
public class CustomErrorController
{
[OutputCache(Duration = duration, Location = OutputCacheLocation.Server, VaryByHeader = "Host", VaryByParam = "None")]
public ActionResult NotFound()
{
return this.View("NotFound", this.Build());
}
private TestModel Build()
{
var model = new TestModel
{
Header = GetSiteHeaderContent(SiteId),
Footer = GetSiteFooterContent(SiteId),
Navigations = GetNavigations(),
SecondaryNavigations = GetSecondaryNavigation()
};
return model;
}
}
проблема заключается в том, что действие никогда не кэшируются, хотя я использую кэш вывода во многих местах и работает отлично.
Примечание: Я использую Memcached.
Заранее спасибо.
, но если вы используете RedirectToAction то Response.StatusCode меняется от 404. И это не очень хорошая практика. Вы возвращаете недействительный код состояния для URL-адреса, который должен вернуть ошибку 404. – Meysam