第一阶段:Form
web应用想要与服务器交互,必须提交一个表单(form)。服务器接收并处理该表单,然后返回一个全新的页面。
缺点:前后两个页面需要更新的数据可能很少,这个过程可能传输了很多之前那个页面已经有的数据,浪费了带宽;为了返回整个页面,服务器可能需要为页面的其他内容构造数据,浪费服务器资源。
第二阶段:Ajax(Asynchronous JavaScript and XML)
由JS脚本发送http请求,服务器只返回页面需要更新的那部分数据,JS根据返回的数据刷新页面的局部内容,而不是刷新整个页面。
优点:网络传输小、服务器负担小
缺点:没有解决对实时性的友好支持(比如聊天室或客服系统),如果需要持续地从服务器获取数据,需要不断请求
第三阶段:Comet
一种hack技术,基于http长连接的“服务器推”的技术。实现方式有很多种,比如基于Ajax的长轮询(long-polling)、封装好的Comet4J等。
比较简单的是基于Ajax的长轮询:web应用发出Ajax请求,服务器收到请求后,如果有数据就即刻返回,如果没数据,会等待一段时间(比如定时20秒),在等待的时间内,如果有数据就返回,如果一直没数据,则timeout的时候返回。web应用收到服务器的返回后,处理数据、更新页面,再继续请求。服务器在发送完数据到接收到一个新请求之前,如果有数据需要发送,则先缓存起来,等待接到下一次请求后再发送。
优点:基本解决了实时性的问题
缺点:服务器需要阻塞线程等待数据,如果连接请求多的话,得考虑使用复杂的技术释放线程给其他请求使用,不然可能会拖死服务器。需要客户端和服务器端协调好才能正常工作。
第四阶段:Websocket
html5标准中的一种全双工通信规范,基于TCP协议,与http协议兼容,但不是http协议的一部分。
web应用(客户端)先发起一个Handshake请求,服务器应答之后,就可以双向交换数据了。
通信的两方都可以发起关闭的请求(通过发送一个Closing Handshake),对方收到请求后,回复一个相同的数据包,就关闭通信通道了。
优点:数据传输量极少、实时性好。
PS. 此外,双向通信还可以通过flash的socket和xmlsocket实现。但它不属于某一个web规范。
版权声明:本文为原创文章,转载请注明转自Clement-Xu的csdn博客。 https://blog.csdn.net/ClementAD/article/details/50563569

转载于:https://www.cnblogs.com/itcui/p/9128945.html

