网站优化之Ajax优化及相关工具

web2.0大量的ajax的使用,提高了ui交互的效率,但是过度的滥用会带来不少的问题。

ajax使用注意事项:
1 尽量避免使用同步ajax调用。在一些登录的场合常常使用同步调用服务器的登录接口。
同步调用,需要将页面上的所有元素给锁定住,代价高昂。

2 ajax调用时多使用超时设置,目前许多ajax框架如jquery都会提供超时参数的设置。
利用超时,可以很好的完善ui的交互,同时避免对服务器造成压力。

3 针对业务特性开启ajax缓存。不需要重新拉取的东东,尽量的缓存起来。

4 发送请求前对发送的数据进行pre验证,一方面可以做到对用户友好,另一方面避免太多的异常。
不小心的异常数据会导致服务器down掉。

5 对于服务器返回的数据也要仔细处理,不要相信其数据一定是格式化和验证好的。譬如对于json的数据,需要先判断相应的key是否存在,再进行操作,
否则会出现undifined的情况。

ajax请求处理一般的ui交互流程是这样的:
1 当发起ajax请求时,更新ui,譬如出现一个高亮的tip,提示用户操作开始进行
2 锁住需要更新的ui部份,同时提醒用户会什么会锁住,譬如将原div隐藏,加载一个正在加载的gif图标
3 数据成功返回后,更新ui,解除对ui的锁定
4 如果服务器返回失败,提示用户友好的失败信息

ajax使用中一些提示:
1 由于浏览器的同时向一个域名发起请求的并发数是有限制的,如ie默认的是2个,如果同时发起的ajax太多的话,是会被阻塞的。
2 返回的数据类型选择json而不是xml,一方面json数据格式会更小一些,另一方面接送封装成为一个js对象,操作起来性能会更好一些
3 尽量缓存能够缓存的内容,避免重复的发起请求
1)使用全局对象
2) flash的本地存储
3)google gears
4) ie的userData

网站优化过程常用的工具:
1 firebug和yslow,ff下常用的两个工具了
2 httpwatch和fiddler,对于网络时间的检测也不错
3 Task manager
4 js内存泄漏检测工具
5 观看优化的工具:
1)AjaxView
2)JsLex
3)YUI profiler

转载于:https://www.cnblogs.com/tonybinlj/archive/2009/04/29/1445960.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MessageQueue Message Looper Handler的解释说明

总结4个关键概念 1、MessageQueue:是一种数据结构,见名知义,就是一个消息队列,存放消息的地方。每一个线程最多只可以拥有一个MessageQueue数据结构。 创建一个线程的时候,并不会自动创建其MessageQueue。通常使用一个…

C语言中的内存分配

在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的。因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题。 第1节主要介绍内存管理基本概念,重点介绍C程序中内存的…

强化学习(十七) 基于模型的强化学习与Dyna算法框架

在前面我们讨论了基于价值的强化学习(Value Based RL)和基于策略的强化学习模型(Policy Based RL),本篇我们讨论最后一种强化学习流派,基于模型的强化学习(Model Based RL),以及基于模型的强化学习算法框架Dyna。 本篇主要参考了UCL强化学习课…

js如何读取客户端Excel文件

详细见 http://www.oejia.net/blog/2012/08/07/Js_read_xls.html 原理是利用了IE关于Excel的ActiveX插件,所以此功能只支持IE系列浏览器 var tempStr "";var filePath document.all.upfile.value;var oXL new ActiveXObject("Excel.application&qu…

Redis之简单动态字符串sds

转载:https://segmentfault.com/a/1190000012262739 redis在处理字符串的时候没有直接使用以\0结尾的C语言字符串,而是封装了一下C语言字符串并命名为sds(simple dynamic string),在sds.h文件里我们可以看到如下类型定义: typede…

同时使用有线和无线

访问无线的70网段,172.20.70.104 本地无线IP route add 172.20.70.0 mask 255.255.255.0 172.20.70.104 metric 1 访问无线的50网段,172.20.70.104 本地无线IP route add 172.20.50.0 mask 255.255.255.0 172.20.70.104 metric 2 转载于:https://www.cnb…

