zoukankan      html  css  js  c++  java
  • IE针对Ajax请求结果的缓存

    在默认情况下,IE会针对请求地址缓存Ajax请求的结果。换句话说,在缓存过期之前,针对相同地址发起的多个Ajax请求,只有第一次会真正发送到服务端。在某些情况下,这种默认的缓存机制并不是我们希望的(比如获取实时数据),这篇文章就来简单地讨论这个问题,以及介绍几种解决方案。

    二、通过为URL地址添加后缀的方式解决问题

    由于IE针对Ajax请求的返回的结果是根据请求地址进行缓存的,所以如果不希望这个缓存机制生效,我们可以在每次请求时为请求地址添加不同的后缀来解决这个问题。针对这个例子,我们通过如下的代码为请求地址添加一个基于当前时间的查询字符串,再次运行程序后IE中将会显示实时的时间。

       1: <!DOCTYPE html>
       2: <html>
       3:     <head>        
       4:         <script type="text/javascript">
       5:             $(function () {
       6:                 window.setInterval(function () {
       7:                     $.ajax({
       8:                         url:'@Url.Action("GetCurrentTime")?'+ new Date().toTimeString() ,
       9:                         success: function (result) {
      10:                             $("ul").append("<li>" + result + "</li>");
      11:                         }
      12:                     });
      13:                 }, 5000);
      14:             });
      15:         </script>
      16:     </head>
      17: </html>

    三、通过jQuery的Ajax设置解决问题

    实际上jQuery具有针对这个的Ajax设置,我们只需要按照如下的方式调用$.ajaxSetup方法禁止掉Ajaz的缓存机制。

       1: <!DOCTYPE html>
       2: <html>
       3:     <head>        
       4:         <script type="text/javascript">
       5:             $(function () {
       6:                 $.ajaxSetup({ cache: false }); 
       7:                 window.setInterval(function () {
       8:                     $.ajax({
       9:                         url:'@Url.Action("GetCurrentTime")',
      10:                         success: function (result) {
      11:                             $("ul").append("<li>" + result + "</li>");
      12:                         }
      13:                     });
      14:                 }, 5000);
      15:             });
      16:         </script>
      17:     </head>
      18: </html>

    实际上jQuery的这个机制也是通过为请求地址添加不同的查询字符串后缀来实现的,这可以通过Fiddler拦截的请求来证实。

  • 相关阅读:
    Codeforces1335F Robots on a Grid
    BJOI2014 大融合
    洛谷 P1463 [SDOI2005]反素数ant && codevs2912反素数
    codeforce 570 problem E&& 51Nod-1503-猪和回文
    洛谷noip 模拟赛 day1 T1
    noip 2010 三国游戏
    noip 2013 华容道
    汕头市队赛 SRM 07 D 天才麻将少女kpm
    noip2012 普及组
    汕头市队赛 SRM 08 B
  • 原文地址:https://www.cnblogs.com/njccqx/p/7010195.html
Copyright © 2011-2022 走看看