課程設計指導——應用AJAX技術提高Web應用系統的整體響應性能

2020-12-25 楊教授工作室

軟體項目實訓及課程設計指導——應用AJAX技術提高Web應用系統的整體響應性能

1、軟體應用系統的性能指標是衡量軟體應用系統優劣程度的一個重要指標

Web應用系統由於是基於HTTP協議產生請求、並由Web伺服器端程序處理對應的請求、最後再次通過HTTP響應向Web瀏覽器端輸出處理後的結果,該過程一般要經過多個不同的環節和由不同的程序加工處理——參看如下示例圖所示。

這將導致對請求處理的最終響應的性能是比較低效的,因此,有必要提高Web應用系統的整體響應性能。在Web應用系統的開發實現中,性能指標是衡量應用系統本身優劣程度的一個主要指標——但提高軟體應用系統的整體性能是一個「系統工程」,需要設計和開發實現人員共同努力並從各個不同的層次和方面對軟體應用系統進行性能優化。

作者將在本文及後續幾篇文章中為讀者詳細介紹提高Web應用系統響應性能的主要方法,如利用AJAX技術減少客戶端和伺服器端交互的數據量、應用Web頁面靜態化技術以及應用FreeMarker靜態模板框架技術實現對不同類型的Web應用系統中的頁面靜態化等。

這些技術都是提高Web應用系統響應性能的行之有效的良策。當然,讀者不僅要了解和掌握如何提高軟體應用系統性能的各種方法,也還應該要掌握如何對Web應用系統的性能進行測試和監控,以客觀地評估所採用的性能優化方法的最終效果。

因此,在本系列文章中作者還要介紹開源的JMeter性能測試工具、和如何利用JProfiler工具監控軟體應用系統的性能等方面的內容。

2、應用AJAX技術能夠減少客戶端和伺服器端交互的數據量

(1)AJAX代表異步JavaScript和XML技術

AJAX技術的全稱為Asynchronus JavaScript And XML——異步JavaScript和XML技術,應用AJAX技術能夠讓Web應用的操作界面產生出應用程式客戶端窗口界面的效果。另外也不需要刷新整個Web頁面就可以實現提交——因為AJAX技術能夠提供客戶端瀏覽器程序與Web伺服器端程序進行異步通信的能力,從而使Web用戶從請求/響應中解脫出來並提高了Web應用系統的響應效率。

(2)應用AJAX技術能夠減輕Web伺服器的負擔

由於AJAX技術在返迴響應輸出的數據時的基本原則是「按需獲得目標數據」,從而最大程度地減少了請求響應輸出的數據量,當然也就減少了對Web伺服器所造成的性能消耗——因為在Web應用系統的各個頁面中基本上都存在有相同的HTML標籤內容,比如頁面結構、格式、頁面頂部的Logo圖像、頁面底部的版權和聯繫方式信息等,而不同的只是頁面中所需要更新顯示的一小部分變化的數據內容。在傳統的Web應用系統請求響應的應用中,每次Web伺服器都要生成一個獨立而又完整的Web頁面文件內容,再返回給客戶端的Web瀏覽器程序。

目前在Google Maps站點、Google Suggest站點和Gmail郵件系統中都大量地應用了AJAX技術來改進用戶的界面操作效果。在示例項目銀行帳戶信息管理系統中也大量地應用了AJAX技術改進軟體應用系統的用戶界面操作體驗——比如,在用戶註冊功能頁面中應用AJAX技術實現實時檢測用戶輸入的用戶名稱是否存在重名現象,請見如下示圖所示的註冊頁面的局部截圖——當用戶輸入「admin」用戶名稱時,軟體應用系統後臺程序及時查詢和報告出該「admin」用戶名稱已經被其它用戶佔用的提示信息。

3、應用AJAX技術的Web應用系統所具有的技術特性

(1)實現Web界面向桌面應用程式界面轉化

