10. 瀏覽器發(fā)送異步(AJAX)請求
在Web 2.0偉大精神的指引下,頁面顯示完成后客戶端仍與服務器端保持著聯(lián)系。
以 Facebook聊天功能為例,它會持續(xù)與服務器保持聯(lián)系來及時更新你那些亮亮灰灰的好友狀態(tài)。為了更新這些頭像亮著的好友狀態(tài),在瀏覽器中執(zhí)行的 JavaScript代碼會給服務器發(fā)送異步請求。這個異步請求發(fā)送給特定的地址,它是一個按照程式構(gòu)造的獲取或發(fā)送請求。還是在Facebook這個例 子中,客戶端發(fā)送給http://www.facebook.com/ajax/chat/buddy_list.php一個發(fā)布請求來獲取你好友里哪個 在線的狀態(tài)信息。
提起這個模式,就必須要講講”AJAX”– “異步JavaScript 和 XML”,雖然服務器為什么用XML格式來進行響應也沒有個一清二白的原因。再舉個例子吧,對于異步請求,F(xiàn)acebook會返回一些 JavaScript的代碼片段。
除了其他,fiddler這個工具能夠讓你看到瀏覽器發(fā)送的異步請求。事實上,你不僅可以被動的做為這些請求的看客,還能主動出擊修改和重新發(fā)送它們。AJAX請求這么容易被蒙,可著實讓那些計分的在線游戲開發(fā)者們郁悶的了。(當然,可別那樣騙人家~)
Facebook聊天功能提供了關于AJAX一個有意思的問題案例:把數(shù)據(jù)從服務器端推送到客戶端。因為HTTP是一個請求-響應協(xié)議,所以聊天服務器不能把新消息發(fā)給客戶。取而代之的是客戶端不得不隔幾秒就輪詢下服務器端看自己有沒有新消息。
這些情況發(fā)生時長輪詢是個減輕服務器負載挺有趣的技術。如果當被輪詢時服務器沒有新消息,它就不理這個客戶端。而當尚未超時的情況下收到了該客戶的新消息,服務器就會找到未完成的請求,把新消息做為響應返回給客戶端。
總結(jié)一下
希望看了本文,你能明白不同的網(wǎng)絡模塊是如何協(xié)同工作的
原文:http://igoro.com/archive/what-really-happens-when-you 譯文:http://www.cnblogs.com/wenanry/archive/2010/02/25/1673368.html
本文鏈接:http://www.95time.cn/tech/site/2010/7405.asp
出處:css9.net
責任編輯:bluehearts
上一頁 從輸入網(wǎng)址到顯示網(wǎng)頁 [4] 下一頁
◎進入論壇網(wǎng)站綜合、網(wǎng)頁制作版塊參加討論
|