• 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);
                }
    
            }
    

      

     
  • 相关阅读:
    DBA 职责及日常工作职责
    mysql 语句笔记
    学习Groovy — 闭包
    linux 命令: 网络和进程
    linux命令: rm命令
    Pro Git-- 跟踪分支
    Redis Tutorial
    linux 命令--文件操作
    分库分表的几种常见形式
    乐观锁与悲观锁
  • 原文地址:https://www.cnblogs.com/lhlong/p/6877124.html
Copyright © 2020-2023  润新知