專利名稱::經由標記語言的客戶端瀏覽器狀態(tài)的服務器端記錄的方法
技術領域:
:本發(fā)明大體而言涉及關于web服務器及客戶端瀏覽器接口的數據追蹤及儲存操作。本發(fā)明更具體言涉及能夠對自客戶端瀏覽器獲得的數據進行記錄及服務器端存取的操作。
背景技術:
:現今的許多用戶界面為網站,從而需要使用瀏覽器來存取接口內容。然而,不同的瀏覽器可能以不同方式向客戶端用戶顯示相同的內容。舉例而言,MicrosoftInternetExplorer及MozillaFireFox各自以不同方式實施XMLD0M(文檔對象模型)。另外,經由使用諸如JavMcript或AJAX的動態(tài)網頁技術,用戶當前正瀏覽的內容可能已從服務器提供的其原始狀態(tài)修改。因此,常常難以精確地判定客戶端正進行的操作及向客戶端顯示內容的方式,因為客戶端代碼(clientcode)正在與web服務器不同的系統上執(zhí)行。這樣可使問題判定尤為困難,在試圖理解客戶端上正發(fā)生的錯誤或其它非預期行為時尤其如此。為了在現有系統中提供強健的問題判定解決方案,必須在客戶端計算機上實施瀏覽器端記錄以精確地記錄用戶正查看的內容及進行的操作。這樣通常涉及記錄用戶可能已輸入至控制器中的所有值,且追蹤腳本(script)對所顯示內容作出的任何改變。當前不存在用于有效地記錄一時間點處的綜合客戶端瀏覽器顯示信息且將此信息傳送回至服務器或另一第三方以用于分析的系統。
發(fā)明內容本發(fā)明的一方面包括能夠實現對客戶端瀏覽器狀態(tài)的服務器端記錄的增強操作。在一實施例中,通過遍歷且記錄DOM(文檔對象模型)的內容,可將客戶端用戶存取的網頁的完整當前狀態(tài)寫入至字符串。這包括鍵入至輸入接口工具集(widget)中的任何數據,及由腳本對該網頁作出的任何修改。可接著將含有表示該網頁的狀態(tài)的數據的這個字符串傳遞至該服務器,且使用標準記錄方法進行記錄。因此,可解析和分析該記錄信息以重新建立該客戶端瀏覽器在記錄時所存在的狀態(tài)。使用本發(fā)明揭示的記錄操作使得內容提供者能夠精確地知曉在任何給定時間點處用戶正進行的操作,及正向該用戶顯示的內容。因此,所揭示的記錄操作能夠執(zhí)行以下操作對內容產生腳本代碼進行除錯;識別特定瀏覽器或瀏覽器版本中發(fā)生的呈現問題;如果某一未經驗證的輸入導致非預期行為,確定輸入至網頁中的值;識別“高速緩存”問題,諸如客戶端腳本文件過時且需要刷新(或以禁止高速緩存的內容服務)的情況;及總體審計正呈現給該用戶的內容。另外,本發(fā)明揭示的實施例使得疑難排解員及支持人員能夠精確地重新建立該用戶所處的情形,而無需存取web服務器或其數據庫。在一實施例中,在從web服務器接收到網頁內容之后,對于在客戶端計算機系統上操作的瀏覽器執(zhí)行用于執(zhí)行對客戶端瀏覽器狀態(tài)的服務器端記錄的操作。在此網頁內容顯示于該瀏覽器中之后,捕獲在該瀏覽器內所顯示的該網頁的狀態(tài)。在捕獲之后,將該瀏覽器的操作環(huán)境編制為一字符串。另外,通過遍歷該網頁的每一DOM元素且將每一DOM元素及其相關聯的數據編制為字符串來產生表示該網頁的捕獲狀態(tài)的每一DOM元素的字符串。在另一實施例中,在該瀏覽器內所顯示的該網頁的該狀態(tài)包括由用戶提供至輸入字段中的輸入值。接著將元數據(metadata)及DOM字符串數據發(fā)送至該web服務器。在另一實施例中,在HTTP請求內發(fā)送這個字符串。一旦該web服務器已接收到該字符串,則其可接著在必要時處理,諸如,將該元數據及DOM信息記錄至可由該web服務器存取的數據儲存器中。在其它實施例中,在不同時間或響應于特定事件而捕獲該網頁的該狀態(tài)。舉例而言,網頁捕獲可在以下情況下發(fā)生在網頁內容顯示于瀏覽器中之后立即地;響應于由客戶端瀏覽器對腳本的執(zhí)行;響應于從用戶接收到應記錄網頁的狀態(tài)的信號(諸如,經由按鈕或菜單驅動命令(由該用戶發(fā)起));或替代地來自在該網頁內執(zhí)行的判定何時捕獲網頁的狀態(tài)的腳本。僅通過示例,參照附圖,現在描述本發(fā)明的實施例,其中圖1說明先前技術中所存在的實例web客戶端/服務器架構;圖2說明根據本發(fā)明的一實施例的實施客戶端瀏覽器狀態(tài)的記錄的實例web客戶端/服務器架構;及圖3說明根據本發(fā)明的一實施例的用于執(zhí)行客戶端瀏覽器狀態(tài)的服務器端記錄的實例方法的流程圖。具體實施例方式本發(fā)明的一方面涉及客戶端瀏覽器狀態(tài)的記錄,及將此記錄的瀏覽器狀態(tài)數據傳輸至web服務器以用于分析及使用以達成問題判定、支持及測試目的。在一實施例中,將該客戶端瀏覽器狀態(tài)捕獲為一字符串,其包含元數據及HTML。捕獲于記錄的數據內的HTML表示“執(zhí)行時間(rim-time)”,其為網頁的動態(tài)產生的HTML而非初始服務于客戶端的“源"HTML。元數據可包括諸如瀏覽器名稱、瀏覽器版本、窗口大小及操作系統的數據。在將客戶端瀏覽器狀態(tài)及元數據捕獲為一字符串之后,將此字符串傳輸至web服務器和/或第三方位置。通過使用所捕獲的瀏覽器狀態(tài)信息,支持小組可精確地再現在瀏覽器狀態(tài)被記錄的時刻用戶所經歷的用戶接口狀態(tài)。舉例而言,這可包括網頁輸入字段的用戶鍵入的值,或在瀏覽器內動態(tài)地改變的內容顯示狀態(tài)。記錄操作可由用戶命令手動地觸發(fā)(諸如,通過“記錄瀏覽器狀態(tài)”按鈕),或可以以定義于腳本中的預定時間間隔而觸發(fā)。在另一實施例中,在客戶端瀏覽器狀態(tài)的捕獲期間,可施加條件以防止對客戶端網頁上的敏感數據(諸如,用戶鍵入的密碼字段)的記錄。先前技術中的標準記錄實踐不能容易地記錄客戶端及其瀏覽器的綜合狀態(tài),在試圖監(jiān)視以不同方式呈現給眾多類型的瀏覽器及瀏覽器平臺的網頁的顯示時尤其如此。本發(fā)明的優(yōu)點之一為,可針對服務器端狀態(tài)數據及客戶端狀態(tài)數據兩者來部署和/或協調記錄及問題判定。此外,本發(fā)明的實施例允許捕獲精確呈現的HTML,而不管內容是在服務器端產生還是在客戶端產生。另外,在本發(fā)明的一實施例中,管理者能夠分析用戶已鍵入至網頁的輸入接口工具集(widget)中的數據的記錄,即使此數據尚未提交給服務器。不同于使用屏幕捕獲的現有系統,此實施例不儲存像素數據。相反,將標記儲存為文本,其節(jié)省空間且更有助于檢查??梢韵胂螅踔量舍槍λ鶊?zhí)行的每一用戶動作而捕獲標記“屏幕截圖”。因為腳本系統可被配置為以規(guī)則時間間隔保存網頁的狀態(tài),所以這樣將能夠使用客戶端的“類似視頻(Video-like)”播放,與節(jié)省實際視頻數據相比,其顯著減小了開銷。通過在網頁呈現于客戶端上時捕獲顯示,本發(fā)明的各種實施例可在利用基本Web瀏覽活動的多種客戶端平臺上執(zhí)行。除了在電話、行動器件及攜帶型電子計算器件上操作的其它瀏覽器之外,這還包括在桌上型計算機上操作的常用瀏覽器。因此,無論客戶端瀏覽器為Firefox、InternetExplorer>Safari、GoogleChrome等中的哪一個,可同樣地執(zhí)行數據的記錄及從客戶端收集數據。如通過圖1中的先前技術中存在的實例web服務器架構所述,動態(tài)web應用通常如下而結構化。當瀏覽器Iio的URL指向服務器120時,其形成初始請求130,服務器120在請求處理例程121中處理該初始請求130。從web服務器的應用邏輯122及響應產生器123產生的服務器的回應131構成網頁的初始加載。該響應通常采用提供HTML網頁供顯示113的形式,但理論上該響應可提供由文檔對象模型(DOM)表示的任何類型的文件。一旦加載網頁,則瀏覽器110開始執(zhí)行與該網頁相關聯的任何腳本111。這些腳本可執(zhí)行許多任務,諸如,動畫顯示網頁的內容、監(jiān)視且響應用戶輸入,或向服務器額外請求更多數據。在后種情況下,腳本可形成發(fā)送至服務器的請求,該請求經處理,且經由回調函數(callbackfunction)將動態(tài)響應132直接發(fā)送回至網頁的腳本。這些動作中的任一個可導致腳本111更新DOM112。另外,用戶輸入114也修改該D0M。因此,通過典型的客戶端/web服務器配置,不存在明顯的方式來使服務器知曉在給定時間所呈現的網頁的精確狀態(tài)。在服務器端上可容易地捕獲于記錄數據儲存器140中的唯一數據將為經由服務器120所傳達的數據請求或響應。圖2說明根據本發(fā)明的一實施例的實施客戶端瀏覽器狀態(tài)的服務器端記錄的類似web客戶端/服務器架構。以下操作提供捕獲客戶端數據且將該客戶端數據傳輸至服務器以供記錄于服務器端上的方法的一實例。首先,于客戶端瀏覽器110內開始記錄操作,以捕獲所顯示的網頁D0M??梢砸栽S多方式開始該記錄操作,諸如,通過使瀏覽器使用應記錄顯示狀態(tài)的信號???例如)通過點擊瀏覽器Iio內的按鈕來執(zhí)行此信號。或者,可基于預定時間間隔或謂詞(predicate)通過在網頁內執(zhí)行的腳本111來觸發(fā)該記錄,該腳本111判定應記錄網頁的狀態(tài)。另外,作為捕獲客戶端瀏覽器的狀態(tài)的部分,腳本系統111還判定與網頁的顯示相關的元信息,諸如當前瀏覽器版本、屏幕分辨率、操作系統版本及其類似者。此元數據信息經捕獲且以一字符串表示。接下來,腳本系統111訪問網頁的每一DOM元素。對于DOM112內的每一元素,將HTML寫入至表示該元素的一字符串。舉例而言,若在DOM內遇到表元素,則寫入〈table〉標簽。還將每一元素中含有的數據寫入至該字符串。在其它實施例中,若認為元素為“敏感的”(諸如,密碼字段),則將不讀取該字段以防止記錄敏感數據。如操作201中所展示,接著經由一請求將含有元數據信息與瀏覽器DOMHTML的組合的字符串發(fā)送至服務器,該請求指示瀏覽器狀態(tài)保存。在操作203中,在于服務器處的請求處理例程121內處理該請求之后,元數據記錄函數202內的邏輯進一步處理保存有客戶端狀態(tài)的元數據及HTML,以供儲存于記錄數據儲存器140內。隨后,可存取服務器的記錄數據儲存器140的任何用戶可開啟所保存的數據,且通過使用元數據內指示的瀏覽器版本,該用戶可精確地瀏覽在狀態(tài)保存時用戶正瀏覽的內容。本領域技術人員將認識到,在本發(fā)明的范圍內的瀏覽器狀態(tài)記錄及數據收集技術可在許多服務器端環(huán)境內實現,諸如,圖2中描繪的簡單web服務器,或可與先進數據儲存、提取及分析技術的大型組合加以組合。特定而言,可實現記錄操作以產生儲存于所管理的儲存環(huán)境內的數據,該儲存環(huán)境諸如儲存局域網絡(SAN)、網絡附加儲存(NAQ器件、備份設施及設備及其它儲存資源。另外,可在自動化測試環(huán)境、管理器或其它虛擬環(huán)境的操作中選擇、啟動、重新建立及利用從客戶端瀏覽器收集的數據。舉例而言,可在遠程虛擬機客戶端內提取并重新建構該記錄,以在虛擬設置內提供對客戶端的瀏覽器經歷的實際模擬。接著為兩個非限制性實例,其示范額外的應用及對先前描述的記錄操作的使用。作為第一實例,可在服務來自web服務器的PHP或JSP網頁之后立即執(zhí)行瀏覽器狀態(tài)記錄操作。這將允許對客戶端接收的服務器產生HTML的精確分析,且使得能夠驗證服務器端邏輯及腳本正以指定方式操作。作為第二實例,可在已觸發(fā)JavMcript事件或已執(zhí)行某一特定JavMcript程序代碼之后執(zhí)行瀏覽器狀態(tài)記錄操作。在事件發(fā)生之后觸發(fā)記錄操作的原因是為了獲得當前選定的無線電按鈕的準確快照,形成值,及其類似者。在網頁輸入中的任一個正引起錯誤或非預期行為的情況下,這將輔助故障排除。圖3說明根據本發(fā)明的一實施例的用于執(zhí)行經由標記語言的客戶端瀏覽器狀態(tài)的服務器端記錄的實例操作的流程圖。首先,如步驟301中,開始記錄操作。該記錄操作可由用戶手動地開始、可以在某一確定時間周期自動地開始,或響應于諸如腳本中的預定邏輯的執(zhí)行而開始。接下來,如在步驟302中,腳本系統判定關于網頁及客戶端顯示環(huán)境的相關元數據信息,諸如,當前瀏覽器、屏幕分辨率及操作系統。編制此信息,且以文本格式儲存。接下來,如在步驟303中,腳本系統遍歷所顯示網頁的每一DOM元素。如在步驟304中,對于每一DOM元素,將HTML編制為表示該元素及其數據的字符串。舉例而言,若遇到表元素,則寫入〈table〉標簽,且將含有該元素的文本或任何其它數據寫入至該字符串。也可定義規(guī)則以排除來自諸如密碼字段的元素的數據收集。如在步驟305中,經由HTTP請求將表示瀏覽器狀態(tài)的字符串(其含有客戶端顯示環(huán)境元數據信息)及經編制的字符串(其含有HTML形式的網頁DOM的表示)傳輸至服務器。如在步驟306中,服務器經由針對數據而配置的任何儲存方法來將保存有狀態(tài)的元數據及HTML字符串記錄至其經配置的數據儲存器(datastore)中。最后,如在步驟307中,可存取該元數據及HTML字符串以用于進一步分析。舉例而言,可部署由元數據指示的瀏覽器以精確地瀏覽在狀態(tài)保存時用戶正瀏覽的內容??蓤?zhí)行適當的分析、測試和/或發(fā)展變化以補救非預期或無意的網頁行為。如本領域技術人員將了解,本發(fā)明可體現為一系統、方法或計算機程序產品。相應地,本發(fā)明可采用完全硬件實施例、完全軟件實施例(包括固體、常駐軟件、微碼等)或組合軟件與硬體方面的實施例的形式,這些實施例在本文中都可通稱為“電路”、“模塊”或“系統”。此外,本發(fā)明可采用體現于任何有形表現媒體中的計算機程序產品的形式,該有形表現媒體具有體現于該媒體中的計算機可用程序代碼??衫靡粋€或多個計算機可用或計算機可讀媒體的任何組合。舉例而言,計算機可用或計算機可讀媒體可為(但不限于)電子、磁性、光學、電磁、紅外線或半導體系統、裝置、器件或傳播媒體。計算機可讀媒體的更特定實例(非窮盡列表)將包括以下各項具有一個或多個導線的電連接件、攜帶型計算機盤片、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦除可編程只讀存儲器(EPR0M或閃存)、光纖、攜帶型緊密光盤只讀存儲器(CDROM)、光學儲存器件、傳輸媒體(諸如,支持因特網或內部網絡的傳輸媒體),或磁性儲存器件。應注意,計算機可用或計算機可讀媒體甚至可為程序被印刷于上面的紙張或另一合適媒體,因為該程序可經由(例如)對紙張或其它媒體的光學掃描來以電子方式捕獲,接著經編制、解譯或以合適方式另外處理(若必要),且接著儲存于計算機存儲器中。在此文件的背景下,計算機可用或計算機可讀媒體可為可含有、儲存、傳達、傳播或傳送由指令執(zhí)行系統、裝置或器件使用或與之結合而使用的程序的任何媒體。計算機可用媒體可包括在基頻中或作為載波的部分的其中體現有計算機可用程序代碼的傳播數據信號??墒褂萌魏芜m當的媒體(包括,但不限于,無線、有線線路、光纖電纜、RF等)來傳輸計算機可用程序代碼??梢砸环N或多種程序設計語言的任何組合撰寫用于執(zhí)行本發(fā)明的操作的計算機程序碼,該一種或多種編程語言諸如Java、Smalltalk、C++或其類似者的面向對象程序設計語言及諸如“C”程序設計語言的公知編程程序設計語言,或類似編程語言。程序代碼可完全在用戶的計算機上執(zhí)行、部分地在用戶的計算機上執(zhí)行、作為獨立軟件包執(zhí)行,部分地在用戶的計算機上執(zhí)行且部分地在遠程計算機上執(zhí)行,或完全在遠程計算機或服務器上執(zhí)行。在后一種情形中,遠程計算機可經由任何類型的網絡(包括局域網絡(LAN)或廣域網絡(WAN))連接至用戶的計算機,或可(例如,使用因特網服務提供者,經由因特網)連接至外部計算機。雖然上文已通過某種程度的特殊性來描述本發(fā)明的各種代表性實施例,但本領域技術人員可在不脫離在本說明書及權利要求書中闡述的發(fā)明性標的物的精神或范圍的情況下對所揭示的實施例進行許多變更。權利要求1.一種用于執(zhí)行客戶端瀏覽器狀態(tài)的服務器端記錄的方法,其包含在客戶端計算機系統上操作的瀏覽器內,從web服務器接收網頁內容;將該網頁內容顯示于該瀏覽器中;捕獲在該瀏覽器內所顯示的該網頁的狀態(tài);編制表示該瀏覽器的操作環(huán)境的元數據的字符串;遍歷該網頁的所捕獲狀態(tài)的每一文檔對象模型(DOM)元素;編制表示該網頁的所捕獲狀態(tài)內的每一DOM元素及其相關聯的數據的字符串;將該元數據及該DOM字符串發(fā)送至該web服務器;及將該元數據及該DOM字符串記錄于可由該web服務器存取的數據儲存器內。2.如權利要求1的方法,其中響應于網頁內容正顯示于該瀏覽器中而捕獲該網頁的狀態(tài)。3.如權利要求1的方法,其中響應于由該客戶端瀏覽器對腳本的執(zhí)行而捕獲該網頁的狀態(tài)。4.如權利要求1的方法,其中響應于從用戶接收到應記錄該網頁的該狀態(tài)的信號而捕獲該網頁的狀態(tài)。5.如任意先前權利要求的方法,其中在該網頁內執(zhí)行的腳本判定何時捕獲該網頁的狀態(tài)。6.如任意先前權利要求的方法,其中在該瀏覽器內所顯示的網頁的狀態(tài)包括由用戶提供的輸入值。7.如任意先前權利要求的方法,其中在HTTP請求內將該元數據及該DOM字符串發(fā)送至該web服務器。8.一種數據處理系統,其包含至少一個處理器;及至少一個存儲器,其儲存可通過所述至少一個處理器操作以用于執(zhí)行客戶端瀏覽器狀態(tài)的服務器端記錄的指令,所述指令經執(zhí)行以用于在客戶端計算機系統上操作的瀏覽器內,從web服務器接收網頁內容;將該網頁內容顯示于該瀏覽器中;捕獲在該瀏覽器內所顯示的該網頁的狀態(tài);編制表示該瀏覽器的操作環(huán)境的元數據的字符串;遍歷該網頁的所捕獲狀態(tài)的每一文檔對象模型(DOM)元素;編制表示該網頁的所捕獲狀態(tài)內的每一DOM元素及其相關聯的數據的字符串;將該元數據及該DOM字符串發(fā)送至該web服務器;及將該元數據及該DOM字符串記錄于可由該web服務器存取的數據儲存器內。9.如權利要求8的系統,其中響應于網頁內容正顯示于該瀏覽器中而捕獲該網頁的狀態(tài)。10.如權利要求8的系統,其中響應于由該客戶端瀏覽器對腳本的執(zhí)行而捕獲該網頁的狀態(tài)。11.如權利要求8的系統,其中響應于從用戶接收到應記錄該網頁的該狀態(tài)的信號而捕獲該網頁的狀態(tài)。12.如權利要求8至11中任一項的系統,其中在該網頁內執(zhí)行的腳本判定何時捕獲該網頁的狀態(tài)。13.如權利要求8至12中任一項的系統,其中在該瀏覽器內所顯示的該網頁的該狀態(tài)包括由用戶提供的輸入值。14.如權利要求8至13中任一項的系統,其中在HTTP請求內將該元數據及該DOM字符串發(fā)送至該web服務器。15.一種計算機程序產品,其包含具有計算機可讀程序的計算機可用媒體,該計算機可讀程序用于執(zhí)行客戶端瀏覽器狀態(tài)的服務器端記錄,其中該計算機可讀程序在于計算機上執(zhí)行時引起該計算機進行以下操作在客戶端計算機系統上操作的瀏覽器內,從web服務器接收網頁內容;將該網頁內容顯示于該瀏覽器中;捕獲在該瀏覽器內所顯示的該網頁的狀態(tài);編制表示該瀏覽器的操作環(huán)境的元數據的字符串;遍歷該網頁的所捕獲狀態(tài)的每一文檔對象模型(DOM)元素;編制表示該網頁的該所捕獲狀態(tài)內的每一DOM元素及其相關聯的數據的字符串;將該元數據及該DOM字符串發(fā)送至該web服務器;及將該元數據及該DOM字符串記錄于可由該web服務器存取的數據儲存器內。16.如權利要求15的計算機程序,其中響應于網頁內容正顯示于該瀏覽器中而捕獲該網頁的狀態(tài)。17.如權利要求15的計算機程序,其中響應于由該客戶端瀏覽器對腳本的執(zhí)行而捕獲該網頁的狀態(tài)。18.如權利要求15的計算機程序,其中響應于從用戶接收到應記錄該網頁的該狀態(tài)的信號而捕獲該網頁的狀態(tài)。19.如權利要求15至18中任一項的計算機程序,其中在該網頁內執(zhí)行的腳本判定何時捕獲該網頁的狀態(tài)。20.如權利要求15至19中任一項的計算機程序,其中在該瀏覽器內所顯示的網頁的狀態(tài)包括由用戶提供的輸入值。21.如權利要求15至20中任一項的計算機程序,其中在HTTP請求內將該元數據及該DOM字符串發(fā)送至該web服務器。22.—種計算機程序,包括當所述程序運行于計算機上時適用于執(zhí)行權利要求1至7中所有步驟的程序代碼部件。全文摘要本發(fā)明的一方面包括捕獲客戶端瀏覽器狀態(tài)且在標記文本內傳達這樣所捕獲的瀏覽器狀態(tài)以用于在web服務器處記錄。在一實施例中,遍歷由客戶端存取的網頁的DOM(文檔對象模型)的內容,且以字符串形式(諸如HTML)將所述內容寫為標記文字。除特定地用以識別瀏覽器顯示環(huán)境的元數據之外,還將此標記作為在HTTP請求內的文本從該客戶端傳輸至該服務器。該服務器可接著記錄該標記文本及該元數據以供稍后存取。該記錄的標記文本及該元數據可用以重新建立在該客戶端瀏覽器內發(fā)生的精確顯示,且因此提供對網頁問題判定、測試及開發(fā)有用的細節(jié)。文檔編號G06F17/30GK102272757SQ200980153164公開日2011年12月7日申請日期2009年12月7日優(yōu)先權日2009年1月8日發(fā)明者B·J·蘭德爾,J·A·史蒂文斯,J·R·普拉瑟,S·M·科恩申請人:國際商業(yè)機器公司