Ajax技術可以使Web應用系統儘管是運行在Web瀏覽器的環境中,但操作使用卻具有類似於桌面應用程式的界面交互效果,從而給基於Web瀏覽器環境中的應用系統在加載動態化和操作客戶端化兩方面帶來了革命性的突破。

(2)不需要刷新整個頁面就可以實現提交

因為Ajax能夠提供讓客戶端程序與伺服器端程序進行異步通信的能力,從而使用戶從請求/響應中解脫出來並提高了響應的效率。

如下示圖為某個在線編輯軟體實現類似於微軟Word辦公應用程式排版操作效果,使用者並沒有感覺到是在Web瀏覽器中操作Web應用,而更多的是採用桌面應用程式的界面交互效果,每次編輯文檔和文檔數據保存都沒有出現屏幕閃爍的現象,而且響應速度快和性能高。

(3)減輕伺服器的負擔(只返回必須的有效數據),最終提高了系統的響應速度

(4)AJAX是標準化的並被廣泛支持的技術不需要再下載插件或者其它的小程序等安裝到客戶端,而其它的RIA(Rich Internet Applications,富網際網路應用程式)技術實現如Web Start和MS ClickOnce、Flash FLEX 等都需要安裝客戶端的插件。

4、為什麼應用AJAX技術後能夠提高Web應用系統的響應速度

(1)基於AJAX技術的請求響應的原則是「按需取數據」

用戶在Web頁面中產生數據改變的請求提交操作後,Web應用系統程序都只返回客戶端所需要的數據而不是整個Web頁面。因此,可以最大程度地減少HTTP請求響應過程中的數據量,也就相應地降低了對Web伺服器端系統所造成的負擔。

(2)在大多數Web網站的頁面中至少90%都是重複一樣的

比如結構、格式、頁頭、頁尾、廣告等,所不同的只是一小部分的內容;但每次Web伺服器都會生成完整的頁面數據再返送給Web客戶端瀏覽器,這無形之中是一種浪費。

如下示圖為Web頁面結構設計中通用布局設計效果的示例圖,相關的一組Web頁面之間的差別在於其中的「Center」中間模塊,而其它部分都是相對固定不變化的——如Logo、Left導航條、Footer頁腳區中的版權和聯繫方式等。

5、為什麼要提出AJAX技術和為什麼要應用AJAX技術

(1)B/S體系架構改進了C/S體系架構在技術應用方面的不足

基於C/S(Client/Serve,客戶機/伺服器模式)體系架構的胖客戶端的軟體應用系統所存在的主要問題:

1)部署問題

2)升級困難

3)維護困難

4)安全問題等等。

為了解決上述這些問題,在軟體體系架構設計中相應地產生了B/S(Browser/Server,瀏覽器/伺服器模式)體系架構技術及基於B/S體系架構的廋客戶端的軟體應用系統。

(2)隨著應用的深入和技術不斷地更新,B/S體系架構同樣也面臨如下的一些問題

1)表現能力方面比較貧乏,比如Web UI的技術實現也只有Web表單中的一些簡單的交互控制項,如單選框、按鈕、下拉列表框等;

2)響應速度等性能方面,不斷地處於請求/響應的循環中;

3)HTTP協議是一個無狀態的協議,需要進行狀態跟蹤以識別多次請求是同一用戶產生的還是多個不同用戶產生的;

4)伺服器負載加重,由於採用了集中式的後臺業務處理,Web瀏覽器客戶端只發送請求和顯示請求處理的結果。而大量的業務邏輯、數據訪問、數據保存和更新等功能都在Web伺服器端完成。

(3)常規的B/S方式中的同步請求處理的方式將導致客戶機會處於漫長的等待中——如下的「一片空白」,讀者應該會有深刻體會!

(4)AJAX技術實現中所體現出的三大技術特徵

1)異步交互,無需刷新整個頁面內容;

2)JavaScript腳本處理交互,JavaScript腳本程序綁定和處理所有的數據;

