《Web异步与实时交互——iframe AJAX WebSocket开发实战》—— 1.2 Web异步交互技术——iframe、AJAX及WebSocket
本节书摘来异步社区《Web异步与实时交互——iframe AJAX WebSocket开发实战》一书中的第1章,第1.2节,作者: 赵振 , 王顺 , 于梦竹 , 李泽 , 侯法超 , 刘备 , 时国森 , 李照耀 , 王世军,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.2 Web异步交互技术——iframe、AJAX及WebSocket随着Web交互技术的发展,出现了使用iframe模拟异步传输,来实现局部刷新页面获取数据的功能,从而解决1.1节中的问题(1)(2)。iframe是一种HTML标记,它会创建包含另外一个文档的内联框架,通过iframe框架可以在当前页面中显示其他页面的信息。这时将iframe的src属性设置为对另外一个页面的连接请求,并在当前页面中通过JavaScript动态更新iframe的内容,就可以将服务器端的数据响应到客户端,而不会出现主页面一片空白,等待刷新的现象。并且,仅刷新iframe框架而不是主页面,也减少了页面刷新的内容,这在一定程度上提高了页面刷新速度。
然而,iframe是通过刷新隐藏框架,获取响应后通过DOM技术对主页内容进行更新——这实际上是模拟的异步交互,并非真正的异步交互。随着Web交互技术的发展,一个真正意义上的异步交互技术应运而生——AJAX。这种技术通过异步通信和响应,来完成页面的局部刷新,以此改善传统Web应用中大量不必要的整页刷新,从而提高响应的效率,让用户更快地得到操作结果,减少中间的等待时间。同时AJAX作为浏览器端技术,极大地改善页面的表现和交互方式,可以让传统的Web应用程序界面具备桌面应用程序般的表现力,从而为用户提供更人性的服务。
但是,iframe、AJAX都是基于HTTP协议进行Web交互。HTTP协议的工作模式对于其构建实时Web应用存在诸多的限制——只能先由客户端提交请求,服务器端响应请求,并非是由服务器向客户端进行主动推送。随着HTML 5标准的推出,这一状况得到了改善,其提出了一种新的浏览器服务器通信协议——WebSocket协议。通过该协议可以在浏览器和服务器之间构建一条全双工的通信连接,可以支持服务器端向客户端主动推送信息,实现实时刷新页面的功能。WebSocket协议不仅解决了1.1节中的问题(1)(2),还解决了1.1节问题(3)中提出的实时性问题。
综上所述,AJAX作为当今非常热门、流行的异步传输技术,已被行业广泛采用。但在AJAX这种真正的异步传输技术出现之前,一般使用iframe模拟实现异步传输,目的是保证网页在不刷新的情况下进行数据传输更新网页内容,从而提高用户的体验。目前,iframe实现模拟异步传输这一技术,仍然经常被程序员使用。而WebSocket技术,作为HTML 5标准中的亮点,真正实现了“服务器推”的概念。其实际上是对AJAX技术的跨越式优化。但由于目前该技术较新(AJAX应用较成熟)、浏览器支持、WebSocket对服务器端性能的影响等方面的因素,尚未被大范围应用。因此,出现了这些异步传输技术在应用市场上被共同使用的情况,有必要对这3种异步技术进行深入的研究和分析。
函数计算 HTTP 触发器支持异步,解放双手搭建 Web 服务 HTTP 触发支持异步调用,为用户搭建 WEB 服务使用函数计算作为全托管平台打通了最后一公里,让 HTTP 触发器的使用者也可以一样感受到异步调用开箱即用的便捷体验。
函数计算 HTTP 触发器支持异步,解放双手搭建 Web 服务 函数计算 HTTP 触发器支持异步调用,为用户搭建 WEB 服务使用函数计算作为全托管平台打通了最后一公里,以后 HTTP 触发器的使用者,也可以感受到异步调用”开箱即用“的便捷体验。
使用Sanic开发快速异步响应的Web程序 Sanic是一个类似Flask、仅仅支持Python 3.5+ 版本的web 服务器,旨在运行速度更快。在类似Flask的基础上,Sanic支持异步请求处理,也就是说,你可以使用Python 3.5 中全新而又亮眼的 async/await 语法,使你的代码非阻塞且快速。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- 【CTF WEB】ISCC 2016 web 2题记录
- 【WEB前端】web前端获取的long长整型字段精度丢失问题,解决方案?
- 《ASP.NET MVC4 WEB编程》学习笔记------Web API
- Web 开发中 20 个很有用的 CSS 库 - WEB开发者
- 移动WEB应用开发框架moible-web-app开源
- EasyPusher实现Android手机屏幕桌面直播,实时推送操作画面,用于手游直播等应用
- eclipse自动部署web项目时WEB-INFlib目录下缺少maven依赖jar包
- Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说。。。
- 基于OpenCV+CUDA实时视频抠绿、背景合成以及抠绿算法小结
- 搭建Dynamic Web Project(动态web项目)的springmvc工程2
- Qt 处理相机图像实时显示引入队列,防止数据读写冲突导致卡顿、崩溃
- 实时电价机制下交直流混合微网优化运行方法(Matlab代码实现)
- inotify+rsync实现实时同步并邮件通知
- face_recognition 实现实时人脸识别
- Selenium结合HttpWatch进行Web自动化测试(实时获取页面性能)
- 基于BackEnd+InfluxDB+Grafana实现性能指标实时可视监控
- 目标检测论文解读复现之十九:基于YOLOv5网络模型的人员口罩佩戴实时检测
- Android显示实时帧率工具(四十六)