什么是Ajax?Ajax在什么情况下会产生缓存,如何解决缓存问题?Ajax的跨域请求如何处理?如何理解请求的同步和异步?

什么是Ajax?

AJAX的全称是(异步的 JavaScript 和 XML)。因为普通页面刷新一次必须向服务器请求全部的页面;如果使用异步请求,每次就可以只向服务器请求我们需要用到的数据,这样可以减轻服务器的负担,并且可以让web页面有应用程序的效果和相应特征,给用户更好的体验,比如表单的实时验证、无刷新分页和google地图 等

什么情况下会产生缓存?

Ajax在发送的数据成功后,为了提高页面的响应速度和用户体验,会把请求的URL和返回的响应结果保存在缓存内,当下一次调用Ajax发送相同的请求(URL和参数完全相同)时,它就会直接从缓存中拿数据

如何解决缓存问题?

1、在ajax发送请求前加

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

2、在服务器端加

header("Cache-Control:no-cache");
header("Pragma:no-cache");
header("Expires:-1");

3、在 Ajax 的 URL 参数后加

"?fresh=" + Math.random();

4、第种方法和第3种类似,在 URL 参数后加

"?timestamp=" + new Date().getTime();

5、用POST替代GET:

不推荐

Ajax的跨域请求如何处理?

谈到跨域请求,就不得不说一下同源政策。那么,什么是同源呢?

同源政策是浏览器的一种安全策略,所谓同源是指域名,协议,端口完全相同,只有同源的地址才可以相互通过AJAX 的方式请求。

如果请求的地址非同源,就有三种行为受到限制

- Cookie无法读取。
- DOM 无法获得。
- AJAX 请求无效(可以发送,但浏览器会拒绝接受响应)。

同源或者不同源说的是两个地址之间的关系,不同源地址之间请求我们就称之为跨域请求

那么,如何处理跨域请求呢?
1、使用代理的方式

先发送Ajax请求到本网站中的一个php文件,然后让这个php文件去访问其他域的内容(那么这个php文件就可以认为是一个代理文件)
echo file_get_contents('http://www.js.com/04kuayu.php');

2、使用CORS方式(跨域资源共享)

需要在请求的网站中设置:Access-Control-Allow-Origin
header('Access-Control-Allow-Origin:允许的网站完整域名');
header('Access-Control-Allow-Origin:*'); //允许所有网站来请求
IE9+才能使用此方式

3、使用jsonp完成跨域请求

jsonp就是通过html中script标签的src属性访问另外域的内容,即跨域读取数据
(使用script标签的src属性引入的文件会自动执行,只能发送 GET 请求,跟AJAX 提供的 XMLHttpRequest 没有任何关系)

如何理解请求的同步和异步?

异步请求,在同一个时间点可以执行多个进程;
同步请求,在同一个时间点,只能进行一个操作,其他操作只能等待。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值