3)XML封裝數據,利用DOM進行數據交換,不僅每個支持 Ajax 的瀏覽器都支持XML,許多Web伺服器端技術也都支持XML。

因此,在Web應用系統開發實現中為了能夠提高系統的響應性能,有必要應用AJAX技術。如下示例中的數據邊輸入邊查詢,是通過應用異步交互而無需刷新整個頁面內容所產生的應用效果。

6、Ajax 中的第一個「A」代表「異步(Asynchronous)」

(1)什麼是異步通信

異步通信技術其實在Java技術中早就提供有技術支持,比如Java語言對多線程並發應用技術的支持等。

Ajax 中的第一個「A」所代表的「異步(Asynchronous)」,其更準確的理解應該是Web狀態下的異步請求和響應。而所謂的Web異步請求也就是不需要等待Web伺服器響應完畢,發送請求後Web應用系統程序可以完成其它的任務(比如用戶仍然可在Web表單中進行操作等)。

(2)常規的Web應用實現的過程是同步交互過程

傳統的Web應用實現的過程是同步交互過程,也就是一直處於請求與響應的循環過程中(參看如下示例圖所示)。下一個HTTP請求必須要在前一個HTTP請求已經被處理完畢後,才能送發出去;而且Web頁面在實際更新時,用戶會看到Web頁面閃爍或抖動。

7、AJAX技術中的異步實現是藉助於XMLHttpRequest對象

(1)Ajax中的最核心的技術就是XMLHttpRequest(常規的請求是HttpRequest)

XmlHttpRequest對象其實是在IE5(Internet Explorer 5)版本中首次被引入,它是一種支持異步請求的技術。簡而言之,Web開發人員通過應用XmlHttpRequest對象可以使用JavaScript腳本程序向Web伺服器發送請求並處理從Web伺服器返回的響應結果,而不阻塞用戶的繼續請求和訪問。

如下示例圖說明了XMLHttpRequest對象的主要作用和在整個請求和響應的過程中的工作原理。

(2)XMLHttpRequest對象能夠異步地在後臺運行並且可以與Web伺服器進行交互

XMLHttpRequest對象能夠異步地(多線程)向後臺發送請求,並且異步地獲得Web伺服器返回的數據(交互),這樣將使得JavaScript可以在不刷新頁面的情況下獲得Web伺服器端所返送回的數據,或者向Web伺服器端提交請求數據。

因此,當Web伺服器收到一個來自於Web瀏覽器的請求時,它就進行相應的處理,然後把處理後的XML格式的結果數據返送回Web瀏覽器端。JavaScript引擎系統程序將接收這個處理後的XML格式的結果數據,並且使用支持DOM(Document Object Model,文檔對象模型)接口的解析器程序來操作相應的Web頁面元素。而在整個過程中,不必重載整個Web頁面。

如下示例圖為天氣預報系統根據用戶點擊的位置實時從伺服器後臺獲得當前的溫度值,但頁面並沒有切換。

8、體驗和了解應用AJAX技術的軟體應用系統人機互動效果

(1)百度地圖站點

用戶可以點擊地圖、放大、縮小地圖,並且可以根據用戶瀏覽的需要來回拖動地圖。其實用戶在百度地圖中移動滑鼠的過程中,客戶端程序(百度地圖)異步地向伺服器端發送用戶滑鼠的位置(該坐標位置經過數據轉換最終代表地理位置)請求並更新當前的Web頁面的顯示內容,用戶就能夠實時地看到對應的地區地理信息。但Web頁面很平滑地移動、並且沒有任何的閃爍現象

地圖頁面似乎跟同類的其它的網站頁面沒有太大的區別。不過,一旦用戶輸入了某個地址,地圖系統馬上帶著用戶進入一個城市,穿越一條又一條街道,而在此過程中用戶會發覺事情非常美妙。

