AJAX是时下最流行的一种WEB端开发技术,而你真正了解它的一些特性吗?--IT北北报

XMLHTTPRequest(XHR)是目前最常用的技术,它允许异步接收和发送数据,所有的主流浏览器都对它有不错的支持,你可以在请求中添加任何头信息或者携带参数,同时也可以读取服务器返回的所有头信息及响应文本。这些正是AJAX产生的基础。

·使用XHR时候,我们到底是应该使用POST还是GET方式呢?

如果你需要在POST和GET间做出选择的时候,对于那些不会改变服务器状态,只会获取数据(幂等行为)的请求,我强烈建议你使用GET方式,因为经GET请求的数据会被缓存起来,如果多次请求同一数据的话,将会命中缓存。

只有当请求的URL加参数后的长度接近或超过2048字节时,应该考虑使用POST方式,因为IE浏览器限制了URL的长度,这可能导致URL被截断,而得不到你想要的数据。

当然,当你使用GET方式的时候,你也可以主动去控制缓存的时间,方法是给请求加上相应的过期时间:

Var rep=new XMLHTTPRequest();

rep.setRequestHeader(“Expires”,”Mon,28 Jul 2020 23:59:59 GMT”);

这样我们主动给那些很久不会发生变化的数据发送一个很久以后才过期的请求。

·关于AJAX传送的四种数据格式XML、Json、Html、自定义格式。

XML:

<users>

<user id=”1” name=”itbbb.com” />

<user id=”2” name=”baby” />

</user>

优点:它是最早的数据传送标准,被各种语言良好支持,格式严谨、易于验证。

缺点:数据传送量消耗巨大,会携带大量标签,解析需要消耗一些性能。

Json:

users=[{id:1,name:”itbbb.com”},{id:2,name:”baby”}]

优点:轻量级数据传送方式,结构轻巧,文件尺寸小,解析快。

缺点:可读性差,比较脆弱,可能因为一个标点符号的错误导致整个数据解析失败。

HTML:

<ul class=”users”>

<li class=”user” id=”1”><a>itbbb.com</a></li>

<li class=”user” id=”2”><a>baby</a></li>

</ul>

优点:结构通常在服务器端已经组织好,通常服务器端解析性能要明显优于客户端解析的性能,这样的数据通常可以直接输出。

缺点:这样的数据包含了比XML过多的标签信息,数据更加冗长。

通常当客户端的瓶颈是CPU而不是带宽的时候,会使用这种技术。

自定义格式:

1:itbbb.com,;2:baby;

优点:这样的纯文本格式把数据缩短到最短,只需要一个特定的分隔符就可以解析,通常用于大数据量传输时,可以解决数据体积的问题。

缺点:通常要自己构造方法去解析,兼容性较差,语言类库通常不提供任何解析方法。

相信看了以上关于数据格式的剖析,您一定已经选择出了最适合你项目中的数据格式。

想了解更多高性能Javascript的技术您可以尝试阅读IT北北报

 

