OutputCache 导致页面下载的解决办法
Asp.Net 中的 OutputCache 非常的有用,但是加上后,老是碰见浏览器下载页面的情况,让人十分费解。最后,在 search 了半天后,发现的解决方案都是加上 VaryByHeader="Content-Type" 这个。但是加上之后,发现不起作用,还仍然会下载。
最后,再请教dudu 之后,给出了一个很完美的解决方案,该解决方案就是重写 Global.asax 中的 Application_BeginRequest 方法,判断页面类型,如果为 "text/vnd.wap.wml" ,则不缓存页面,经过高访问量的测试,这个方法是可靠可行的,没有性能问题的,可以放心大胆的使用
代码:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
//use outputcache
string acceptTypes = Request.Headers["Accept"];
if(!string.IsNullOrEmpty(acceptTypes)&&acceptTypes.ToLower().Contains("text/vnd.wap.wml"))
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
}
}
使用上之后,服务器的 CPU 占用,立即降低下来了,下面备注下使用 OutPutCache 的好处:直接从内存读页面,页面响应速度更快,用户体验更好;大大的降低了服务器的压力,特别是对于高并发的网站,特别是 CPU 的压力;减少了 DB 的强求,降低 DB(数据库)的压力。
以上就是 OutputCache 导致页面下载的解决办法,如果对你有所帮助,请留言或点击推荐