zoukankan      html  css  js  c++  java
  • 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);
                }
    
            }
    

      

     
  • 相关阅读:
    js 生成指定范围之内的随机数
    vue项目在ie浏览器打开做提示
    vue 瀑布流组件
    docker 移动文件到其他目录
    学习hyperf遇到的问题
    Linux 部署elasticsearch
    Git 常用命令
    Linux svn定时更新
    eclipse 导入web项目后,线程假死
    向量基本概念
  • 原文地址:https://www.cnblogs.com/lhlong/p/6877124.html
Copyright © 2011-2022 走看看