网站重构-你了解AJAX吗?的更多相关文章

  1. PHP Yii框架开发——组织架构网站重构

    最近一段时间在维护公司的组织架构网站(Org),旧版网站只是用了xampp简单搭建了一套环境部署在了windows机器上,代码结构相对简单. 整个架构如下: 整个架构没有用到复杂的结构,class里放 ...

  2. 哈佛大学构建动态网站--第七讲ajax

    Ajax ajax举例: DOM的结构 通过js来修改html页面. Ajax的含义: return false的用途 跨浏览器的ajax 为什么不直接从yahoo获得数据呢? XMLHttpRequ ...

  3. 《编写高质量代码-Web前端开发修改之道》笔记--第一章 从网站重构说起

    本章内容: 糟糕的页面实现,头疼的维护工作 Web标准--结构.样式和行为的分离 前端的现状 打造高品质的前端代码,提高代码的可维护性--精简.重用.有序 糟糕的页面实现,头疼的维护工作 工作中最大的 ...

  4. 对web标准化(或网站重构)知道哪些相关的知识,简述几条你知道的Web标准?

    网页主要有三部分组成:结构(Structrue).表现(Presentation)和行为(Behavior).对应的网站标准也分为三方面: 1.结构化标准语言,主要包括XHTML和XML: 2.表现标 ...

  5. Ajax重构

    Ajax重构简介 Ajax的实现主要依赖于XMLHttpRequest对象,但是在调用其进行异步数据传输时,由于XMLHttpRequest对象的实例在处理事件完成后就会被销毁,所以如果不对该对象进行 ...

  6. 你真正的了解Ajax?Ajax技术简述

    Ajax技术是目前在浏览器中通过JavaScript脚本可以使用的所有技术的集合.Ajax并没有创造出某种具体的新技术,它所使用的大多数技术都是在很多年以前就已经存在了,然而Ajax以一种崭新的方式来 ...

  7. JavaScript学习总结(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

  8. 一种开发模式:ajax + ashx + UserControl

    一.ajax+ashx模式的缺点     在web开发过程中,为了提高网站的用户体验,或多或少都会用到ajax技术,甚至有的网站全部采用ajax来实现,大量使用ajax在增强用户体验的同时会带来一些负 ...

  9. 一枚招聘信息——分期乐招页面重构/UI开发(8k-12k 深圳 经验1-3年 学历不限 全职)

    腾讯人创建的分期乐公司,急需页面重构人才若干枚,公司前景好,机会难得,有兴趣的速速 8k-12k 深圳 经验1-3年 学历不限 全职 公司网站: http://www.fenqile.com/ 职位诱 ...

随机推荐

  1. 实现微信文章页面 http://mp.weixin.qq.com/s?__biz=MjM5MDI3OTAwMg==&amp;mid=200337417&amp;idx=1&amp;sn=5959ed1d722c7da66b

    首先发了一篇文章,在微信后台.复制文章链接管理员 保存到数据库 $notice_list = $db->getAll(" SELECT `title`,`file_url`,`arti ...

  2. Abap 内表的语法

    ABAP中的内表相当于其他程序设计语言中的二维数组,存储多行结构相同的数据 不同于二维数组,内表在创建后,列结构与列数是固定不变的,而行数是动态增长的  内表支持循环对每行数据进行操作,也支持整体操作 ...

  3. 重现PHP Core的调用栈

        以前, 我曾经介绍过如何通过PHP的Core文件获取信息:如何调试PHP的Core之获取基本信息, 对于调用参数这块, 当时介绍的获取方法比较复杂. 于是今天我为PHP 5.4的.gdbini ...

  4. android的项目文件介绍

    1.res目录存放Android的各种资源文件,比如layout存放布局文件main.xml,values存放各种xml格式的资源文件,字符串资源strings.xml,颜色资源文件:colors.x ...

  5. Convert Date between LocalDateTime

    http://blog.progs.be/542/date-to-java-time Java8 has new date and time classes to “replace” the old ...

  6. mapping 详解5(dynamic mapping)

    概述 在使用 ES 的时,我们不需要事先定义好映射设置就可以直接向索引中导入文档.ES 可以自动实现每个字段的类型检测,并进行 mapping 设置,这个过程就叫动态映射(dynamic mappin ...

  7. wireshark的ubuntu更新ppa源

    默认的ppa源安装的是1.8.3的,这个源直接更新到1.11.0 $ sudo add-apt-repository ppa:dreibh/ppa $ sudo apt-get update $ su ...

  8. 用js操作表格

    效果图: 任务: 1. 鼠标移到不同行上时背景色改为色值为 #f2f2f2,移开鼠标时则恢复为原背景色 #fff var tr=document.getElementsByTagName(" ...

  9. ajax_jsonp —— 跨域

    JSONP:原理是script标签 一.抓包 二.不用每次都连接 localhost 的方法   三.抓包后所需的参数 su?:后面跟的是传递过去的参数. cb:是 callback 后面跟的是对返回 ...

  10. 301页面转向 php

    新建301.php页面,在程序入口文件index.php引用301.php页面 301.php内容如下,仅用于参考: <?php$the_host = $_SERVER['HTTP_HOST'] ...