原帖地址:http://www.cnblogs.com/moltboy/archive/2013/06/02/3082887.html
Ajax简介
Ajax是Asynchronous Javascript and XML的缩写,这个术语由Jesse James Carrett创造,最早出现在他于2005年2月发表的文章“Ajax: A New Approach to Web Applications”。其主要的特点就是使用脚本操纵HTTP和Web服务器进行数据交换,不会导致页面重载。
Ajax并非一门新的开发语言,而是一组技术的专用术语,包括DHTML和XMLHTTPRequest对象,而DHTML通常是指HTML、CSS和javascript组合使用。Ajax的本质也就是从服务器动态请求数据后使用这些数据更改页面。
实现Ajax的方式有许多中,例如:利用img标签的src属性或者script标签的src属性,这种传输协议式的实现相对于XMLHttpRequest对象方式复杂,并且存在着各式各样的问题,因而最常见的方式。Ajax的基础知识点就讨论到这里,今天的重点是Ajax的并发和使用技巧。
Ajax并发
Ajax是以异步的方式向服务器提交需求,这就会存在多个ajax请求同时提交,或者迭代提交的情况,这将导致资源竞争(racing),设计较好的情况下,可以通过disable提交按钮的缓解此类问题,但一旦出现迭代提交request的情况,就可能出现XMLHttpRequest对象的引用被覆盖,但具体会发生什么样的情况,取决于Ajax的编码。
Ajax在异步的情况下,并发数并非没有限制,Wininet 会限制每个服务器的连接数,限制它对单个 HTTP 服务器的同时连接的数量。如果超过此限制时,请求将阻止,直到完成当前的连接之一。这是设计使然,是与 HTTP 规范和行业标准。例如IE8并发数就限制在2,Firefox 21限制在6。当然IE的限制可以在注册表中修改,HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_MAXCONNECTIONSPERSERVER。
ersion
HTTP 1.0 server (broadband connection)
HTTP 1.1 server (broadband connection)
HTTP 1.0 server (dial-up connection)
HTTP 1.1 server (dial-up connection)
Internet Explorer 7 and earlier |
4 |
2 |
4 |
2 |
Internet Explorer 8 |
6 |
6 |
4 |
2 |
超出上述限制,超出的请求将会被浏览器阻塞,直到先前的请求已经完成才会启动。在这里建立使用队列来解决这些问题。基本思路,生成XHR对象之后,检测当前并发数量是否大于最大请求的上限,若大于上限,则将XHR对象压入队列之中,否则就可以直接发送,并且可以继续增加并发请求数量。请求完成的时候,进行响应处理,并在结束之时进行并发数量减一操作,接着就可以检测队列中是否有等待请求,若有等待请求,就发送给队首的XHR对象进行请求。
Ajax前端设计模式
更换部分HTML
最常见的Ajax任务也就是向服务器请求更新部分HTML内容,例如:更新股票的标价,对查询请求进行部分更新。
function resHandler(){
if(req.readystate === 4 && req.status === 200){
ele.innerHTML = req.responseText;
}
}
读取XML数据
若希望javascript代码在页面中使用数据执行一些智能化的任务,可以使用结构化的方式将数据发送到浏览器客户端,最适合的格式有:XML、JSON等。
function resHandler(){
if(req.readystate === 4 && req.status === 200 && req.responseXML){
var root = req.responseXML.getElementById('root');
//读取XML数据...
}
}
与上一种模式最大的区别是使用了req.responseXML,responseXML是一个XML文档对象模型(DOM),这种模型只有在 服务器的响应是正确编码的XML时才是可用的。responseXML对象可以直接读取使用,但是当数据结构比较复杂之时,解析和检索XML文档需要花不 少时间,这时候可以考虑使用JSON格式。
读取JSON数据
返回JSON格式的优点是能够使浏览器高效地解析,并创建使用起来更加简单的JSON数据。JSON格式更加容易读取和管理,因而Ajax开发时,json格式更加受到欢迎。
function resHandler(){
if(req.readystate === 4 && req.status === 200){
var json = JSON.parse(req.responseText);
//...
}
}
避免浏览器缓存
若对同一个URL请求两次,浏览器将使用缓存中的页面。因此,最常见的解决办法就是URL拼接一个随机数或者拼接一个时间戳,这样浏览器就不会 反悔一个缓存的结果。个人最喜欢的是想URL添加当前时间的数字值。url +=(new Date()).getTime()。
THML模板
当然为了开发的便捷,你可以对HTML的修改进行模板化,通过从服务器响应读取对应的数据对HTML模板进行填充,这种方案只是更换部分HTML的升级模式。
本文链接
分享到:
相关推荐
1. **设计模式**:项目中提到了GoF设计模式,即Gang of Four设计模式,这是软件工程中常用的一套经典设计模式,包括工厂模式、单例模式、观察者模式等。在这个图书馆管理系统中,单例模式被用于`...
6.8 前端Ajax超时 135 6.9 总结 136 6.10 参考资料 137 7 回滚机制 139 7.1 事务回滚 139 7.2 代码库回滚 140 7.3 部署版本回滚 141 7.4 数据版本回滚 142 7.5 静态资源版本回滚 143 8 压测与预案 145 8.1 系统压测 ...
然后,采用合适的开发模型(如敏捷开发或瀑布模型)进行编码,期间可能涉及多种设计模式,如工厂模式、单例模式等。最后,进行测试,确保功能完整性和性能优化。 5. 源代码与论文: 提供的源代码是理解项目实现...
### JAVA 论文格式化系统——后台模块的设计与实现 #### 概述 本文档旨在详细介绍一个基于Java平台的论文格式化系统后台模块的设计与实现过程。该系统旨在解决学术界普遍存在的问题——论文格式调整繁琐且耗时,...
- **MVC架构**:ASP.NET通常采用MVC(Model-View-Controller)模式,这是一种设计模式,允许将应用程序逻辑分离为独立的组件,提高代码的可维护性和可测试性。 - **C#编程**:ASP.NET主要使用C#语言编写,这是一种...
在这个“ASP.NET多功能聊天软件的设计与开发——文字聊天文件传输模块”项目中,我们将深入探讨如何利用ASP.NET来构建一个具备实时文字聊天和文件传输功能的在线聊天平台。 1. **ASP.NET基础**: - **MVC架构**:...
3. **MVC(Model-View-Controller)架构**:由于 iShuo 博客是 ASP.NET 应用,很可能采用了 MVC 设计模式。MVC 分离了业务逻辑(Model)、用户界面(View)和应用控制(Controller),提高了代码的可读性和可维护性...
理解HTTP协议,会使用MVC设计模式,熟练配置和使用Tomcat服务器,以及处理请求和响应,都是JavaWeb开发的基本功。 HTML是网页结构标记语言,CSS用于样式控制,JavaScript则负责页面的动态交互。求职者应熟悉DOM操作...
6. **Socket编程与多线程**:在网络编程中,Socket编程用于实现客户端-服务器通信,而多线程则是处理并发请求和优化性能的重要手段。 7. **设计模式**:了解MVC模式、工厂模式、单例模式、接口模式和适配器模式,...
4. **MVC模式**:ASP.NET支持Model-View-Controller(MVC)设计模式,这是一种将业务逻辑、用户界面和数据访问分离的方式,有助于提高代码的可读性和可维护性。在这个博客系统中,模型(Model)代表数据,视图(View...
1. **ASP.NET MVC**:ASP.NET MVC(Model-View-Controller)是一种设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。在这个聊天室系统中,模型可能负责处理数据和业务...
5. **MVC架构**:除了传统的Web Forms模式,ASP.NET还支持Model-View-Controller(MVC)设计模式,更利于开发出可维护、可测试的代码。 回到这个项目,"聊天留言"系统很可能包含了以下几个关键部分: - **用户认证...
首先,系统设计通常分为前端和后端两部分。前端界面使用HTML、CSS和JavaScript来构建用户交互界面,可能还涉及AJAX技术以实现无刷新更新。后端主要负责业务逻辑处理和数据库交互,这部分由ASP.NET来完成,可能采用了...
设计模式是软件工程中的精华,如单例、工厂、代理、策略、模板方法、观察者、适配器、责任链和建造者模式。研发工具的熟练使用也是必不可少的,包括集成开发环境(Eclipse、IntelliJ IDEA、VS Code)、Linux操作、...
9. **设计模式**:理解并应用常见的设计模式,如单例、工厂、观察者、装饰者等,提高代码的可读性和可维护性。 其次,实习期间可能会参与实际项目,涉及到以下实践技能: 1. **项目结构与管理**:理解Maven或...
这个"ASP.NET源码——phpFreeChat.zip"文件显然包含了使用ASP.NET技术实现的一个聊天室应用的源代码,名为phpFreeChat。在深入探讨之前,我们需要明确一点:尽管名称包含“php”,但这里的“phpFreeChat”很可能是指...
通过这种方式,MeyboMail Web将用户界面与数据处理分离开来,遵循了MVC(Model-View-Controller)设计模式。 **数据库交互** 邮件系统的数据通常存储在数据库中,MeyboMail Web可能使用了JDBC(Java Database ...
本文将深入解析"爱客商城.Net版"这一电子商务平台,探讨其核心技术和设计模式。 首先,"爱客商城.Net版"是一款基于ASP.NET技术构建的电子商务解决方案,它涵盖了商品管理、订单处理、用户管理、支付接口集成等多个...
ASP.NET的模块化架构和面向服务的设计原则使得BbsMax易于添加新功能和组件,同时通过遵循代码规范和使用设计模式,可以提高代码的可读性和可维护性。 8. 性能优化: 为了处理高并发访问,BbsMax可能采用了缓存策略...