HTTP协议综合应用:
1:五种方式发送HTTP请求(使用方法自行百度了解)
1:telnet
2: file_get_contents()
3: fopen()
4: curl()
5: fsockopen()
2:防盗链
1:通过服务器的重写机制,判断请求来源。把指定范围外的所有不正规请求屏蔽掉。
3:实时通讯--长连接等
1:技术--ob缓存、长连接+ajax轮询
1: 短轮询(polling):客户端按规定时间定时像服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接。
技术点:就是下面的js代码部分
<script type="text/javascript">
var getting = {
url:'server.php',
dataType:'json',
success:function(res) {
console.log(res);
}
};
//关键在这里,Ajax定时访问服务端,不断获取数据 ,这里是1秒请求一次。
window.setInterval(function(){$.ajax(getting)},1000);
</script>
2:长轮询----Ajax长轮询属于Ajax轮询的升级版,在客户端和服务端都进行了一些改造,使得消耗更低,速度更快。
<script type="text/javascript"> //前端Ajax持续调用服务端,称为Ajax轮询技术 var getting = { url:'server.php', dataType:'json', success:function(res) { console.log(res); $.ajax(getting); //关键在这里,回调函数内再次请求Ajax } //当请求时间过长(默认为60秒),就再次调用ajax长轮询 error:function(res){ $.ajax($getting); } }; $.ajax(getting); </script>
最关键的地方在于前一次请求结束后,第二次请求立即不间断的发起,这个就叫做Ajax长轮询
2:ob缓存机制
说的简单点:
默认情况下,php会把输出的内容放到【程序缓存】中,待程序跑完,把【程序缓存】中的东西全部抛到浏览器中;现在使用ob缓存,开启后,所有的输出都会放到【ob缓存】中,头信息(header)等这些依旧存放到【程序缓存】中,
待程序跑完,【ob缓存】中的内容会被放到【程序缓存】内容后面,再送到浏览器。ob_flush()是把【ob缓存】中的内容放到【程序缓存】中,之前只有待程序跑完才会把【ob缓存】内容放到【程序缓存】中,现在用ob_flush()就可以在任意时候送到【程序缓存】中;flush()函数的作用是把【程序缓存】中的数据抛到浏览器中;
总结: ob_flush()把ob缓存中的内容放到程序缓存 ,flush()是把程序缓存中的内容送到浏览器缓存中