看了Dflying Chen 介紹的一篇Ajax的文章就像練練英語自己翻譯一下,由于自己的水平有限,請(qǐng)大家批評(píng)指正
本文的作者是知名.NET Ajax框架Ajax.NET Professional(AjaxPro)的作者M(jìn)ichael Schwarz
上個(gè)月我發(fā)現(xiàn)許多Web2.0網(wǎng)站大量運(yùn)用了ajax,不過其中有些非常奇怪,因?yàn)樗麄兊乃俣缺绕鹎奥?,并且有時(shí)候不起作用(在移動(dòng)設(shè)備上),我總結(jié)了十條用Ajax的錯(cuò)誤(平臺(tái)無關(guān))
1、 不要通過把整個(gè)頁面都放在UpdatePanel中更新整個(gè)頁面。在你運(yùn)行網(wǎng)頁時(shí)需要節(jié)省時(shí)間,不要更新那些能用JavaScript and DHTML (DOM)的部分。
2、 要始終記得有這么幾種訪問者,他們不能用JavaScript或用的版本比較老的瀏覽器或他們對(duì)JavaScript支持不好,比如說移動(dòng)設(shè)備。如果這些都不支持,你的訪問者能看到什么?
3、 在客戶端瀏覽器緩存相同的請(qǐng)求或在we服務(wù)器端執(zhí)行緩存。最佳的例子是自動(dòng)完成個(gè)下拉菜單,他們的填充在所有時(shí)刻都是相同的,一個(gè)有錯(cuò)誤寫法的自動(dòng)完成的寫法能減慢你的Web服務(wù)器(數(shù)據(jù)庫服務(wù)器),因?yàn)槟菢訒?huì)有比起以前用IsPostBack更多地請(qǐng)求。想一下不停的按F5刷新你的網(wǎng)頁的情形。如果你有層疊的下拉菜單你就會(huì)結(jié)算更多地請(qǐng)求。
4、 在你運(yùn)用CSS或JavaScript時(shí),不要運(yùn)行,并發(fā)的或運(yùn)行非常長時(shí)間的Ajax請(qǐng)求,一般的瀏覽器只能有兩個(gè)并發(fā)的http連接(我知道能給變這個(gè),不過默認(rèn)的還是設(shè)為兩個(gè))。如果在讀取圖片的時(shí)候由非常多Ajax請(qǐng)求的話,速度會(huì)變得非常慢。
5、 什么時(shí)候都用異步調(diào)用的方法發(fā)送XMLHttpRequest.。如果你要用同步的方法也是沒有請(qǐng)問題的,你的瀏覽器不會(huì)因?yàn)榫W(wǎng)絡(luò)問題或是連接速度慢而凍結(jié)的
6、 試著讓你的web應(yīng)用使用一個(gè)非常慢的網(wǎng)絡(luò)連接,再嘗試用快的TCP/IP連接
7、 你的web應(yīng)用是作為桌面程式的替代品?你注意觀察過一般瀏覽器在運(yùn)行你的Web應(yīng)用一小時(shí),兩小時(shí)或幾天時(shí)內(nèi)存的使用。不是所有人都有你那樣好的機(jī)器。
8、 檢查在你返回XMLHttpRequest時(shí)你的http請(qǐng)求狀態(tài)代碼(status code),那會(huì)有一些常見的網(wǎng)絡(luò)錯(cuò)誤像是不可獲得的DNS,Http Server error 500 ,你原來檢查過狀態(tài)代碼(status code),他能告訴你瀏覽器在一個(gè)為連接的模式
9、 試著禁止XMLHttpRequest object!用IE7你能用native object代替ActiveX object,不過你也能禁止native object。
10、檢查你AJAX requests的安全性!你簡單的打開了你的數(shù)據(jù)訪問層嗎?充分運(yùn)用FormsAuthentication和PrincipalPermissions。是不是所有人都能建立一個(gè)請(qǐng)求(不只是點(diǎn)擊一個(gè)鏈接)?
新聞熱點(diǎn)
疑難解答
圖片精選