asp.net-mvc – 如果ActionResult未更改,则将MVC.NET OutputCache配置为返回30
|
介绍问题 如果服务器指示304 Not Modified,我们已成功配置浏览器缓存以返回已保存的响应.这是配置: <caching>
<outputCacheSettings>
<outputCacheProfiles>
<add
name="TransparentClient"
location="Client"
duration="0" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
web.config是完美的,并设置Cache-control:private,max-age = 0,以便: >浏览器将缓存响应, 问题是我们的MVC.NET动作总是响应200而不是304. 问题 当ActionResult没有改变时,我们如何配置输出缓存以返回304 Not Modified? > MVC.NET中是否有内置的缓存验证? roll-our-own可能需要一个带ETag或Last-Modified的Action Filter. 屏幕截图 这是一个Fiddler截图,显示缺少304. > 318是SHIFT刷新. 搜索和研究 ASP.NET MVC : how do I return 304 “Not Modified” status?提到从Action中返回304.这并没有提供使OutputCache准确响应304的方法. Working with the Output Cache and other Action Filters显示了如何覆盖OnResultExecuted,这将允许添加/删除标头. 解决方法以下内容适用于我们.Web.Config中 设置Cache-Control:private,max-age-0以启用缓存并强制重新验证. <system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="TransparentClient" duration="0" location="Client" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>
行动 如果未修改响应,则回复304. [MyOutputCache(CacheProfile="TransparentClient")]
public ActionResult ValidateMe()
{
// check whether the response is modified
// replace this with some ETag or Last-Modified comparison
bool isModified = DateTime.Now.Second < 30;
if (isModified)
{
return View();
}
else
{
return new HttpStatusCodeResult(304,"Not Modified");
}
}
过滤 删除Cache-Control:private,max-age-0否则缓存将存储状态消息. public class MyOutputCache : OutputCacheAttribute
{
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
if (filterContext.HttpContext.Response.StatusCode == 304)
{
// do not cache the 304 response
filterContext.HttpContext.Response.CacheControl = "";
}
}
}
Fidder酒店 Fiddler表明缓存行为正常. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – MVC Model Binding不适用于Kendo Grid
- asp.net-mvc – 将变量与静态html连接起来的语法
- asp.net-mvc-3 – 访问帮助程序中的全局页面变量
- asp.net – 使用以前输入的值防止文本框自动填充
- 存储过程 – 经典ASP – ADO执行存储过程传入参数
- asp.net-mvc – RouteCollection.Ignore和RouteCollection.
- asp.net-mvc – asp.net mvc中HttpUnauthorizedResult上的默
- asp.net-mvc – mvc默认期限后的会话超时(20分钟)
- asp.net-mvc – mvc 4 beginform with route name
- 在应用程序配置中找不到LocalSqlServer或连接字符串为空
- asp.net – 删除HTML或ASPX扩展
- asp.net – 使用appcmd添加新网站而不提供网站ID
- asp.net-mvc – 在EditorFor for child对象中使用
- asp.net – Panel visible = true没有任何效果
- asp.net-mvc – ASP.NET MVC和混合模式认证
- ASP.NET MVC:OutputCache的问题
- 如何从经典ASP输出Excel * .xls文件
- 日志记录 – 如何在ASP.NET MVC 6中注册ILogger进
- asp.net-mvc – AJAX POST到MVC Controller显示3
- asp.net-mvc – 使用jQuery.post将多个参数发布到