Web前后端数据交换技术和规范发展史:Form、Ajax、Comet、Websocket相关推荐

  1. 前后端数据交互——ajax(原生及jquery)

    目录 前后端数据交互--ajax 1. 介绍 2.原生ajax用法 3.jquery的ajax 4.ajax原理说明 前后端数据交互--ajax 1. 介绍 1.1 定义 Ajax(Asynchron ...

  2. 前后端数据交互——ajax技术

    在实际开发过程中,前端页面通常需要根据后台数据实现动态生成和实时更新,因此如何实现前后端数据交互成了开发过程中的难题. 现将使用ajax技术解决前后端数据的交互: (1)ajax技术介绍: ajax一 ...

  3. 淘宝玉伯引发Web前后端研发模式讨论

    淘宝玉伯是是前端基础类库 Arale 的创始人,Arale 基于 SeaJS 和 jQuery.不久前,淘宝玉伯在 Github 的 Arale 讨论页面上抛出了自己对于Web 前后端研发模式的思考. ...

  4. (转载)淘宝玉伯引发Web前后端研发模式讨论

    个人认为:他们根据自己的经验,以谈话的模式来讨论web的前后端协作,还是很有趣的,也很有借鉴意义. 淘宝玉伯是是前端基础类库 Arale 的创始人,Arale 基于 SeaJS 和 jQuery.不久 ...

  5. 超详细总结:前后端数据交互原理

    最近开始接触前后端的一些知识,查了很多资料,今天把互联网产品的前后端数据交互做个总结留做笔记. 互联网产品的前后端数据交互是通过一个通讯协议完成.前后台交互的协议主要包括HTTP,FTP,SMTP,T ...

  6. 干货 | 万字长文全面解析GraphQL,携程微服务背景下的前后端数据交互方案

    作者简介 古映杰,携程研发高级经理,负责前端框架和基础设施的设计.研发与维护.开源项目react-lite和react-imvc作者. 前言 随着多终端.多平台.多业务形态.多技术选型等各方面的发展, ...

  7. 视频教程-Vue、Spring Boot开发小而完整的Web前后端分离项目实战-Java

    Vue.Spring Boot开发小而完整的Web前后端分离项目实战 3年多.net开发经验:5年的java后端开发经验,熟悉行.net,java流行技术,拥有多个.net,java web企业级应; ...

  8. 开发一个大型后台管理系统,应该用前后端分离的技术方案吗?

    话说这天,我们团队开会讨论了一个问题,不,与其说"讨论",不如说"争吵"更合适. 背景是这样的: 我们要开发一个 xxx 后台管理系统,这个系统业务复杂.功能又 ...

  9. 前后端数据交互方法 汇总

    这篇文章给大家介绍几种常用的前后端数据交互方法,并给出使用建议.以提高前后端协同开发的效率.非常的详细,推荐给小伙伴们,有需要的小伙伴可以参考下. 1.HTML赋值 输出到 Element 的 val ...

最新文章

  1. 关于《重启人工智能》11条建议的思考
  2. [hdu4333]Revolving Digits
  3. vue实现进度条隐藏_Vue 中使用 NProgress 实现进度条
  4. 运维工程师最容易出的状况,咋就找不到问题根因呢?
  5. c语言中根号绝对值,根号的绝对值怎么算?
  6. 什么是python的内置函数_python 内置函数
  7. Error: PostCSS received undefined instead of CSS string核心解决方法
  8. 用python如何制作表格_Python中用xlwt制作表格实例讲解
  9. androidFD泄露问题总结
  10. App don't display in google paly
  11. cbrt c语音_cbrt (Numerics) – C 中文开发手册 - Break易站
  12. Cannot find entry in either framework or device manifest
  13. Downkyi(哔哩下载姬)绿色便携版V1.4.0 | bilibili视频下载工具 \ B站解析器 -- b站视频怎么下载到电脑?
  14. [bzoj 4380--POI2015]Myjnie
  15. dns辅服务器未响应是网卡受损,DNS服务器未响应一键修复教程
  16. OpenStack Liberty版本容器模块Magnum的极速体验
  17. IMEI码查询[*#06#-手机串号查询]--你的手机到底是翻新机还是正品行货
  18. c语言中aver是什么意思_什么是C语言函数
  19. 【论文总结】FSCE: Few-Shot Object Detection via Contrastive Proposal Encoding(附翻译)
  20. 杨澜访谈录之探寻人工智能1(机器的逆袭)

热门文章

  1. 字节跳动社招面试记录,javaspring框架详细设计模板
  2. 第 11 章 直接内存
  3. bes配置oracle数据源,安装 ZFS 根文件系统(Oracle Solaris 初始安装)
  4. php主控,IcePHP框架中的快速后台中的通用CRUD功能框架(五) SCrud 主控类
  5. 编程时程序无错却崩溃_程序员极度崩溃的 60 个瞬间,看到哪一个你哭了?
  6. flutter release 版本 调试_腾讯课堂Flutter工程实践系列——接入篇
  7. m3u8解析_Python多进程教你下载M3U8加密或非加密视频!
  8. babel需要这样配置
  9. java数据库打包_java程序需要连接数据库 如何打包
  10. html5转换成mp4视频,HTML5的canvas动画转视频MP4