用戶不會見到沙漏圖標,而且頁面會無縫地一下子轉換到新的一頁,用戶的電腦在等待下載更多數據時,屏幕不會出現任何的間斷。

而用戶的瀏覽器繼續使用來自於Web伺服器的數據,同時用戶的瀏覽器卻不需要刷新。地圖系統沒有使用Java Applet程序技術,當然也沒有採用類似於Flash的技術。地圖系統的行為更象是一個桌面應用程式而不是一個Web應用程式。

(2)Google Suggest站點

當用戶在輸入框輸入相關的查詢關鍵字時,Google Suggest系統獲取用戶的輸入並實時地發送到後臺Web伺服器查詢出對應匹配的結果——這在技術實現上稱為「自動補全」,請讀者注意「自動補全」其實是AJAX技術的一個典型的應用。

其實,在Web系統的後臺,針對用戶的每一次鍵擊,向Web伺服器發送了若干次調用。用戶基本上沒有被它所幹擾,因為它們的交互並沒有中斷,只有Web頁面的一部分得到刷新。所有這些都可以被有效地實現,因為只有一小部分Web頁面數據被傳送回頁面中,而不是整個Web頁面。

(3)Web方式的進度條

對於「進度條」相信讀者並不會感覺到陌生,讀者在應用各種Windows或者手機App等應用程式時,相關的系統程序通過「進度條」來反映當前的操作進度,這在應用程式環境中很容易實現,但在沒有應用AJAX技術的傳統Web應用系統中是很難實現的。

(4)深層次、內容動態的樹形導航菜單的設計實現

對於軟體應用系統中的樹形菜單,讀者也並不陌生,在Windows應用系統中有很多程序都提供有樹形結構的數據表示。但在傳統的Web應用系統程序中實現樹形結構顯示,其實現技術就已經比較複雜,而且樹節點中的數據都是動態獲得和隨時改變,則更不容易。

(5)對數據進行過濾和操縱相關數據和實時刷新數據的應用場景

在很多Web應用系統中會實時地顯示當前在線人數或者某種業務的實時數據(如股票、溫度、PM2.5數據等),這些都是通過應用AJAX技術實現的應用效果。

(6)快速的用戶與用戶間的交流響應——IM(Instant Messaging,即時通訊)系統

讀者對IM系統更不陌生,許多讀者可能每天都在應用IM系統軟體(如騰訊的QQ和微信等)。但讀者應該知道,大家手機或者電腦中的QQ和微信都是獨立的應用程式版本,沒有或者很少有Web版本的IM系統(騰訊早期發布過Web版的QQ,但幾年後又廢除了)。

儘管商業化的Web版本的獨立的IM系統產品很少,但在很多其它Web應用系統中都提供有在線通信和發送、接收信息的功能(比如各種自媒體平臺、Web版的電子郵件)。

(7)自動補全

(8)實時刷新數據(如地圖、地理信息系統、導航系統)

如何在Web應用中實現Velocity 與Struts2框架相互集成的應用實例

如何在Web應用中實現Velocity 與Struts 框架相互集成的應用實例

如何利用MyEclipse開發工具開發基於Velocity模板的Web應用

如何在Web應用系統表示層開發實現中應用Velocity模板技術

應用XML+XSLT技術分離Web應用系統中表示層數據和樣式的實例

