• Ajax请求中的async:false/true的作用 、cache: true和false的区别


    async. 默认是true,即为异步方式, $.ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.ajax里的success方法,这时候执行的是两个线程。

    若要将其设置为false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。 下面查看一个示例:

    var temp;

    $.ajax({

    async: false,

    type : "post",

    url : defaultpostdata.url,

    datatype : 'json',

    success : function(data) {

    temp=data;

    }

    });

    alert(temp); 这个ajax请求为同步请求,在没有返回值之前,alert(temp)是不会执行的。

    如果async设置为:true,则不会等待ajax请求返回的结果,会直接执行ajax后面的语句。

    不过上面设置同步请求的方法,有网友曾经反馈将async设成false后

    转自于:https://www.cnblogs.com/banxian-yi/p/10956568.html

    jQuery ajax中 cache: true和false的区别:

    true的话会读缓存,可能真的到服务器上。

    假如上次访问了a.html,第二次的时候得到的是上次访问的a.html的结果,而不是重新到服务器获取。

    false的话会在url后面加一个时间缀,让它跑到服务器获取结果。

    cache只有GET方式的时候有效。

    Ajax页面缓存问题分析与解决办法

    一、什么是Ajax缓存原理?

    Ajax在发送的数据成功后,会把请求的URL和返回的响应结果保存在缓存内,当下一次调用Ajax发送相同的请求时,它会直接从缓存中把数据取出来,这是为了提高页面的响应速度和用户体验。当前这要求两次请求URL完全相同,包括参数。这个时候,浏览器就不会与服务器交互。

    二、Ajax缓存的好处

    这种设计使客户端对一些静态页面内容的请求,比如图片,css文件,js脚本等,变得更加快捷,提高了页面的响应速度,也节省了网络通信资源。

    三、Ajax缓存的不足

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

    四、解决Ajax缓存问题的方法

    解决这个问题最有效的办法是禁止页面缓存,有以下几种处理方法:

    1、在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(“Cache-Control”,”no-cache”);

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

    3、在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(“If-Modified-Since”,”0″);

    4、在 Ajax 的 URL 参数后加上 "?fresh=" + Math.random(); //当然这里参数 fresh 可以任意取了

    5、第五种方法和第四种类似,在 URL 参数后加上 "?timestamp=" + new Date().getTime();

    6、用POST替代GET:不推荐

    7、jQuery提供一个防止ajax使用缓存的方法:

    javascript" language="javascript">

    $.ajaxSetup ({

    cache: false //close AJAX cache

    });

    8、修改load 加载的url地址,如在url 多加个时间参数就可以:

    function loadEventInfoPage(eventId){

    $.ajaxSetup ({

    cache: true // AJAX cache  下面加上时间后load的页面中的js、css图片等都会重新加载,

    //加上这句action会重新加载,但是js、css、图片等会走缓存

    });

    $("#showEventInfo").load(ctx + "/custEvents/viewEvent.action",  {"complaint.Id":eventId, "tt":(new Date()).getTime()},function(){})

    }

    9、设置html的缓存

    <META HTTP-EQUIV="Pragma " CONTENT="no-cache">

    <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">

    <META HTTP-EQUIV="Expires" CONTENT="0">



    作者:卞卞村长L
    链接:https://www.jianshu.com/p/172957c5ab99
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    队列简单题
    排序篇(c++/c实现)
    天河计算机0.5
    BZOJ2301/LG2522 「HAOI2011」Problem B 莫比乌斯反演 数论分块
    BZOJ1391/LG4177 「CEOI2008」order 最大权闭合子图
    BZOJ2007/LG2046 「NOI2010」海拔 平面图最小割转对偶图最短路
    BZOJ1001/LG4001 「ICPC Beijing2006」狼抓兔子 平面图最小割转对偶图最短路
    BZOJ2339/LG3214 「HNOI2011」 卡农 组合数学
    LG1840 Color the Axis 线段树
    LG5239 回望京都 组合数+暴力
  • 原文地址:https://www.cnblogs.com/Ao-min/p/13528965.html
Copyright © 2020-2023  润新知