首页 > 代码库 > IE缓存机制
IE缓存机制
前提 :
IE有个缓存机制,对请求的url进行判断,发现短时间内请求的url相同,则使用缓存的数据,而不是去重新向服务器获取一次数据。数据缓存也有好处,但对于需要经常去后台获取数据更新的需求来说,这就是个麻烦了。那怎么解决这个问题呢?既然是对相同的url认为是重复请求,那我就想办法每次请求的url值都不相同,同时还保证是我要的数据。我们采用在url中增加一个无用的参数,且这个参数每次都在变(时间!)。
设置缓存方式
首先是Cache-Control。它用来指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache -Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max- stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage。我们来说说响应消息,因为 它是服务器发出的,对于客户端和Cache System都有非常重要的意义:
Public 指示响应可被任何缓存区缓存。
Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
no-cache 指示请求或响应消息不能缓存
no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存
max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
no-transform 不允许转换存储系统
must-revalidate 使得客户端再次浏览当前页时必须发送相关 HTTP 头信息到服务器进行验证,然后才决定是否加载客户端本地 cache
Response.CacheControl = "no-cache";
eg
[HttpGet] public JsonResult GetOnlyCode(int id) { Response.CacheControl = "no-cache"; bool isDisplayAll = (id == 1) ? true : false; try { List<SelectListItem> model = _service.GetOnlyCode(isDisplayAll); return Json(model, JsonRequestBehavior.AllowGet); } catch (Exception) { return Json(JsonHandler.CreateMessage(0, "得到所有的纸箱型号出错。"), JsonRequestBehavior.AllowGet); } }
IE缓存机制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。