假期第一次编程总结(改二)

7-1 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2&#xff1…

high-speed A/D performance metrics and Amplifie...

2019独角兽企业重金招聘Python工程师标准>>> High-Speed A/D performance metrics 在高速情况下,主要考虑信号参数的频率范围、失真和噪声。During system definition,setting time 、 acquisition time、static precision-related&#xff0…

Redis之整数集合intset

intset是Redis集合的底层实现之一,当存储整数集合并且数据量较小的情况下Redis会使用intset作为set的底层实现。当数据量较大或者集合元素为字符串时则会使用dict实现set。 intset将整数元素按顺序存储在数组里,并通过二分法降低查找元素的时间复杂度。数…

场景编辑器的草案

Jojoushi场景编辑器 整个脚本的演示和编辑以点击事件为基本的单元,一次点击事件的生命期是:玩家点击一次鼠标到下一次有效的点击鼠标之间的这段时间。 1.显示场景 显示模型存在的场景,可以通过上下左右案件在场景中漫游。 2&…

c++学习书籍推荐《超越C++标准库:Boost库导论》下载

《超越C标准库Boost库导论》不仅介绍了Boost库的功能、使用方法及注意事项,而且还深入讨论了Boost库的设计理念、解决问题的思想和技巧以及待处理的问题。因此,本书是一本了解Boost库并探索其机理的实用手册。 百度云及其他网盘下载地址:点我…

批量替换 MySQL 指定字段中的字符串

批量替换 MySQL 指定字段中的字符串 批量替换 MySQL 指定字段中的字符串是数据库应用中很常见的需求,但是有很多初学者在遇到这种需求时,通常都是用脚本来实现;其实,MySQL 内置的有批量替换语法,效率也会高很多&#x…

WebCombo

原文来自方案网 http://www.fanganwang.com/Product-detail-item-1162.html,欢迎转载。 关键字: WebCombo.NET 是一款基于AJAX技术,处于行业领先地位的Combo box控件。它提供众多高级的数据输入功能及其独特的技术。通过其内置的数据过滤功能…

Redis之压缩列表ziplist

Redis是基于内存的nosql,有些场景下为了节省内存redis会用“时间”换“空间”。 ziplist就是很典型的例子。 ziplist是list键、hash键以及zset键的底层实现之一(3.0之后list键已经不直接用ziplist和linkedlist作为底层实现了,取而代之的是qu…

动态链表与静态链表

一. 静态链表 在某些语言中指针是不被支持的,只能使用数组来模拟线性链表的结构.在数组中每个元素不但保存了当前元素的值,还保存了一个”伪指针域”,一般是int类型,用于指向下一个元素的内存地址. #define MAXSIZE 100; typedef struct{ ElemType data; in…

Mysql索引机制B+Tree

1、问题引入    有一个用户表,为了查询的效率,需要基于id去构建索引。构建索引我们需要考虑两个方面的问题,1个是查询的效率,1个是索引数据的存储问题。该表的记录需要支持百万、千万、甚至上亿的数据量,如果将索引…

GLSL学习笔记

GLSL语言内置的变量,包括内置的顶点属性(attribute)、一致变量(uniform)、易变变量(varying)以及常量(const),一方面加深印象,另一方面今天的文章…

redis源码之main()函数剖析

今天看了redis的源码之中的main()函数,将大概的流程进行梳理。 在代码中进行了相应的注释,便于阅读者理解: int main(int argc, char **argv) {struct timeval tv;int j;#ifdef REDIS_TESTif (argc 3 && !strcasecmp(argv[1], &qu…

SQL Server 文件规划 -位置规划

数据库设计中,文件规划是相当重要的一个环节。 这部分内容包括文件数目的规划,大小的规划,位置的规划。 本篇介绍的是文件位置的规划,如下图所示 1. 数据文件 有可能的情况下,应该区分经常更新的表与不经常更新的表。分…

const关键字

const关键字const是constant的简写,只要一个变量前面用const来修饰,就意味着该变量里的数据可以被访问,不能被修改。也就是说const意味着“只读”readonly规则:const离谁近,谁就不能被修改;const修饰一个变…