相關焦點

  • 課程設計指導——如何應用OSCache緩存框架提高Web頁面響應性能
    軟體項目實訓及課程設計指導——如何應用OSCache緩存框架提高Web頁面響應性能1、緩存應用技術是提高軟體應用系統性能的最簡單和最有效的方式之一在計算機的軟硬體系統中大量地應用緩存(Cache)技術,所謂「緩存」是指位於「目標」(可以為軟體類的應用系統,也可以為硬體設備或者部件
  • 如何應用Web頁面靜態化技術以提高J2EE Web應用系統的響應性能
    軟體項目實訓及課程設計指導——如何應用Web頁面靜態化技術提高Web應用系統的響應性能1、什麼是Web頁面靜態化技術(1)Web頁面靜態化技術將JSP動態頁面按照某種模板格式生成對應的*.html純靜態Web頁面的過程
  • 如何優化Web應用數據訪問實現方式以提高軟體應用系統的響應性能
    軟體項目實訓及課程設計指導——如何優化Web應用數據訪問實現方式以提高軟體應用系統的響應性能在軟體應用系統中離不開數據訪問和數據處理兩個方面的功能,而數據處理之前首先要進行數據訪問,也就是只有快速地獲得了數據,才能進行下一步的數據處理。
  • 如何應用EhCache緩存框架提高J2EE Web應用系統持久層的響應性能
    軟體項目實訓及課程設計指導——如何應用EhCache緩存框架提高應用系統持久層響應性能1、在Web應用系統中應用持久層相關的緩存框架在Java應用程式開發實現和J2EE Web應用系統的設計和開發實現中,軟體應用系統的設計和開發實現人員可以在系統的表示層和系統的持久層中充分地應用緩存機制和相應實現技術能夠大大地提高
  • 項目實訓及課程設計——如何合理地設計軟體應用系統的Web表示層
    軟體項目實訓及課程設計指導——如何合理地設計軟體應用系統的Web表示層1、用戶界面是軟體應用系統的門面,在設計和開發實現時必須高度重視軟體應用系統表示層內的各個組件是軟體應用系統的前端界面組件,它們直接與應用該軟體應用系統的最終操作者發生各種人機互動行為。
  • 如何在Web應用系統表示層開發實現中應用Velocity模板技術
    軟體項目實訓及課程設計指導——如何在Web應用系統表示層開發實現中應用Velocity模板技術1、分離Web表示層的數據處理和展現邏輯的常見的應用技術分離Web表示層的數據處理和展現邏輯是目前企業級的Web應用系統開發中表現層組件開發實現中的基本實現目標。
  • 課程設計指導——如何應用XML+XSLT技術分離Web表示層數據和樣式
    軟體項目實訓及課程設計指導——如何應用XML+XSLT技術分離Web表示層數據和樣式1、「XML+XSLT」技術在J2EE技術平臺中的應用Java語言及相關的應用技術的產生解決了跨平臺的軟體應用系統的開發,但沒有解決如何實現跨平臺的數據交換問題。
  • Cortex-M3平臺上lwIP+AJAX的Web嵌入式應用
    本文引用地址:http://www.eepw.com.cn/article/146836.htm  引言  嵌入式系統是融合了SoC半導體技術、電子技術、計算機技術,針對具體應用硬體軟體均量身定製的計算機系統。低成本、高可靠性、高靈活性、高集成性使得嵌入式產品在工業領域獲得了巨大的發展契機。
  • 在線課程 | 電力電子半導體基礎和系統應用
    為配合高校電氣工程與自動化類專業的培養目標和專業定位,在教育部產學合作協同育人項目指導下,英飛凌為本科和研究生課程以下章節的教學推薦了系列視頻課程。1.《電力電子技術》 第二章 電力電子器件 著作:王兆安,劉進軍 機械工業出版社2.《高等電力電子技術》 第一章 電力電子半導體技術 著作:張興 機械工業出版社3.
  • 如何應用XML+XSLT+AJAX組合技術實現無刷新的數據查詢的應用實例
    軟體項目實訓及課程設計指導——如何應用XML +XSLT +AJAX組合技術實現無刷新的數據查詢的應用實例1、在Web應用系統項目中添加一個實現查詢的請求頁面searchBook.jsp(1)創建searchBook.jsp頁面文件的過程示圖
  • 如何利用MyEclipse開發工具開發基於Velocity模板的Web應用
    軟體項目實訓及課程設計指導——如何利用MyEclipse開發工具開發基於Velocity模板的Web應用1、在MyEclipse開發工具中新建一個名稱為WebVelocity的Web項目在名稱為WebVelocity的J2EE Web應用項目中的lib目錄下添加
  • 如何在Web應用中實現Velocity 與Struts 框架相互集成的應用實例
    軟體項目實訓及課程設計指導——如何在Web應用系統中實現Velocity 與Struts 框架相互集成的應用實例1、Velocity Tools 子項目及其中的 VelocityStruts 組件(1)Velocity Tools是什麼
  • 應用號就要來了,來回顧一下Web技術是如何一步步與Native App融合的
    一方面是Native App開發團隊在保證功能和性能的同時,需要提高開發效率,降低運營成本;另一方面是App用戶在滿足需求和體驗的同時,需要更快地獲取動態的內容;這些都需要Web技術在App開發中發揮越來越多的作用和價值。但這種價值絕對不能稱為脫離或顛覆。在今天,更多的是「融合」!我從06年開始做了10年瀏覽器引擎和跨平臺App引擎。
  • 應用XML+XSLT技術分離Web應用系統中表示層數據和樣式的實例
    軟體項目實訓及課程設計指導——應用XML+XSLT技術分離Web應用系統中表示層數據和樣式的實例1、在J2EE應用系統中應用XSLT實現XML文檔轉換的基本過程(1)首先,創建出目標XML格式文檔文件,該XML格式文檔文件代表應用系統中的數據模型
  • Laravel框架從9處助力Web應用開發
    2.為加快Web應用的開發,而提供工具集成Laravel能夠吸引企業用戶的一個方面在於:它可以加快開發的速度,並縮短應用程式的面世時間。Laravel通過支持緩存後端,來提高Web應用程式的性能。雖然Laravel被默認配置為使用文件緩存驅動程序,來適合小型項目,但是您也可以構造出多個緩存配置項。
  • 軟體項目實訓及課程設計指導——系統概要設計中的組件設計示例
    軟體項目實訓及課程設計指導——軟體系統概要設計中的組件設計示例1、UML技術規範中的UML組件及UML組件圖UML技術規範中的組件是軟體應用系統的一個物理單元,它代表軟體應用系統中的一個物理實現的功能模塊——在Java技術平臺中一般為一個*.jar包文件。
  • 如何在基於面向服務架構設計的項目中應用WebService技術(下篇)
    軟體項目實訓及課程設計指導——如何在基於面向服務系統架構設計的項目中應用Web Service技術(下篇)6、Web服務組件在開發中常應用的各種設計模式(1)在Web服務組件具體開發中常用到的設計模式GOF設計模式在設計Web服務組件時可以起到「調適不同的接口」、「隔離不同的功能組件」和「統一請求的入口」等方面的作用。
  • 軟體項目實訓及課程設計指導——如何實現面向服務的系統架構設計
    軟體項目實訓及課程設計指導——如何實現面向服務的系統架構設計1、什麼是基於SOA的軟體系統架構(1)什麼是面向服務的軟體系統體系架構所謂的SOA(Service-Oriented Architecture,面向服務的軟體系統體系架構
  • 課程設計指導——如何應用Java反射技術靈活地創建程序類對象實例
    軟體項目實訓及課程設計指導——如何應用Java反射技術靈活地創建程序類的對象實例1、如何應用屬性配置文件實現對系統中的配置信息進行讀寫操作Java中的屬性配置文件主要可以作為軟體應用系統及項目的配置文件,比如許多J2EE的開源框架系統中都提供了屬性配置文件作為該應用框架的對外配置文件
  • 騰訊前端團隊是如何做web性能監控的?
    應用性能怎麼樣呀?是否會優於海量 web 應用市場呢?本文就來整理下如何進行 web 性能監控?包括我們需要監控的指標、監控的分類、performance 分析以及如何監控。但是,如何進行 web 性能監控本身是一個很大的話題,文中只會側重一部分進行研究,某些內容不是很全面。前言:為什麼需要監控?