zoukankan      html  css  js  c++  java
  • AJAX缓存问题

            Ajax页面缓存是ajax处理数据时对一些重复相同数据进行一个缓存操作,这种设计使客户端对一些静态页面内容的请求,比如图片,css文件,js脚本等,变得更加快捷,提高了页面的响应速度,也节省了网络通信资源。

            但有时候如果通过Ajax对一些后台数据进行更改的时候,虽然数据在后台已经发生改变,但是页面缓存中并没有改变,对于相同的URL,Ajax提交过去以后,浏览器还只是简单的从缓存中拿数据,这种情况当然就不行了。

            缓存问题主要是在IE下的GET请求方式。

            禁止页面缓存问题:

              1. url参数添加随机数或时间戳  

                   该方式会在客户端产生大量缓存文件。

    //随机数
    var url = 'demo.php?username=' + username + '&_=' + Math.random(); 
    
    //时间戳
    var url = 'demo.php?username=' + username + '&_=' + new Date().getTime();

              2. 修改文件最后更改时间  If-Modified-Since

                           setRequestHeader("If-Modified-Since","0");

                      这样和服务器上文件的最后修改时间肯定不一样,所以不会访问缓存文件,而是会重新访问服务器.

                      这种方式只会在客户端上产生一个缓存文件;

    var xhr = createXhr();                            //创建对象
    xhr.open('get' , url);                            //初始化对象
    xhr.setRequestHeader('If-Modified-Since', '0');   //主动修改文件最后更改
    //...

            3. 禁用缓存

                      客户端设置: 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(“Cache-Control”,”no-cache”);

                      服务器端设置:在服务端加  header(“Cache-Control: no-cache, must-revalidate”);

  • 相关阅读:
    SpringCloud之初入江湖
    消息中间件RabbitMQ
    分布式搜索引擎ElasticSearch
    MongoDB简介
    SpringBoot和SpringCloud版本对应
    终于有人把Elasticsearch原理讲透了!
    nginx不停服,重新加载配置
    小程序自定义头部标题栏并且自适应各种手机屏幕(滚动头部渐隐渐现)
    Navicat链接数据库报错1130解决方案
    传统的小程序登录 和 云开发小程序登录
  • 原文地址:https://www.cnblogs.com/Peng2014/p/4684205.html
Copyright © 2011-2022 走看看