最近非常火爆的ChatGPT,有很多国内的客户端就利用了反向ajax原理实现了动态回复的效果。同样是HTTP请求,却可以实现不一样的效果。
如果没有实现效果可以关闭PHP配置文件中的output_buffering
output_buffering = off
注意:我看网上说这个必须通过php配置文件关闭,不能通过ini_set()设置
大家可以通过 php --ini 查看配置文件路径
关闭nginx的gzip压缩功能、代理缓存及开启keep长连接
location ~ [^/]\.php(/|$) {
proxy_buffering off; #关闭代理缓存
gzip off; #注意这个是关闭gzip压缩功能,必须要
fastcgi_keep_conn on; #开启keep连接,这个必须要
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
//创建请求对象
var xhr = new XMLHttpRequest();
//设置请求方法及url
xhr.open('get','ajax.php',true);
//设置请求头
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
//监听返回的数据
xhr.onreadystatechange = function (res){
console.log(res,this.responseText);
//可以在这里获取document节点实时显示数据
}
//发送请求
xhr.send();
PS:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。