成人打一炮免费视频,亚洲天堂视频在线观看,97视频久久久,日本japanese护士色高清,五月婷婷丁香,日韩精品一级无码毛片免费,国产欧美日韩精品网红剧情演绎

客戶端側(cè)活動監(jiān)視的制作方法

文檔序號:11236540閱讀:323來源:國知局
客戶端側(cè)活動監(jiān)視的制造方法與工藝

本文檔通常描述用于監(jiān)視客戶端設(shè)備處的基于計算機(jī)的活動的特性的技術(shù),所述特性諸如在執(zhí)行異步活動時的時延,該技術(shù)可用于優(yōu)化那些活動的執(zhí)行(performance),從而減少客戶端設(shè)備執(zhí)行活動所需要的時間量。



背景技術(shù):

計算設(shè)備使得用戶能夠響應(yīng)于接收到指示用戶要執(zhí)行活動的意圖的輸入而執(zhí)行一系列活動。用戶可以從桌面或菜單界面中選擇應(yīng)用圖標(biāo),例如,以啟動應(yīng)用,或者可以從網(wǎng)頁內(nèi)選擇超鏈接以導(dǎo)航到另一頁面。隨著計算設(shè)備變得日益強(qiáng)大,用戶期望設(shè)備以最小響應(yīng)時間快速地反應(yīng)。在復(fù)雜的web應(yīng)用中,例如,用戶可以指令應(yīng)用生成指定的數(shù)據(jù)集的線圖。為了滿足用戶對最小響應(yīng)時間的期望,web應(yīng)用的開發(fā)者可以設(shè)法優(yōu)化執(zhí)行繪圖活動所需要的客戶端側(cè)和服務(wù)器側(cè)代碼以盡可能高效。



技術(shù)實現(xiàn)要素:

本文檔通常描述可用來確定、分析和/或報告關(guān)于客戶端計算設(shè)備處的活動的執(zhí)行的信息的系統(tǒng)、方法、設(shè)備和其它技術(shù)。在一些實施方式中,框架被實現(xiàn)在客戶端設(shè)備處以用于跟蹤活動執(zhí)行??蚣芸筛櫥顒与S著時間的推移的狀態(tài)并且可存儲關(guān)于活動的運(yùn)行的信息,包括指示活動的持續(xù)時間的信息。在一些實施方式中,框架可通過web頁面或web應(yīng)用中的腳本代碼來實現(xiàn)并且可記錄關(guān)于與活動相關(guān)聯(lián)的多個任務(wù)的運(yùn)行的信息,諸如指示每個任務(wù)的相應(yīng)的運(yùn)行時間的信息??蚣苋缓罂捎糜谑占瘡挠嬎阍O(shè)備的用戶觀點準(zhǔn)確地指示與活動相關(guān)聯(lián)的時延的信息。

本文中所描述的主題的一些實施方式包括計算機(jī)實現(xiàn)的方法。所述方法可包括在計算設(shè)備處接收用于由所述計算設(shè)備調(diào)用活動的執(zhí)行的用戶輸入。可識別與所述活動相關(guān)聯(lián)的計算機(jī)代碼的多個部分,其中,計算機(jī)代碼的所述多個部分當(dāng)中的計算機(jī)代碼的每個部分可被調(diào)度成由所述計算設(shè)備在不同的時間異步地運(yùn)行。針對與所述活動相關(guān)聯(lián)的計算機(jī)代碼的所述多個部分當(dāng)中的計算機(jī)代碼的每個部分,(i)可運(yùn)行計算機(jī)代碼的相應(yīng)部分,(ii)可記錄指示計算機(jī)代碼的相應(yīng)部分的運(yùn)行的持續(xù)時間的關(guān)于計算機(jī)代碼的相應(yīng)部分的運(yùn)行的數(shù)據(jù),并且(iii)可作出關(guān)于所述計算機(jī)代碼的至少一個后續(xù)部分是否也被要求被運(yùn)行以完成所述活動的確定??芍辽俨糠值鼗诰酆详P(guān)于計算機(jī)代碼的所述多個部分的運(yùn)行的所記錄的數(shù)據(jù)來提供到所述活動的完成的總時間。

這些和其它實施方式可可選地包括以下特征中的一個或多個。

可至少部分地基于計算機(jī)代碼的所述多個部分的所述持續(xù)時間的和來確定到所述活動的完成的所述總時間。

所述活動的計算機(jī)代碼的所述多個部分當(dāng)中的計算機(jī)代碼的每個部分可包括計算機(jī)代碼的相應(yīng)原始部分。

針對所述活動的計算機(jī)代碼的所述多個部分的至少子集中的計算機(jī)代碼的每個部分,可修改計算機(jī)代碼的該部分以包括(i)被布置成在計算機(jī)代碼的所述相應(yīng)原始部分被運(yùn)行之前被運(yùn)行的前期工作操作,以及(ii)被布置成在計算機(jī)代碼的所述相應(yīng)原始部分被運(yùn)行之后被運(yùn)行的后期工作操作。運(yùn)行計算機(jī)代碼的該部分可包括運(yùn)行計算機(jī)代碼的經(jīng)修改的部分,包括運(yùn)行(i)針對計算機(jī)代碼的該部分的所述前期工作操作、(ii)針對計算機(jī)代碼的該部分的計算機(jī)代碼的所述相應(yīng)原始部分以及(ii)針對計算機(jī)代碼的該部分的所述后期工作操作。

針對計算機(jī)代碼的每個經(jīng)修改部分的所述相應(yīng)前期工作操作當(dāng)被運(yùn)行時,可使所述計算設(shè)備使計算機(jī)代碼的所述相應(yīng)經(jīng)修改的部分與所述活動相關(guān)聯(lián)并且啟動或者恢復(fù)所述活動的定時器。針對計算機(jī)代碼的每個經(jīng)修改的部分的所述相應(yīng)后期工作操作在被運(yùn)行時可使所述計算設(shè)備在針對計算機(jī)代碼的所述相應(yīng)經(jīng)修改的部分的計算機(jī)代碼的對應(yīng)原始部分的運(yùn)行完成時暫停或者停止所述活動的所述定時器,使得用于運(yùn)行計算機(jī)代碼的所述對應(yīng)原始部分的所述持續(xù)時間被添加到所述定時器。

針對計算機(jī)代碼的每個經(jīng)修改的部分的所述相應(yīng)前期工作操作在被運(yùn)行時可使所述計算設(shè)備使計算機(jī)代碼的所述相應(yīng)經(jīng)修改的部分與所述活動相關(guān)聯(lián)并且記錄第一時間戳,所述第一時間戳識別針對計算機(jī)代碼的所述相應(yīng)經(jīng)修改的部分的計算機(jī)代碼的對應(yīng)原始部分的運(yùn)行的啟動時間。針對計算機(jī)代碼的每個經(jīng)修改的部分的所述相應(yīng)后期工作操作在被運(yùn)行時可使所述計算機(jī)設(shè)備記錄第二時間戳,所述第二時間戳識別針對計算機(jī)代碼的所述相應(yīng)經(jīng)修改的部分的計算機(jī)代碼的所述對應(yīng)原始部分的運(yùn)行完成了的結(jié)束時間。

針對計算機(jī)代碼的每個經(jīng)修改的部分的所述相應(yīng)前期工作操作在被運(yùn)行時可使所述計算設(shè)備在活動日志中將所述活動的狀態(tài)標(biāo)記為活躍。針對計算機(jī)代碼的每個經(jīng)修改的部分的所述相應(yīng)后期工作操作在被運(yùn)行時可使所述計算設(shè)備在所述活動日志中將所述活動的所述狀態(tài)標(biāo)記為掛起或結(jié)束。

所述活動日志可包括指示所述活動的所述狀態(tài)的第一條目以及指示由所述計算設(shè)備執(zhí)行的其它活動的狀態(tài)的其它條目。

針對計算機(jī)代碼的經(jīng)修改的部分中的第一經(jīng)修改的部分的所述后期工作操作在被運(yùn)行時可使所述計算設(shè)備:(i)確定是否仍要運(yùn)行計算機(jī)代碼的至少一個附加部分才能完成所述活動的執(zhí)行;以及(ii)響應(yīng)于確定仍要運(yùn)行計算機(jī)代碼的所述至少一個附加部分才能完成所述活動的執(zhí)行,在所述活動日志中將所述活動的所述狀態(tài)從活躍改變?yōu)閽炱稹?/p>

針對計算機(jī)代碼的經(jīng)修改的部分中的第一經(jīng)修改的部分的所述后期工作操作在被運(yùn)行時可使所述計算設(shè)備:(i)確定是否仍要運(yùn)行計算機(jī)代碼的至少一個附加部分才能完成所述活動的執(zhí)行;并且(ii)響應(yīng)于確定不要運(yùn)行計算機(jī)代碼的附加部分就能完成所述活動的執(zhí)行,在所述活動日志中將所述活動的所述狀態(tài)從活躍改變?yōu)榻Y(jié)束。

所述活動的計算機(jī)代碼的多個部分可被調(diào)度成在單個線程中異步地運(yùn)行,使得所述計算設(shè)備每次運(yùn)行計算機(jī)代碼的所述多個部分中的僅一個部分。

可運(yùn)行所述活動的所述計算機(jī)代碼的所述多個部分當(dāng)中的所述活動的所述計算機(jī)代碼的第一部分。不同活動的計算機(jī)代碼的至少一部分可由所述計算設(shè)備并且在運(yùn)行所述活動的所述計算機(jī)代碼的所述第一部分之后運(yùn)行。所述活動的所述計算機(jī)代碼的第二部分可由所述計算設(shè)備在運(yùn)行其它活動的所述計算機(jī)代碼的至少所述部分之后運(yùn)行。到所述活動的完成的所述總時間可包括運(yùn)行所述活動的所述計算機(jī)代碼的所述第一部分和所述活動的所述計算機(jī)代碼的所述第二部分的相應(yīng)的持續(xù)時間,但是可從到所述活動的完成的所述總時間中排除運(yùn)行所述不同活動的所述計算機(jī)代碼的至少所述部分的持續(xù)時間。

計算機(jī)代碼的所述多個部分可包括腳本代碼(諸如代碼)的相應(yīng)部分。

所述活動的計算機(jī)代碼的所述多個部分當(dāng)中的計算機(jī)代碼的第一部分在被運(yùn)行時可使所述計算設(shè)備向遠(yuǎn)離所述計算設(shè)備的服務(wù)器系統(tǒng)傳送遠(yuǎn)程過程調(diào)用。所述方法還可包括:(i)在所述計算設(shè)備處并且從所述服務(wù)器系統(tǒng)接收對所述遠(yuǎn)程過程調(diào)用的響應(yīng),以及(ii)在所述計算設(shè)備處記錄識別在向所述服務(wù)器系統(tǒng)傳送所述遠(yuǎn)程過程調(diào)用與接收到對所述遠(yuǎn)程過程調(diào)用的所述響應(yīng)之間經(jīng)過的時間長度的數(shù)據(jù)。

可至少部分地基于在向所述服務(wù)器系統(tǒng)傳送所述遠(yuǎn)程過程調(diào)用與接收到對所述遠(yuǎn)程過程調(diào)用的所述響應(yīng)之間經(jīng)過的所述時間長度來確定到所述活動的完成的總時間。

接收用于由所述計算設(shè)備調(diào)用所述活動的執(zhí)行的所述用戶輸入可包括識別所述用戶輸入已選擇顯示在所述計算設(shè)備的電子顯示器上的web頁面或應(yīng)用的用戶界面中的與所述活動相關(guān)聯(lián)的控件。

本文中所描述的主題的一些實施方式可包括一個或多個非暫時性計算機(jī)可讀介質(zhì)。所述介質(zhì)可存儲當(dāng)被運(yùn)行時導(dǎo)致操作的執(zhí)行的指令。所述操作可包括:在計算設(shè)備處接收用于由所述計算設(shè)備調(diào)用活動的執(zhí)行的用戶輸入;識別與所述活動相關(guān)聯(lián)的計算機(jī)代碼的多個部分,其中,計算機(jī)代碼的所述多個部分當(dāng)中的計算機(jī)代碼的每個部分被調(diào)度成由所述計算設(shè)備在不同的時間運(yùn)行;針對與所述活動相關(guān)聯(lián)的計算機(jī)代碼的所述多個部分當(dāng)中的計算機(jī)代碼的每個部分:運(yùn)行計算機(jī)代碼的相應(yīng)部分,記錄指示計算機(jī)代碼的相應(yīng)部分的運(yùn)行的持續(xù)時間的關(guān)于計算機(jī)代碼的相應(yīng)部分的運(yùn)行的數(shù)據(jù),并且確定所述計算機(jī)代碼的至少一個后續(xù)部分是否也被要求被運(yùn)行以完成所述活動;以及至少部分地基于聚合關(guān)于計算機(jī)代碼的所述多個部分的運(yùn)行的所記錄的數(shù)據(jù)來輸出到所述活動的完成的總時間。

本文中所描述的主題的一些實施方式包括計算設(shè)備。所述計算設(shè)備可包括一個或多個處理器、web瀏覽應(yīng)用和活動跟蹤器。所述web瀏覽應(yīng)用可包括渲染引擎、輸入處理機(jī)和腳本引擎??墒沟盟鲣秩疽婺軌蛏捎糜陲@示給用戶的web頁面的呈現(xiàn)??墒沟盟鲚斎胩幚頇C(jī)能夠檢測與所述web頁面的所述呈現(xiàn)的用戶交互,所述用戶交互指示用于由所述計算設(shè)備調(diào)用活動的運(yùn)行的意圖。所述腳本引擎可運(yùn)行所述web頁面的web代碼中的一個或多個腳本。所述活動跟蹤器可包括重新編碼引擎、定時器和活動日志??墒沟盟鲋匦戮幋a引擎能夠在所述活動的計算機(jī)代碼的部分由所述web瀏覽應(yīng)用運(yùn)行之前修改所述部分,所述修改包括針對計算機(jī)代碼的所述部分中的至少一些部分插入用于前期工作操作的代碼和用于后期工作操作的代碼,其中,所述重新編碼引擎給所述腳本引擎提供待運(yùn)行的計算機(jī)代碼的經(jīng)修改的部分而不是計算機(jī)代碼的對應(yīng)未修改的部分??墒沟盟龆〞r器能夠跟蹤所述活動的一個或多個運(yùn)行持續(xù)時間??墒沟盟龌顒尤罩灸軌虼鎯γ枋鏊龌顒拥乃鲆粋€或多個運(yùn)行持續(xù)時間的信息。

這些和其它實施方式可可選地包括以下特征中的一個或多個。用于所述前期工作操作的所述代碼在被運(yùn)行時可使所述計算設(shè)備將所述活動的狀態(tài)改變?yōu)榛钴S狀態(tài)。用于所述后期工作操作的所述代碼在被運(yùn)行時可使所述計算設(shè)備將所述活動的所述狀態(tài)改變?yōu)閽炱馉顟B(tài)或結(jié)束狀態(tài)。所述活動日志還可存儲識別所述活動的所述狀態(tài)的信息。

用于所述前期工作操作的所述代碼在被運(yùn)行時可使所述計算設(shè)備啟動或者恢復(fù)所述活動的所述定時器。用于所述后期工作操作的所述代碼在被運(yùn)行時可使所述計算設(shè)備停止或者暫停所述活動的所述定時器。

本文中所描述的主題的一些實施方式可以在某些實例中實現(xiàn)以下優(yōu)點中的一個或多個??纱_定反映由計算設(shè)備的用戶感知到的時延的在客戶端計算設(shè)備處至少部分地執(zhí)行的活動的總持續(xù)時間。例如,通過檢測與活動相關(guān)聯(lián)的每個任務(wù)的運(yùn)行開始和結(jié)束的時間,可準(zhǔn)確地確定由用戶經(jīng)歷的時延。在一些實施方式中,即便當(dāng)與活動相關(guān)聯(lián)的任務(wù)在該活動完成之前被立即啟動和暫停一次或多次時,也可確定與異步活動相關(guān)聯(lián)的時延。因此,即便在客戶端計算設(shè)備在與正被跟蹤的特定活動相關(guān)聯(lián)的任務(wù)之間時間交織其它活動的執(zhí)行的情況下,也可使被跟蹤活動的僅相關(guān)任務(wù)的持續(xù)時間隔離,使得可確定具體地與目標(biāo)活動相關(guān)聯(lián)的時延。在一些實施方式中,可提供用于跟蹤隨著時間推移的活動狀態(tài)的框架,所述框架允許計算設(shè)備準(zhǔn)確地跟蹤活動的完整生命周期。例如,可定義支配活動及其組成任務(wù)的狀態(tài)和標(biāo)識的規(guī)則??啥x所述規(guī)則以便減少假跟蹤事件的發(fā)生,所述假跟蹤事件諸如遺漏任務(wù)、任務(wù)與給定活動的錯誤關(guān)聯(lián)、以及活動的完成的過早檢測。本文中所公開的主題通過即便當(dāng)在給定異步活動的任務(wù)之間執(zhí)行其它異步活動的任務(wù)時也改進(jìn)客戶端設(shè)備跟蹤和/或報告客戶端設(shè)備花費來完成給定異步活動(例如,其包括多個分立地調(diào)度的任務(wù))的時間量的能力來改進(jìn)客戶端設(shè)備(例如,計算機(jī))的基本功能。

附圖說明

圖1描繪部分地在客戶端計算設(shè)備上并且部分地在服務(wù)器上執(zhí)行的示例活動的概念時序圖。

圖2是圖示根據(jù)一組規(guī)則的在活躍、掛起和結(jié)束狀態(tài)之間移動的活動狀態(tài)的示例狀態(tài)轉(zhuǎn)變圖。

圖3描繪用于確定在客戶端設(shè)備處異步地運(yùn)行的活動的相應(yīng)持續(xù)時間的示例性技術(shù)的概念圖。

圖4是用于跟蹤客戶端計算設(shè)備處的活動的時延的示例計算系統(tǒng)的框圖。

圖5a和圖5b提供用于修改異步地運(yùn)行的任務(wù)的計算機(jī)代碼以便實現(xiàn)活動跟蹤功能的示例過程的流程圖。

圖6a和圖6b描繪用于跟蹤計算設(shè)備處的異步活動的時延的示例過程的流程圖。

圖7示出可用于實現(xiàn)本文中所描述的技術(shù)的計算設(shè)備和移動計算設(shè)備的示例。

附圖當(dāng)中相同的標(biāo)記和符號指示相同的元件。

具體實施方式

本文檔通常描述用于跟蹤在計算設(shè)備上運(yùn)行的活動的系統(tǒng)、方法、設(shè)備和其它技術(shù)。以下公開使得能夠即使在活動的各部分可以在不相交的時間段期間發(fā)生的情況下也跟蹤多個不同的異步活動。例如,在給定活動完成之前,可以運(yùn)行不同活動的一個或多個任務(wù)。當(dāng)不同活動的一個或多個任務(wù)已完成時,可以繼續(xù)運(yùn)行給定活動的任務(wù)。在此示例中,完成給定活動所需要的時間量的準(zhǔn)確跟蹤和/或報告將考慮如下事實,即不同活動的操作在給定活動的操作的執(zhí)行中間被執(zhí)行。

活動通常是由計算設(shè)備(無論單獨還是與一個或多個其它計算機(jī)協(xié)調(diào))執(zhí)行的與調(diào)用了該活動的觸發(fā)事件有關(guān)的操作的任何合集。例如,觸發(fā)事件可以是與計算設(shè)備的用戶交互,所述用戶交互指示用戶刷新網(wǎng)頁上的股票報價器的意圖。響應(yīng)于用戶交互(即,觸發(fā)事件)而執(zhí)行的操作的合集可以被稱為活動。在一些情況下,活動可以由一組任務(wù)組成,該一組任務(wù)中的每個任務(wù)與運(yùn)行該活動所需的總體工作的一部分有關(guān)。任務(wù)因此可以是活動的在單個時間間隔內(nèi)運(yùn)行的操作的一部分(例如,活動的被調(diào)度以在給定時間被執(zhí)行的一組操作)。在股票報價器場景中,例如,用更新的報價刷新股票報價器的活動可以涉及用于識別在用戶的報價器中提供了哪些股票報價的第一任務(wù)、對服務(wù)器調(diào)度請求指示經(jīng)更新的報價的數(shù)據(jù)的遠(yuǎn)程過程調(diào)用的第二任務(wù)、對從服務(wù)器接收的報價進(jìn)行處理和格式化的第三任務(wù)、以及基于來自服務(wù)器的經(jīng)更新的報價來更新網(wǎng)頁中的股票報價器圖形的第四任務(wù)。附加任務(wù)當(dāng)然例如可以由服務(wù)器執(zhí)行,以實際地獲得經(jīng)更新的股票報價并且響應(yīng)于客戶端設(shè)備的請求而提供報價。

根據(jù)本文中所描述的技術(shù),客戶端計算設(shè)備處的活動跟蹤器可以跟蹤與活動相關(guān)聯(lián)的每個任務(wù)(或在客戶端計算設(shè)備處運(yùn)行的每個任務(wù))的運(yùn)行以針對該活動確定一個或多個執(zhí)行屬性。執(zhí)行屬性可包括例如與任何單獨的任務(wù)、任務(wù)的不同子集相關(guān)聯(lián)的時延(持續(xù)時間),或活動中的所有任務(wù)的總時延。然后可報告并分析由活動跟蹤器確定的信息以向網(wǎng)站運(yùn)營商、應(yīng)用開發(fā)者或其他人提供關(guān)于給定活動被客戶端設(shè)備執(zhí)行的有價值的見解。例如,開發(fā)者可能對精確地知道用戶選擇調(diào)用活動(例如,以更新股票報價器)的時間與用戶感知到活動完成(例如,瀏覽器用更新的股票報價重新渲染web頁面)的時間之間的時延感興趣??蛻舳藗?cè)監(jiān)視技術(shù)的一些實施方式可以準(zhǔn)確地且可靠地使得能實現(xiàn)這種信息的確定和置配。實施方式因此可以以視覺指示的形式提供輸出,所述視覺指示提供關(guān)于活動的操作的技術(shù)信息并且可以自動地提供關(guān)于在運(yùn)行活動的系統(tǒng)中流行的條件的信息。

在一些實施方式中,活動報價器可以被配置成跟蹤客戶端計算設(shè)備上的異步活動。異步活動通常是包括至少一個異步任務(wù)的活動。異步任務(wù)通常是在任務(wù)返回結(jié)果之前不阻止其它計算機(jī)操作的執(zhí)行的任務(wù)。例如,在股票報價器示例中,客戶端設(shè)備可以調(diào)用從服務(wù)器系統(tǒng)請求經(jīng)更新的股票報價信息的異步任務(wù)。存在在生成對經(jīng)更新的信息的請求、將該請求傳送到服務(wù)器并且接收經(jīng)更新的信息時所涉及的至少一些時延。然而,因為任務(wù)被異步地調(diào)用,所以計算設(shè)備可以在將請求傳送到服務(wù)器系統(tǒng)之后,繼續(xù)執(zhí)行其它操作同時計算設(shè)備等待來自服務(wù)器系統(tǒng)的對請求的響應(yīng)。在稍后的時間,在識別到服務(wù)器已響應(yīng)時,該響應(yīng)可以由計算設(shè)備處理,并且可以調(diào)用附加任務(wù)以使用通過服務(wù)器的響應(yīng)所指示的經(jīng)更新的股票報價來完成該活動。

應(yīng)該了解的是,盡管在本文中作為示例描述的一些任務(wù)對應(yīng)于活動的邏輯階段,然而并非所有任務(wù)可以符合此模型。替代地,例如,任務(wù)可以是被同時調(diào)度成為活動而運(yùn)行的工作的任何部分。例如,在每次僅運(yùn)行操作的一個線程的單線程計算環(huán)境中,設(shè)備可以在第一時間間隔期間對待針對第一活動執(zhí)行的第一系列操作進(jìn)行調(diào)度,然后可以在緊跟第一時間間隔之后的第二時間間隔期間對與不同活動有關(guān)的一系列操作進(jìn)行調(diào)度,并且然后可以在緊跟第二時間間隔之后的第三時間間隔期間對待針對第一活動執(zhí)行的第三系列操作進(jìn)行調(diào)度。第一系列操作和第三系列操作無論是否邏輯上相關(guān)都可以各自被稱為第一活動的相應(yīng)的任務(wù)。在一些實施方式中,每個任務(wù)可以被定義為活動的計算機(jī)代碼的相應(yīng)部分。

在一些實施方式中,本文中所描述的技術(shù)可以由客戶端計算設(shè)備上的采用腳本引擎的應(yīng)用(諸如由采用引擎(或另一腳本引擎)的web瀏覽應(yīng)用)來實現(xiàn)。如在整個本文檔中所使用的,術(shù)語引擎指代一組計算硬件,該組計算硬件被專門地配置成運(yùn)行使該組計算硬件運(yùn)行特定功能性的機(jī)器可讀指令。在此類實施方式中,可以通過由客戶端設(shè)備所解釋和運(yùn)行的腳本代碼來指定活動跟蹤器的框架。例如,包括用于響應(yīng)于與web頁面的用戶交互而執(zhí)行異步活動的代碼的web頁面可以包括用于實現(xiàn)活動跟蹤器以跟蹤這些活動的執(zhí)行的附加代碼。活動跟蹤器可以例如解釋將由計算設(shè)備執(zhí)行的任務(wù),重寫任務(wù)的代碼以包括用于啟動和暫?;顒佣〞r器并且日志記錄關(guān)于任務(wù)的運(yùn)行的信息的前期工作和后期工作操作。

腳本引擎可以是單線程的,使得對于網(wǎng)頁中定義的活動中的任何活動,每次僅可由設(shè)備運(yùn)行單個任務(wù)。腳本引擎(諸如引擎)可以實現(xiàn)允許使用回調(diào)函數(shù)異步地執(zhí)行腳本活動任務(wù)的事件循環(huán)。腳本引擎可以維護(hù)(例如,作為存儲在物理數(shù)據(jù)結(jié)構(gòu)(諸如計算機(jī)存儲器設(shè)備)中的數(shù)字?jǐn)?shù)據(jù))包括待由計算設(shè)備處理的消息列表的消息隊列和與消息相關(guān)聯(lián)的回調(diào)函數(shù)的指示。瀏覽器可以定期地輪詢消息隊列以識別隊列中的下一個消息并且然后運(yùn)行其關(guān)聯(lián)的回調(diào)函數(shù)(并且從隊列中清除該消息)?;卣{(diào)函數(shù)可以進(jìn)而生成被添加到隊列并且與回調(diào)函數(shù)相關(guān)聯(lián)的附加消息?;卣{(diào)函數(shù)可以每個都是與活動相關(guān)聯(lián)的任務(wù)。以這種方式,活動中的后續(xù)任務(wù)可由活動的先前任務(wù)動態(tài)地(例如,自動地)調(diào)度。如關(guān)于圖更詳細(xì)地描述的,活動跟蹤器可在一些實施方式中被實現(xiàn)在此框架中,以使前期工作和后期工作跟蹤操作緊接在客戶端設(shè)備處的活動的任務(wù)中的全部或一些之前和之后被執(zhí)行,以確定諸如與活動相關(guān)聯(lián)的任務(wù)的持續(xù)時間的有用信息。

圖1描繪部分地在客戶端計算設(shè)備上并且部分地在服務(wù)器上執(zhí)行的示例活動的概念時序圖100。該圖通常圖示活動的異步任務(wù)可以如何被調(diào)度和運(yùn)行并且活動的狀態(tài)可如何根據(jù)由客戶端設(shè)備上的活動跟蹤器所實現(xiàn)的規(guī)則來隨著時間的推移而改變。

在時序圖100中示出了被水平虛線分隔的三行,其中每行對應(yīng)于不同的處理線程。每行指示關(guān)于在當(dāng)活動開始時的時間t0與當(dāng)活動結(jié)束時的時間t7之間的一系列時間處的活動的方面的信息。特別地,頂部行表示瀏覽器線程102,中間行表示服務(wù)器線程104,并且底部行表示當(dāng)前活動狀態(tài)106??蛻舳司€程102識別當(dāng)客戶端計算設(shè)備正在運(yùn)行與活動相關(guān)聯(lián)的代碼時的時間。在本文中所描述的示例中,客戶端線程102是單線程的,使得僅與單個活動相關(guān)聯(lián)的代碼可由客戶端設(shè)備在任何一個時間運(yùn)行。此模型由諸如引擎的腳本引擎在常見的web瀏覽應(yīng)用中采用。

例如,考慮與將目標(biāo)內(nèi)容(諸如,例如從各種根本不同的源獲得的廣告)集成到針對給定用戶的網(wǎng)頁的呈現(xiàn)中有關(guān)的示例活動。網(wǎng)頁可以采用異步技術(shù),所述異步技術(shù)允許web頁面的其它部分在正為用戶獲取適當(dāng)?shù)膹V告(或其它第三方內(nèi)容)的同時加載并且被渲染在屏幕上。換句話說,加載廣告不應(yīng)該阻止web頁面的其它內(nèi)容被加載或者當(dāng)廣告被加載時防止與頁面的用戶交互。在此示例中,客戶端線程102中的塊108、114、116、118和120中的每一個指示由客戶端設(shè)備102針對廣告加載活動而執(zhí)行的異步工作(例如,任務(wù))的區(qū)塊??梢詮倪h(yuǎn)離客戶端計算設(shè)備的位于網(wǎng)絡(luò)上的ad服務(wù)器中檢索廣告,并且所以服務(wù)器線程104還包括表示與活動有關(guān)的由服務(wù)器執(zhí)行的工作(例如,任務(wù))的附加塊110和112。服務(wù)器可以是單線程的,使得每次可執(zhí)行僅一個任務(wù),或者是多線程的,使得可同時執(zhí)行多個任務(wù)。如圖1中所示,此示例中的服務(wù)器線程104是多線程的,因為這里服務(wù)器從時間t2到時間t3同時執(zhí)行任務(wù)110和112。

第三行表示從t0至t7的每個時間處的當(dāng)前活動狀態(tài)106。在一些實施方式中,活動跟蹤器可存儲描述活動在其生命周期期間的各個時間處的狀態(tài)的信息??筛鶕?jù)使得能夠跨越在不同的時間運(yùn)行的多個任務(wù)可靠地跟蹤活動的一組規(guī)則來確定活動的狀態(tài)。規(guī)則假設(shè)在任何給定時間,狀態(tài)可以采取如下三種狀態(tài)中的一種:(1)活躍、(2)掛起和(3)結(jié)束?!啊钴S’活動是目前正由客戶端計算設(shè)備運(yùn)行的活動?!畳炱稹顒邮悄壳安辉谟煽蛻舳嗽O(shè)備運(yùn)行但是尚未結(jié)束的活動?!Y(jié)束’活動是不存在與活動有關(guān)的待由客戶端計算設(shè)備運(yùn)行的附加任務(wù)的活動。在許多情況下,活動可能由于該活動已完成執(zhí)行而‘結(jié)束’。然而,活動也可能由于其它原因,諸如用戶在完成之前取消活動,或者由于發(fā)生防止活動的完成的錯誤而‘結(jié)束’。而且,因為客戶端設(shè)備上的腳本引擎被假定為單線程的,所以在任何給定時刻每次僅一個活動可被指定為‘活躍’。

在一些實施方式中,活動可以在與該活動相關(guān)聯(lián)的由客戶端設(shè)備執(zhí)行的任何異步工作期間被標(biāo)記為活躍,包括當(dāng)客戶端設(shè)備正在對服務(wù)器的遠(yuǎn)程過程調(diào)用進(jìn)行調(diào)度時和當(dāng)客戶端設(shè)備正在對與活動有關(guān)的將在將來的時間運(yùn)行的任務(wù)進(jìn)行調(diào)度時。最后,規(guī)則可以提供可以將活動設(shè)定為活動的兩種情形:(1)從活動被首次調(diào)用的時間起直到與活動相關(guān)聯(lián)的工作(例如,任務(wù))的初始區(qū)塊結(jié)束為止,以及(2)在與包括來自遠(yuǎn)程過程調(diào)用的回調(diào)的活動相關(guān)聯(lián)的任何后續(xù)異步工作(例如,任務(wù))期間。

簡要地轉(zhuǎn)向圖2,示出了具有根據(jù)本文中所描述的規(guī)則的活動狀態(tài)之間的轉(zhuǎn)變的示例狀態(tài)圖。在階段202處,活動諸如響應(yīng)于在客戶端設(shè)備處與web頁面的用戶交互而被啟動,所述用戶交互指示用戶調(diào)用活動的意圖??蛻舳嗽O(shè)備然后可以開始通過運(yùn)行第一異步任務(wù)來運(yùn)行活動。在第一異步任務(wù)的運(yùn)行期間,活動在階段202處被標(biāo)記為當(dāng)前。在一些實施方式中,任務(wù)可以由客戶端設(shè)備上的腳本引擎(諸如采用事件循環(huán)來異步地運(yùn)行任務(wù)的web瀏覽應(yīng)用中的引擎)來解釋和/或運(yùn)行。在第一異步任務(wù)完成時,事件循環(huán)結(jié)束并且活動跟蹤器檢查調(diào)度隊列(任務(wù)隊列),例如,以確定是否已經(jīng)針對活動對附加異步任務(wù)進(jìn)行了調(diào)度(階段204)。如果無附加任務(wù)被調(diào)度,則活動狀態(tài)轉(zhuǎn)變?yōu)椤Y(jié)束’,如在階段208處所指示的。如果活動跟蹤器根據(jù)調(diào)度隊列確定附加任務(wù)被調(diào)度成針對活動而運(yùn)行(即,確定活動未結(jié)束),則活動在第一異步任務(wù)完成時被標(biāo)記為‘掛起’,如在階段206處所指示的。稍后,當(dāng)活動的下一個異步任務(wù)被運(yùn)行時,活動的狀態(tài)被再次標(biāo)記為‘活躍’?;顒訝顟B(tài)在‘活躍’與‘掛起’之間的轉(zhuǎn)變可被重復(fù)一次或多次,直到對活動來說無另外的任務(wù)可用于被執(zhí)行為止,在此情況下活動被標(biāo)記為‘結(jié)束’。

再次參考圖1,示例活動的階段和對應(yīng)的狀態(tài)現(xiàn)在將被描述為從t0到t7的活動進(jìn)展。在t0,客戶端線程102開始與活動相關(guān)聯(lián)的第一異步任務(wù)108的運(yùn)行。在一些實施方式中,這可以響應(yīng)于調(diào)用活動的執(zhí)行的觸發(fā)事件(例如,用戶對web頁面或應(yīng)用的圖形用戶界面中的控件的選擇)而在客戶端設(shè)備的第一事件循環(huán)期間發(fā)生。從t0到t1第一任務(wù)108在客戶端線程102中運(yùn)行。從時間t1開始,任務(wù)108對遠(yuǎn)離客戶端設(shè)備的服務(wù)器做出第一遠(yuǎn)程過程調(diào)用??梢酝ㄟ^網(wǎng)絡(luò)向服務(wù)器傳送第一遠(yuǎn)程過程調(diào)用,并且在t1(或者由于網(wǎng)絡(luò)傳輸時間在t1之后不久),服務(wù)器線程104調(diào)用第二任務(wù)110。在第一任務(wù)108隨著它在客戶端線程102中被運(yùn)行的持續(xù)時間內(nèi),當(dāng)前活動狀態(tài)是‘活躍’。

在時間t2,客戶端設(shè)備上的事件循環(huán)結(jié)束,并且因此第一任務(wù)108的執(zhí)行隨著它而結(jié)束。從時間t2到時間t3,客戶端線程未在運(yùn)行任何任務(wù),或者在以其它方式執(zhí)行與活動相關(guān)聯(lián)的工作。因此,活動跟蹤器可將從t2到t3的活動的狀態(tài)標(biāo)記為‘掛起’。在此時段期間,客戶端設(shè)備未必是不活躍的。相反,因為客戶端可以異步地運(yùn)行任務(wù),所以例如,可以在等待對針對圖1中圖示的特定活動的第一遠(yuǎn)程過程調(diào)用的響應(yīng)的同時運(yùn)行與其它活動相關(guān)聯(lián)的任務(wù)。另外,因為‘活躍’狀態(tài)通常依賴于客戶端設(shè)備(而不是服務(wù)器)是否目前正在運(yùn)行與活動相關(guān)聯(lián)的任務(wù),所以服務(wù)器線程102從t2到t3正在執(zhí)行活動的工作的事實不在此時段期間使活動狀態(tài)106變成‘活躍’。另外在t2,在第一任務(wù)108結(jié)束之前,客戶端線程102做出第二遠(yuǎn)程過程調(diào)用,所述第二遠(yuǎn)程過程調(diào)用進(jìn)而使服務(wù)器線程104調(diào)用第二服務(wù)器任務(wù)112。服務(wù)器可以是多線程的,例如,從而允許服務(wù)器任務(wù)110和112在它們相應(yīng)的持續(xù)時間的至少一部分內(nèi)同時運(yùn)行。

在時間t3,客戶端設(shè)備從服務(wù)器接收對第一遠(yuǎn)程過程調(diào)用的響應(yīng),這使任務(wù)114在客戶端線程102中被調(diào)用以處理該響應(yīng)。例如,可以將服務(wù)器的響應(yīng)放在使響應(yīng)消息與回調(diào)函數(shù)相關(guān)聯(lián)的消息隊列中。客戶端可以輪詢消息隊列以識別已經(jīng)接收到對第一遠(yuǎn)程過程調(diào)用的響應(yīng),并且作為響應(yīng)運(yùn)行所關(guān)聯(lián)的回調(diào)函數(shù)作為任務(wù)114。在任務(wù)14的運(yùn)行期間,活動的狀態(tài)是‘活躍’。在時間t4,任務(wù)114緊接在任務(wù)114之后開始(或者任務(wù)116可以是任務(wù)114的終止部分)?;谔幚韺Φ谝贿h(yuǎn)程過程調(diào)用的響應(yīng)的結(jié)果,客戶端設(shè)備在t4可以異步地更新web頁面或應(yīng)用的用戶界面?;顒訝顟B(tài)從t4起保持‘活躍’直到任務(wù)116完成為止。

同時,從t4到t5,網(wǎng)絡(luò)線程104繼續(xù)處理響應(yīng)于第二遠(yuǎn)程過程調(diào)用而調(diào)用了的任務(wù)112。針對緊跟客戶端的任務(wù)116完成之后的這個間隔的部分,活動被標(biāo)記有‘掛起’狀態(tài)。在時間t5,任務(wù)112完成,并且響應(yīng)消息被傳送到客戶端設(shè)備。在一些實施方式中,響應(yīng)消息可以被添加到客戶端的異步消息隊列并且與回調(diào)函數(shù)相關(guān)聯(lián)。在接收到消息時,客戶端設(shè)備可以處理對第二遠(yuǎn)程過程調(diào)用的響應(yīng)(例如,以使響應(yīng)去序列化)。此處理通過客戶端線程102中的任務(wù)118的塊來表示?;谔幚淼慕Y(jié)果,從時間t6到時間t7附加任務(wù)120在客戶端線程102中被調(diào)度和運(yùn)行。活動跟蹤器可在兩個任務(wù)118和120的執(zhí)行期間將活動的活動狀態(tài)106標(biāo)記為‘活躍’。

在時間t7,客戶端線程102完成活動的最終任務(wù)120的運(yùn)行,并且活動跟蹤器然后將活動的狀態(tài)從‘活躍’改變?yōu)椤Y(jié)束’。在一些實施方式中,活動跟蹤器可通過檢查任務(wù)隊列以確定是否已經(jīng)針對活動對任何附加任務(wù)進(jìn)行了調(diào)度來確定活動已結(jié)束。如果附加任務(wù)已被調(diào)度,則活動跟蹤器可識別活動未完成,并且因此將活動標(biāo)記為‘掛起’。然而,如果在隊列中未對附加任務(wù)進(jìn)行調(diào)度,則活動跟蹤器可識別活動完成,并且因此將活動標(biāo)記為‘結(jié)束’。

在一些實施方式中,客戶端設(shè)備處的活動跟蹤器可監(jiān)視活動在其運(yùn)行過程中的運(yùn)行。例如,活動跟蹤器可以跟蹤活動的單獨的任務(wù)的持續(xù)時間,使得可通過聚合活動的任務(wù)中的全部或一些的持續(xù)時間來確定與活動相關(guān)聯(lián)的總時延。因此,為了確定圖1的時序圖中所描繪的活動的總時延,活動跟蹤器可以確定來自客戶端線程102的任務(wù)108、114、116、118和120的相應(yīng)的持續(xù)時間,并且還可以在客戶端正在等待服務(wù)器對遠(yuǎn)程過程調(diào)用的響應(yīng)的時間上增加。

例如,可維護(hù)記錄客戶端裝置上的持續(xù)時間(或可用于確定持續(xù)時間的信息,諸如標(biāo)記每個被運(yùn)行任務(wù)的開始和結(jié)束時間的時間戳)的活動日志。如關(guān)于圖3至圖6在下面進(jìn)一步描述的,活動跟蹤器可在一些實施方式中記錄遠(yuǎn)程過程調(diào)用被做出的時間和從服務(wù)器接收到對調(diào)用的響應(yīng)的時間。在做出調(diào)用與接收到響應(yīng)之間的網(wǎng)絡(luò)時延然后可被報告和/或使用來確定時延的其它量度,包括活動的總時延。

在一些實施方式中,活動跟蹤器可以消除多個任務(wù)正在網(wǎng)絡(luò)線程104上運(yùn)行的時間期間的冗余時延。例如,為了確定圖1中的總活動時延,活動跟蹤器可以取任務(wù)108、114、116、118和120的運(yùn)行持續(xù)時間的和,并且還可以將當(dāng)客戶端設(shè)備等待來自服務(wù)器對客戶端的遠(yuǎn)程過程調(diào)用的響應(yīng)時活動掛起的那些時間添加到該和。在一些實施方式中,可以使用由活動跟蹤器收集的數(shù)據(jù)來計算除總活動時延以外的時延。例如,可以跟蹤僅客戶端側(cè)時延(例如,任務(wù)108、114、116、118和120的聚合持續(xù)時間)并且/或者可以與客戶端側(cè)時延分開地確定總服務(wù)器時延。

圖3描繪用于確定在客戶端計算設(shè)備處異步地運(yùn)行的活動的相應(yīng)的持續(xù)時間的示例性技術(shù)的概念圖。盡管圖1的時序圖出于圖示目的僅示出正由客戶端設(shè)備運(yùn)行的單個活動,然而在實踐中,客戶端設(shè)備可以通過在單個客戶端側(cè)線程102中復(fù)用活動的各種任務(wù)來運(yùn)行多個不同的活動。例如,即便當(dāng)引擎也對要求幾乎立即響應(yīng)的用戶交互做出響應(yīng)時,web瀏覽器中的引擎也可以對web頁面中的內(nèi)容的各部分執(zhí)行自動異步更新。異步地運(yùn)行任務(wù)的一個好處是它們不必阻止其它任務(wù)的執(zhí)行直到調(diào)用任務(wù)已完成為止。例如,在圖1中,客戶端線程102能在第一活動‘掛起’的同時在從t2到t3的間隔期間運(yùn)行其它活動的任務(wù)。當(dāng)然,任務(wù)的異步性質(zhì)可變得更難以確定諸如總活動時延的活動特性,因為可以在目標(biāo)活動的任務(wù)的運(yùn)行之間的時隙中執(zhí)行其它活動的任務(wù)。例如,應(yīng)用開發(fā)者可能希望使僅隔離與和正被跟蹤的目標(biāo)活動相對應(yīng)的任務(wù)相關(guān)聯(lián)的時延,同時移除任務(wù)的對應(yīng)于其它時延的其它時延。因此,即使用戶可以在調(diào)用目標(biāo)活動的用戶交互與活動的完成之間經(jīng)歷2.3秒延遲,時延的僅1.1秒也可以歸因于目標(biāo)活動它本身,而其它1.2秒可以歸因于具有在目標(biāo)活動的某任務(wù)之間運(yùn)行了的任務(wù)的一個或多個活動。

在圖3的示例中,8個任務(wù)302至316被描繪為由計算設(shè)備處的單線程腳本引擎在一定時間段期間相繼地運(yùn)行,如通過在圖的左部的垂直時間條所指示的。在此集合當(dāng)中首先被運(yùn)行的任務(wù)是作為活動1的第一任務(wù)的任務(wù)302??梢栽谝恍嵤┓绞街凶鳛閣eb頁面或應(yīng)用中的腳本代碼被實現(xiàn)的客戶端設(shè)備處的活動跟蹤器在它開始在客戶端線程中運(yùn)行時啟動活動1的定時器并且在任務(wù)302完成時暫停該定時器。

緊跟任務(wù)302之后,異步任務(wù)304作為不同的第二活動(活動2)的第一任務(wù)被運(yùn)行?;顒痈櫰髟谌蝿?wù)304開始運(yùn)行時將活動2標(biāo)記為活躍并且啟動活動2的定時器。一旦任務(wù)304完成,活動跟蹤器就暫?;顒?的定時器304并且將任務(wù)304的持續(xù)時間記錄在活動日志中。可針對活動1和2以及活動3的后續(xù)運(yùn)行的任務(wù)306至316中的每一個執(zhí)行類似的操作,使得任務(wù)306至316中的每一個的單獨的持續(xù)時間被捕獲或者添加到活動1、2和3中的每一個的相應(yīng)的定時器。

當(dāng)給定活動已結(jié)束時,可合計或者以其它方式聚合與該給定活動相關(guān)聯(lián)的任務(wù)中的每一個的持續(xù)時間以確定總活動時延。例如,活動1的總活動時延318可以基于任務(wù)302、306、310和316的相應(yīng)的持續(xù)時間。同樣地,活動2的總活動時延320可以基于任務(wù)304和315的相應(yīng)的持續(xù)時間,并且活動3的總活動時延322可以基于308和312的相應(yīng)的持續(xù)時間。在一些實施方式中,可以將總活動時延318、320和322存儲在客戶端計算機(jī)上或服務(wù)器上的活動日志324中。

現(xiàn)在參考圖4,示出了用于跟蹤客戶端計算設(shè)備402處的活動的時延的示例系統(tǒng)400的框圖。在一些實施方式中,系統(tǒng)400可以執(zhí)行本文中所描述的過程和計算機(jī)實現(xiàn)的方法,包括過程502和504(圖5a和圖5b)以及過程600(圖6a和圖6b)。系統(tǒng)400通常包括通過諸如互聯(lián)網(wǎng)的網(wǎng)絡(luò)406通信的客戶端計算設(shè)備402和計算機(jī)服務(wù)器系統(tǒng)404。盡管通過圖示按照特定布置描繪系統(tǒng)400的某些組件,然而其它布置也是可能的。例如,活動跟蹤器410可以是web瀏覽器408的組件,或者活動跟蹤器410的單獨的組件可以由活動跟蹤器410、瀏覽器408或兩者來實現(xiàn)。

客戶端設(shè)備402通??梢允侨魏晤愋偷挠脩粲嬎阍O(shè)備,諸如桌面型計算機(jī)、筆記本計算機(jī)、上網(wǎng)本、智能電話、平板計算設(shè)備或智能手表或其它可穿戴設(shè)備。在一些實施方式中,客戶端設(shè)備402可以是一種連接的智能設(shè)備(例如,物聯(lián)網(wǎng)設(shè)備),諸如基于計算機(jī)的電源插座、廚房器具、煙檢測器或恒溫器。計算設(shè)備402可包括web瀏覽器408、活動跟蹤器410和網(wǎng)絡(luò)接口412。

網(wǎng)絡(luò)接口412被啟用來通過一個或多個網(wǎng)絡(luò)與其它計算設(shè)備進(jìn)行通信。例如,網(wǎng)絡(luò)406可以是有線或無線網(wǎng)絡(luò)并且可以是局域網(wǎng)或廣域網(wǎng)。在一些實施方式中,網(wǎng)絡(luò)接口412被啟用來通過互聯(lián)網(wǎng)與服務(wù)器系統(tǒng)404進(jìn)行通信。服務(wù)器系統(tǒng)404可以包括向客戶端計算設(shè)備402提供內(nèi)容的一個或多個計算機(jī)。服務(wù)器系統(tǒng)404可以向客戶端計算設(shè)備402推送內(nèi)容并且/或者可以響應(yīng)于由客戶端設(shè)備402發(fā)起的請求而向客戶端設(shè)備402提供內(nèi)容。在一些實施方式中,服務(wù)器系統(tǒng)404可以包括用于托管web頁面和基于web的應(yīng)用的web服務(wù)器434。

在一些實施方式中,服務(wù)器系統(tǒng)404可以利用計算機(jī)代碼(例如,或另一腳本)向客戶端設(shè)備402指示它服務(wù)的內(nèi)容,所述計算機(jī)代碼在客戶端設(shè)備402運(yùn)行所指示的內(nèi)容時實現(xiàn)客戶端設(shè)備處的活動跟蹤器410。例如,服務(wù)器434可以嵌入或者引用web頁面的html文件中的代碼。代碼可以被配置成在它由web瀏覽器408運(yùn)行時執(zhí)行針對可以由web頁面產(chǎn)生的一個或多個活動的活動跟蹤器410的動作。

在一些實施方式中,服務(wù)器系統(tǒng)404可以包括活動分析器436。服務(wù)器系統(tǒng)404上的該活動分析器436可以執(zhí)行與客戶端設(shè)備402上的活動分析器424類似的操作。例如,活動分析器436可以處理記錄在活動日志412中的信息以確定活動的執(zhí)行特性,諸如活動的總時延或活動的某些部分的時延。在一些實施方式中,然后可調(diào)整從服務(wù)器系統(tǒng)404服務(wù)的內(nèi)容的一個或多個參數(shù)以優(yōu)化為客戶端設(shè)備隨后服務(wù)的內(nèi)容的執(zhí)行特性(例如,減少可以從內(nèi)容調(diào)用的活動的活動時延)。在一些實施方式中,可生成示出由客戶端設(shè)備運(yùn)行的一個或多個活動的時延或其它執(zhí)行特性的報告?;顒臃治銎?36也可以在一些實施方式中使用高級統(tǒng)計技術(shù)來確定可以考慮客戶端設(shè)備處的活動的時延或其它運(yùn)行特性方面的差異的不同的客戶端設(shè)備的特性。

客戶端設(shè)備402處的web瀏覽器408可以是能夠呈現(xiàn)web頁面、運(yùn)行腳本代碼(例如,)并且運(yùn)行基于web的應(yīng)用的標(biāo)準(zhǔn)web瀏覽應(yīng)用。web瀏覽器408可以包括輸入處理機(jī)426、渲染引擎428和腳本引擎430。輸入處理機(jī)426通常可操作來接收針對web頁面的用戶輸入或由web瀏覽器408所呈現(xiàn)的其它內(nèi)容。例如,輸入處理機(jī)426可以包括用于檢測打字輸入的鍵盤處理程序、用于檢測口語輸入的語音處理程序、用于檢測觸摸屏手勢的觸摸處理程序、和/或用于檢測鼠標(biāo)或觸針輸入的指針處理程序。輸入處理機(jī)426可以監(jiān)視一個或多個用戶輸入通道以檢測用戶輸入何時已被接收到web瀏覽器408,并且可在已經(jīng)檢測到這種輸入時向瀏覽器408的其它組件報警(例如,通過中斷)。例如,輸入處理機(jī)426可以檢測用戶已經(jīng)由觸摸、語音或以其它方式選擇了調(diào)用待執(zhí)行的異步活動的web頁面中的菜單項。

渲染引擎428通??刹僮鱽斫馕鰓eb代碼并且生成用于呈現(xiàn)給用戶的web頁面的圖形呈現(xiàn)。在一些實施方式中,渲染引擎428解析超文本標(biāo)記語言(html)和相關(guān)代碼(例如,級聯(lián)樣式表(css)、)以構(gòu)造web頁面的文檔對象模型(dom)表示,并且然后基于dom構(gòu)建web頁面的圖形表示。腳本引擎430通常被配置成解釋并運(yùn)行web頁面中的腳本或由web瀏覽器408加載的其它內(nèi)容。在一些實施方式中,腳本引擎430可以是使得web頁面能夠包括由腳本引擎430所運(yùn)行的異步活動的引擎。

客戶端設(shè)備402處的活動跟蹤器410通常被配置成跟蹤至少部分地在客戶端設(shè)備402處運(yùn)行的活動的執(zhí)行。例如,活動跟蹤器410可收集可用于確定活動時延的關(guān)于活動運(yùn)行的數(shù)據(jù)。在一些實施方式中,活動跟蹤器410可包括活動日志412、活動定時器416、調(diào)度器418、攔截與記錄引擎420、報告引擎422以及活動分析器424。活動跟蹤器410、調(diào)度器418、攔截與記錄引擎420、報告引擎422以及活動分析器424可各自作為一組計算硬件(例如,一個或多個處理器)被實現(xiàn),該組計算硬件被專門地配置成運(yùn)行使該組計算硬件執(zhí)行如本文中所描述的特定功能性的機(jī)器可讀指令。

攔截與記錄引擎420可識別正由web瀏覽器408呈現(xiàn)的web頁面中的活動已被調(diào)用并且將被運(yùn)行。在一些實施方式中,攔截與記錄引擎420可以攔截用于由軟件調(diào)用(invoke)活動的調(diào)用(calls),所述軟件在調(diào)用被web瀏覽器的腳本引擎430運(yùn)行之前將此類調(diào)用重定向到活動跟蹤器410。例如,當(dāng)用戶選擇web頁面的圖形界面中的控件以調(diào)用異步活動時,輸入處理機(jī)426可識別輸入并且向腳本引擎報警事件。腳本引擎430可識別將針對活動而執(zhí)行的任務(wù)并且可給攔截與記錄引擎420提供該任務(wù)的指示。攔截與記錄引擎420然后可重寫或者以其它方式修改任務(wù)的計算機(jī)代碼以包括前期工作操作、后期工作操作、或既前期工作又后期工作操作。

前期工作和后期工作操作可以使腳本引擎430在經(jīng)重寫的任務(wù)代碼由腳本引擎430運(yùn)行時執(zhí)行由活動跟蹤器410定義的操作。例如,前期工作操作當(dāng)被運(yùn)行時,可以使腳本引擎430輸出與任務(wù)相關(guān)聯(lián)的活動的標(biāo)識符,以在活動日志412中生成將任務(wù)的狀態(tài)標(biāo)記為‘活躍’的條目,并且以啟動活動的定時器416。在前期工作操作完成之后,可以運(yùn)行實際的任務(wù)。

在任務(wù)結(jié)束時,后期工作操作430當(dāng)被運(yùn)行時,可以使腳本引擎430檢查調(diào)度器418中的任務(wù)隊列以確定任何附加任務(wù)是否被調(diào)度成針對活動而運(yùn)行。如果任務(wù)隊列指示無附加任務(wù)被調(diào)度成被執(zhí)行,或者如果以其它方式確定了活動完成,則后期工作操作當(dāng)被運(yùn)行時可以停止定時器,更新活動日志412以記錄任務(wù)的持續(xù)時間,并且將活動的當(dāng)前狀態(tài)標(biāo)記為‘結(jié)束’。然而,如果任務(wù)隊列指示已經(jīng)針對活動對至少一個附加任務(wù)進(jìn)行了調(diào)度,或者如果以其它方式確定了活動未結(jié)束,則后期工作操作當(dāng)被運(yùn)行時可以暫停定時器(其可稍后在下一個任務(wù)被運(yùn)行時被恢復(fù)),更新活動日志412以記錄任務(wù)的持續(xù)時間,并且將活動的當(dāng)前狀態(tài)標(biāo)記為‘掛起’。在一些實施方式中,活動跟蹤器通常可實施用于以關(guān)于圖1和圖2所描述的方式標(biāo)記活動狀態(tài)的規(guī)則。

圖5a和圖5b描繪攔截與記錄引擎420可以對與特定任務(wù)相關(guān)聯(lián)的活動代碼執(zhí)行的變換的示例。特別地,圖5a描繪將在計算設(shè)備402上運(yùn)行的異步任務(wù)的記錄??上驍r截與記錄引擎420提供與任務(wù)相關(guān)聯(lián)的原始代碼502a,并且生成代碼的修改的版本504a。經(jīng)修改的代碼504a包括前期工作操作、任務(wù)的原始代碼和后期工作操作。經(jīng)修改的代碼504a然后可在一些實施方式中由瀏覽器408中的腳本引擎430來運(yùn)行。

圖5b描繪涉及對服務(wù)器系統(tǒng)404或另一服務(wù)器做出遠(yuǎn)程過程調(diào)用的任務(wù)的代碼的記錄。在此示例中,原始代碼502b被再次記錄以生成修改的代碼504b,包括前期工作和后期工作操作。針對遠(yuǎn)程過程調(diào)用的前期工作操作可以啟動識別對服務(wù)器做出了調(diào)用的時間的定時器。在定時器被啟動、任何其它前期工作操作完成并且遠(yuǎn)程過程調(diào)用被做出之后,可以執(zhí)行其它任務(wù)直到在計算設(shè)備402處接收到對遠(yuǎn)程過程調(diào)用的響應(yīng)為止。在檢測到對遠(yuǎn)程過程調(diào)用的響應(yīng)時,可以做出回調(diào)以運(yùn)行后期工作操作,這停止定時器使得可在當(dāng)計算設(shè)備402做出了遠(yuǎn)程過程調(diào)用時與當(dāng)計算設(shè)備402接收到對遠(yuǎn)程過程調(diào)用的響應(yīng)時之間確定網(wǎng)絡(luò)時延。

在一些實施方式中,活動跟蹤器410可包括使得能夠監(jiān)視活動的時延或其它執(zhí)行特性的一個或多個附加組件。活動日志412可包括記錄在計算設(shè)備402處的關(guān)于活躍、掛起或結(jié)束的一個或多個活動的信息?;顒尤罩?12可以包括每個活動的記錄414a-n,并且記錄414a-n可以包括與相應(yīng)的活動有關(guān)的事件的條目。條目可以指示例如唯一活動id、唯一任務(wù)id、活動的當(dāng)前狀態(tài)、活動的累積持續(xù)時間以及諸如任務(wù)的運(yùn)行的開始和結(jié)束的識別何時發(fā)生了事件的時間戳。報告引擎422可以不時將活動日志412傳送到服務(wù)器系統(tǒng)404以允許活動分析器436處理日志412。在一些實施方式中,調(diào)度器418與計算設(shè)備402上的任務(wù)隊列交互以對異步任務(wù)進(jìn)行調(diào)度。任務(wù)隊列例如可以由瀏覽器408輪詢,并且可以運(yùn)行調(diào)度器418已在隊列中列舉的一個或多個任務(wù)。

圖6a描繪用于跟蹤計算設(shè)備處的異步活動的時延的示例過程600的流程圖。在一些實施方式中,過程600可以由本文中所描述的設(shè)備和系統(tǒng)(包括圖4中所描繪的計算系統(tǒng)400)來執(zhí)行。盡管該流程圖描繪以特定次序發(fā)生的過程600的各個階段,然而可以在一些實施方式中并行地或者以與圖6的示例過程600中所描繪的次序不同的次序執(zhí)行某些階段。

在階段602處,計算設(shè)備接收用于調(diào)用活動的輸入。在一些實施方式中,可以諸如通過對web頁面中或設(shè)備上的應(yīng)用的圖形用戶界面中的控件的選擇來從用戶接收輸入。計算設(shè)備可以將輸入識別為用于在接收到該輸入時立即或者在指定延遲之后調(diào)用活動的指令。例如,輸入處理機(jī)426可檢測用戶輸入并且與web瀏覽器408和/或活動跟蹤器410的其它組件進(jìn)行通信以對該輸入做出響應(yīng)。在一些實施方式中,其它觸發(fā)事件可以使計算設(shè)備調(diào)用活動的執(zhí)行。例如,web頁面可以在預(yù)定義時間或者在檢測到其它非用戶發(fā)起的事件時自主地執(zhí)行異步更新或其它活動。

在階段604處,響應(yīng)于接收到用戶輸入,計算設(shè)備對待針對活動而執(zhí)行的第一任務(wù)進(jìn)行調(diào)度?;顒拥牡谝蝗蝿?wù)和其它任務(wù)可以是異步的,使得在給定任務(wù)已被調(diào)用之后,當(dāng)正在針對給定任務(wù)確定響應(yīng)時同一活動或另一活動的其它任務(wù)可以由計算設(shè)備運(yùn)行。因此,異步活動可以通過單獨地執(zhí)行與活動相關(guān)聯(lián)的一系列單獨的任務(wù)來完成,其中每個任務(wù)表示完成活動所需要的總體工作的一部分??梢酝ㄟ^活動的計算機(jī)代碼的相應(yīng)部分來定義每個任務(wù)。

在一些實施方式中,可通過將任務(wù)的指示放在隊列(諸如用于瀏覽器事件循環(huán)的隊列)中來對任務(wù)進(jìn)行調(diào)度。瀏覽器可以定期地輪詢事件循環(huán)以確定是否已經(jīng)針對一個或多個活動對任何異步任務(wù)進(jìn)行了調(diào)度,并且如果是這樣的話,則可以執(zhí)行這些任務(wù)中的一個或多個??梢詫㈥犃袠?gòu)造為先進(jìn)先出隊列,或者可以對某些任務(wù)進(jìn)行優(yōu)先級排序,使得更近調(diào)度的任務(wù)優(yōu)于另一任務(wù)跳轉(zhuǎn)并且使瀏覽器在較舊任務(wù)之前執(zhí)行更近的任務(wù)。

在給定任務(wù)的運(yùn)行期間,任務(wù)它本身可以包括要求被執(zhí)行以完成活動的一個或多個附加異步任務(wù)(例如,子任務(wù))。因此,當(dāng)前運(yùn)行的任務(wù)可以使瀏覽器或活動跟蹤器對活動的后續(xù)任務(wù)進(jìn)行調(diào)度,所述后續(xù)任務(wù)進(jìn)而被添加到隊列。以這種方式,可以不在接收到用戶輸入時立即識別和活動有關(guān)的所有任務(wù);相反,可以識別第一任務(wù)并且可以在第一任務(wù)和任何后續(xù)任務(wù)的運(yùn)行期間對后續(xù)任務(wù)進(jìn)行鏈?zhǔn)竭B接(調(diào)度),直到無附加任務(wù)被鏈?zhǔn)竭B接并且活動已完成為止。在一些實施方式中,計算設(shè)備可以在檢測到調(diào)用活動的用戶輸入時立即執(zhí)行活動的第一任務(wù),而不是將第一任務(wù)調(diào)度成在稍后的時間被執(zhí)行。

在階段606處,計算設(shè)備識別到任務(wù)將被執(zhí)行。例如,如果活動將在web頁面中被運(yùn)行,則瀏覽器可以輪詢調(diào)度的任務(wù)的隊列并且識別待執(zhí)行的下一個任務(wù)。響應(yīng)于從隊列中識別到任務(wù),瀏覽器可以通知活動跟蹤器該任務(wù)將被執(zhí)行以允許活動跟蹤器在它被運(yùn)行之前處理該任務(wù)。

在階段608處,活動跟蹤器中的記錄引擎修改與任務(wù)相關(guān)聯(lián)的計算機(jī)代碼以包括允許活動跟蹤器監(jiān)視任務(wù)在計算設(shè)備上的運(yùn)行的一個或多個方面的代碼。例如,為了確定運(yùn)行時延,可以利用代碼指示任務(wù),所述代碼在活動日志中、在與和任務(wù)有關(guān)的特定活動相關(guān)聯(lián)的條目中記錄任務(wù)開始運(yùn)行的時間,并且標(biāo)記任務(wù)的運(yùn)行結(jié)束的時間。該代碼也可以輸出與任務(wù)有關(guān)的活動的標(biāo)識符并且可以在諸如‘活躍’、‘掛起’和‘結(jié)束’的預(yù)定義狀態(tài)之間改變活動的當(dāng)前狀態(tài)。在一些實施方式中,可以在活動被調(diào)用時或者當(dāng)每個任務(wù)被調(diào)用時及時記錄活動的代碼。在一些實施方式中,可以不在活動被調(diào)用時或者以其它方式及時記錄活動的代碼,但是可以替代地在應(yīng)用被編譯時記錄活動的代碼。例如,在活動的javascript代碼為客戶端設(shè)備服務(wù)之前,服務(wù)器系統(tǒng)可以重寫該代碼以包括活動跟蹤器。重寫可以包括嵌入當(dāng)在客戶端設(shè)備處運(yùn)行時使前期工作和/或后期工作操作在活動的任務(wù)中的全部或一些開始和結(jié)束時被執(zhí)行的代碼。

在階段610處,計算設(shè)備運(yùn)行如由活動跟蹤器所修改的任務(wù)。例如,在記錄引擎已將前期工作操作、后期工作操作或兩者插入到與將被運(yùn)行的任務(wù)相關(guān)聯(lián)的代碼之后,可以將任務(wù)的經(jīng)修改的代碼提供回給web瀏覽器中的腳本引擎以供運(yùn)行。在圖6b中描繪了階段610的擴(kuò)展表示,包括階段618、620和622。

在階段618a處,腳本引擎運(yùn)行任務(wù)的前期工作操作。在一些實施方式中,這牽涉首先使任務(wù)與其適當(dāng)?shù)幕顒酉嚓P(guān)聯(lián)。例如,可以將已被編程到經(jīng)修改的任務(wù)代碼中的唯一活動標(biāo)識符記錄在活動日志中,使得可使在任務(wù)的運(yùn)行期間收集的信息與適當(dāng)?shù)幕顒酉嚓P(guān)。

在階段618b處,活動狀態(tài)被標(biāo)記為‘活躍’。如果任務(wù)是針對給定活動而運(yùn)行的第一任務(wù),則活動狀態(tài)在任務(wù)的運(yùn)行期間被最初設(shè)定為‘活躍’。如果任務(wù)是在一個或多個其它任務(wù)先前已被運(yùn)行之后運(yùn)行的后續(xù)任務(wù),則可以將當(dāng)前狀態(tài)從‘掛起’改變?yōu)椤顒印?/p>

在階段618c處,與活動相關(guān)聯(lián)的定時器諸如通過記錄與活動相關(guān)聯(lián)的實際的任務(wù)代碼開始在階段620處運(yùn)行的啟動時間來啟動。在一些實施方式中,在階段620處運(yùn)行的任務(wù)的代碼是在該代碼被修改以便將原始部分夾在前期工作和后期工作操作的代碼之間之前與任務(wù)相關(guān)聯(lián)的原始代碼。

在階段622處,計算設(shè)備運(yùn)行已經(jīng)在任務(wù)的計算機(jī)代碼的經(jīng)修改的部分中提供的后期工作操作的代碼。后期工作操作可以包括階段622a-c或這些中的一個或多個的組合。

在階段622a處,識別任務(wù)的計算機(jī)代碼的原始部分結(jié)束了運(yùn)行的時間的時間戳被記錄在活動日志中。存儲在活動日志中的開始和停止時間因此可指示任務(wù)的運(yùn)行持續(xù)時間。

在階段622b處,當(dāng)前活動狀態(tài)被從‘活躍’改變?yōu)椤畳炱稹颉Y(jié)束’。為了確定是否應(yīng)該將狀態(tài)從‘掛起’改變?yōu)椤Y(jié)束’,可以評估已調(diào)度的任務(wù)隊列的內(nèi)容以確定任何后續(xù)任務(wù)是否被調(diào)度成針對活動而執(zhí)行。如果無后續(xù)任務(wù)被調(diào)度,則可以將活動狀態(tài)從‘活躍’改變?yōu)椤Y(jié)束’。如果存在被調(diào)度的后續(xù)任務(wù),則可以將活動狀態(tài)從‘活躍’改變?yōu)椤畳炱稹?。在一些實施方式中,任?wù)的運(yùn)行的持續(xù)時間可以由被保持在存儲器中直到任務(wù)的完成為止的定時器模塊來確定,在此情況下可以在階段622c處將識別任務(wù)的運(yùn)行的持續(xù)時間的數(shù)據(jù)記錄在活動日志中。

再次繼續(xù)如圖6a中所描繪的過程600,在階段612處計算設(shè)備確定是否仍要針對與和在階段610處運(yùn)行的任務(wù)相關(guān)聯(lián)的活動相同的活動而執(zhí)行任何附加任務(wù)。響應(yīng)于確定仍要運(yùn)行附加任務(wù)才能完成活動的運(yùn)行,過程600返回到階段604,并且可(例如,通過將后續(xù)任務(wù)添加到已調(diào)度的任務(wù)隊列)對一個或多個后續(xù)任務(wù)的執(zhí)行進(jìn)行調(diào)度。在一些實施方式中,后續(xù)任務(wù)可以在經(jīng)修改的任務(wù)代碼的運(yùn)行之前或之后由客戶端設(shè)備上的活動跟蹤器中的調(diào)度器來調(diào)度,使得調(diào)度是任務(wù)本身的一部分或其前期工作或后期工作操作。在一些實施方式中,如關(guān)于圖6b所描述的,任務(wù)代碼的原始部分、前期工作操作、后期工作操作或這些的組合可以能夠在任務(wù)的經(jīng)修改的代碼的運(yùn)行期間對后續(xù)任務(wù)進(jìn)行調(diào)度。

響應(yīng)于確定不再運(yùn)行另外的任務(wù)就能完成活動的執(zhí)行,過程600進(jìn)行到階段614以確定與活動相關(guān)聯(lián)的時延的一個或多個量度。在一些實施方式中,執(zhí)行了活動的客戶端設(shè)備可以在本地計算時延。例如,可以基于與活動相關(guān)聯(lián)的每個任務(wù)的單獨的持續(xù)時間來計算活動的總持續(xù)時間。也可以計算總持續(xù)時間的各部分,諸如共享一個或多個公共特性的活動的任務(wù)的子集的總持續(xù)時間。

在一些實施方式中,客戶端設(shè)備可以將活動日志上傳到服務(wù)器(階段616),并且服務(wù)器可以執(zhí)行包含在其中的數(shù)據(jù)的更復(fù)制分析。例如,服務(wù)器可以聚合來自許多不同的客戶端設(shè)備的匿名活動日志中的數(shù)據(jù)以確定跨越大量設(shè)備的活動的時延或其它執(zhí)行特性。而且,使用關(guān)于在上面執(zhí)行活動的客戶端設(shè)備的硬件和/或軟件環(huán)境所獲得的信息(例如,用戶代理id、瀏覽器或腳本引擎版本、計算設(shè)備模型),服務(wù)器可以使活動的時延或其它執(zhí)行特性中的模式與在其中運(yùn)行它們的硬件和/或軟件環(huán)境的特征相關(guān)聯(lián)。描述服務(wù)器的分析的結(jié)果的報告然后可以被生成并且例如呈現(xiàn)給期望改進(jìn)客戶端設(shè)備處的活動的執(zhí)行的應(yīng)用開發(fā)者。

圖7示出可用于實現(xiàn)本文中所描述的技術(shù)的計算設(shè)備700和移動計算設(shè)備的示例。計算設(shè)備700旨在表示各種形式的數(shù)字計算機(jī),諸如膝上型計算機(jī)、桌面型計算機(jī)、工作站、個人數(shù)字助理、服務(wù)器、刀片服務(wù)器、主機(jī)以及其它適當(dāng)?shù)挠嬎銠C(jī)。移動計算設(shè)備旨在表示各種形式的移動設(shè)備,諸如個人數(shù)字助理、蜂窩電話、智能電話以及其它類似的計算設(shè)備。這里所示出的組件、它們的連接和關(guān)系及其功能意在僅為示例性的,而不意在限制本文檔中所描述和/或要求保護(hù)的發(fā)明的實施方式。

計算設(shè)備700包括處理器702、存儲器704、存儲設(shè)備706、連接到存儲器704和多個高速擴(kuò)展端口710的高速接口708以及連接到低速擴(kuò)展端口714和存儲設(shè)備706的低速接口712。處理器702、存儲器704、存儲設(shè)備706、高速接口708、高速擴(kuò)展端口710和低速接口712中的每一個使用各種總線來互連,并且可以按需被安裝在公共主板上或者以其它方式互連。處理器702可處理用于在計算設(shè)備700內(nèi)運(yùn)行的指令,包括存儲在存儲器704中或在存儲設(shè)備706上以將gui的圖形信息顯示在外部輸入/輸出設(shè)備(諸如,耦合到高速接口708的顯示器716)上的指令。在其它實施方式中,可以按需使用多個處理器和/或多條總線以及多個存儲器和多種類型的存儲器。另外,多個計算設(shè)備可以與提供必要操作的各部分的每個設(shè)備連接在一起(例如,作為服務(wù)器組、一組刀片服務(wù)器或多處理器系統(tǒng))。

存儲器704存儲計算設(shè)備700內(nèi)的信息。在一些實施方式中,存儲器704是一個或多個易失性存儲器單元。在一些實施方式中,存儲器704是一個或多個非易失性存儲器單元。存儲器704也可以是另一形式的計算機(jī)可讀介質(zhì),諸如磁盤或光盤。

存儲設(shè)備706能夠為計算設(shè)備700提供大容量存儲。在一些實施方式中,存儲設(shè)備706可以是或者包含計算機(jī)可讀介質(zhì),諸如軟盤設(shè)備、硬盤設(shè)備、光盤設(shè)備或磁帶設(shè)備、閃速存儲器或其它類似的固態(tài)存儲器設(shè)備或設(shè)備的陣列,包括存儲區(qū)域網(wǎng)絡(luò)或其它配置中的設(shè)備。計算機(jī)程序產(chǎn)品也可以包含指令,所述指令當(dāng)被運(yùn)行時執(zhí)行一個或多個方法,諸如上面所描述的那些方法。計算機(jī)程序產(chǎn)品也可被有形地具體實現(xiàn)在計算機(jī)或機(jī)器可讀介質(zhì)中,所述計算機(jī)或機(jī)器可讀介質(zhì)諸如存儲器704、存儲設(shè)備706或處理器702上的存儲器。

高速接口708管理計算設(shè)備700的帶寬密集操作,而低速接口712管理較低帶寬密集操作。功能的這種分配僅僅是示例性的。在一些實施方式中,高速接口708耦合到存儲器704、顯示器716(例如,通過圖形處理器或加速度計),并且耦合到高速擴(kuò)展端口710,所述高速擴(kuò)展端口710可以接受各種擴(kuò)展卡(未示出)。在該實施方式中,低速接口712耦合到存儲設(shè)備706和低速擴(kuò)展端口714??梢园ǜ鞣N通信端口(例如,usb、藍(lán)牙、以太網(wǎng)、無線以太網(wǎng))的低速擴(kuò)展端口714可以耦合到一個或多個輸入/輸出設(shè)備,諸如鍵盤、指示設(shè)備、掃描儀,或例如通過網(wǎng)絡(luò)適配器的聯(lián)網(wǎng)設(shè)備,諸如交換機(jī)或路由器。

如圖中所示,可以以許多不同的形式實現(xiàn)計算設(shè)備700。例如,它可以作為標(biāo)準(zhǔn)服務(wù)器720被實現(xiàn),或在一組此類服務(wù)器中被實現(xiàn)多次。此外,它可以被實現(xiàn)在諸如膝上型計算機(jī)722的個人計算機(jī)中。它還可以作為機(jī)架服務(wù)器系統(tǒng)724的一部分被實現(xiàn)??商孢x地,來自計算設(shè)備700的組件可以與移動設(shè)備(未示出)(諸如移動計算設(shè)備750)中的其它組件組合。此類設(shè)備中的每一個可以包含計算設(shè)備700和移動計算設(shè)備750中的一個或多個,并且整個系統(tǒng)可以由彼此進(jìn)行通信的多個計算設(shè)備組成。

除其它組件之外,移動計算設(shè)備750也包括處理器752、存儲器764、諸如顯示器754的輸入/輸出設(shè)備、通信接口766和收發(fā)器768。移動計算設(shè)備750也可以被提供有存儲設(shè)備,諸如微型驅(qū)動器或其它設(shè)備,以提供附加存儲。處理器752、存儲器764、顯示器754、通信接口766和收發(fā)器768中的每一個使用各種總線來互連,并且可以按需安裝在公共主板上或者以其它方式互連這些組件中的數(shù)個。

處理器752可運(yùn)行移動計算設(shè)備750內(nèi)的指令,包括存儲在存儲器764中的指令。處理器752可以作為包括分立的多個模擬和數(shù)字處理器的芯片的芯片組被實現(xiàn)。處理器752可以提供例如移動計算設(shè)備750的其它組件的協(xié)調(diào),諸如對用戶界面、由移動計算設(shè)備750運(yùn)行的應(yīng)用以及通過移動計算設(shè)備750的無線通信的控制。

處理器752可以通過控制接口758和耦合到顯示器754的顯示接口756與用戶進(jìn)行通信。顯示器754可以是例如tft(薄膜晶體管液晶顯示)顯示器或oled(有機(jī)發(fā)光二極管)顯示器或其它適當(dāng)?shù)娘@示技術(shù)。顯示接口756可以包括用于驅(qū)動顯示器754以向用戶呈現(xiàn)圖形和其它信息的適當(dāng)?shù)碾娐?。控制接?58可以接收來自用戶的命令并且對它們進(jìn)行轉(zhuǎn)換以便提交給處理器752。此外,外部接口762可以提供與處理器752的通信,以便使得能實現(xiàn)移動計算設(shè)備750與其它設(shè)備的近區(qū)域通信。外部接口762可以在一些實施方式中提供例如有線通信,或者在其它實施方式中提供無線通信,并且也可以使用多個接口。

存儲器764存儲移動計算設(shè)備750內(nèi)的信息。存儲器764可以作為計算機(jī)可讀介質(zhì)、一個或多個易失性存儲器單元或一個或多個非易失性存儲器單元中的一個或多個被實現(xiàn)。擴(kuò)展存儲器774也可以通過擴(kuò)展接口772來提供并且連接到移動計算設(shè)備750,所述擴(kuò)展接口772可以包括例如simm(單列直插內(nèi)存模塊)卡接口。擴(kuò)展存儲器774可以為移動計算設(shè)備750提供額外的存儲空間,或者也可以為移動計算設(shè)備750存儲應(yīng)用或其它信息。具體地,擴(kuò)展存儲器774可以包括用于執(zhí)行或者補(bǔ)充上面所描述的過程的指令,并且也可以包括安全信息。因此,例如,擴(kuò)展存儲器774可以作為移動計算設(shè)備750的安全模塊被提供,并且可以被編程有許可移動計算設(shè)備750的安全使用的指令。此外,可以經(jīng)由simm卡連同附加信息一起提供安全應(yīng)用,諸如以不可被黑客破壞的方式將識別信息放在simm卡上。

如在下面所討論的,存儲器可以包括例如閃速存儲器和/或nvram存儲器(非易失性隨機(jī)存取存儲器)。計算機(jī)程序產(chǎn)品包含指令,所述指令當(dāng)被運(yùn)行時執(zhí)行一個或多個方法,諸如上面所描述的那些指令。計算機(jī)程序產(chǎn)品可以是計算機(jī)或機(jī)器可讀介質(zhì),諸如存儲器764、擴(kuò)展存儲器774或處理器752上的存儲器。在一些實施方式中,可例如通過收發(fā)器768或外部接口762在傳播信號中接收計算機(jī)程序產(chǎn)品。

移動計算設(shè)備750可以通過通信接口766以無線方式通信,所述通信接口766必要時可以包括數(shù)字信號處理電路。通信接口766可以在各種模式或協(xié)議下提供通信,所述各種模式或協(xié)議諸如gsm語音呼叫(全球移動通信系統(tǒng))、sms(短消息服務(wù))、ems(增強(qiáng)消息傳送服務(wù))或mms消息傳送(多媒體消息傳送服務(wù))、cdma(碼分多址)、tdma(時分多址)、pdc(個人數(shù)字蜂窩)、wcmda(寬帶碼分多址)、cdma2000或gprs(通用分組無線電服務(wù))等。此類通信可以例如通過使用射頻的收發(fā)器768而發(fā)生。此外,短距離通信可以諸如使用藍(lán)牙、wifi或其它這種收發(fā)器(未示出)來發(fā)生。此外,gps(全球定位系統(tǒng))接收器模塊770可以向移動計算設(shè)備750提供附加的導(dǎo)航和位置相關(guān)無線數(shù)據(jù),其可以按需由在移動計算設(shè)備750上運(yùn)行的應(yīng)用使用。

移動計算設(shè)備750也可以使用音頻編解碼器760可聽見地通信,所述音頻編解碼器760可以從用戶接收說出的信息并且將其轉(zhuǎn)換為可用的數(shù)字信息。音頻編解碼器760可以諸如通過揚(yáng)聲器(例如,在移動計算設(shè)備750的頭戴式耳機(jī)中)為用戶同樣地生成可聽聲音。這種聲音可以包括來自語音電話呼叫的聲音,可以包括記錄的聲音(例如,語音消息、音樂文件等)并且也可以包括由在移動計算設(shè)備750上操作的應(yīng)用所生成的聲音。

如圖中所示,可以以許多不同的形式實現(xiàn)移動計算設(shè)備750。例如,它可以作為蜂窩電話780被實現(xiàn)。它也可以作為智能電話782、個人數(shù)字助理、或其它類似的移動設(shè)備的一部分被實現(xiàn)。

這里所描述的系統(tǒng)和技術(shù)的各種實施方式可用數(shù)字電子電路、集成電路、特別設(shè)計的asic(專用集成電路)、計算機(jī)硬件、固件、軟件和/或其組合加以實現(xiàn)。這些各種實施方式可包括在包括至少一個可編程處理器的可編程系統(tǒng)上可運(yùn)行的和/或可解釋的一個或多個計算機(jī)程序中的實施方式,所述至少一個可編程處理器可以是專用或通用的,耦合以從存儲系統(tǒng)、至少一個輸入設(shè)備和至少一個輸出設(shè)備接收數(shù)據(jù)和指令,并且將數(shù)據(jù)和指令發(fā)送到存儲系統(tǒng)、至少一個輸入設(shè)備和至少一個輸出設(shè)備。

這些計算機(jī)程序(也被稱為程序、軟件、軟件應(yīng)用或代碼)包括針對可編程處理器的機(jī)器指令,并且可用高級過程和/或面向?qū)ο缶幊陶Z言和/或用匯編/機(jī)器語言加以實現(xiàn)。如本文中所使用的,術(shù)語機(jī)器可讀介質(zhì)和計算機(jī)可讀介質(zhì)指代用于向可編程處理器提供機(jī)器指令和/或數(shù)據(jù)的任何計算機(jī)程序產(chǎn)品、裝置和/或設(shè)備(例如,磁盤、光盤、存儲器、可編程邏輯器件(pld)),包括接收機(jī)器指令作為機(jī)器可讀信號的機(jī)器可讀介質(zhì)。術(shù)語機(jī)器可讀信號指代用于向可編程處理器提供機(jī)器指令和/或數(shù)據(jù)的任何信號。

為了提供與用戶的交互,可在具有用于向用戶顯示信息的顯示設(shè)備(例如,crt(陰極射線管)或lcd(液晶顯示器)監(jiān)視器)以及用戶可用來向計算機(jī)提供輸入的鍵盤和指示設(shè)備(例如,鼠標(biāo)或軌跡球)的計算機(jī)上實現(xiàn)這里所描述的系統(tǒng)和技術(shù)。其它類型的設(shè)備也可用于提供與用戶的交互;例如,提供給用戶的反饋可以是任何形式的感覺反饋(例如,視覺反饋、聽覺反饋或觸覺反饋);并且可以任何形式(包括聲學(xué)、語音或觸覺輸入)接收來自用戶的輸入。

這里所描述的系統(tǒng)和技術(shù)可被實現(xiàn)在計算系統(tǒng)中,所述計算系統(tǒng)包括后端組件(例如,作為數(shù)據(jù)服務(wù)器),或者包括中間件組件(例如,應(yīng)用服務(wù)器),或者包括前端組件(例如,具有用戶可用來與這里所描述的系統(tǒng)和技術(shù)的實施方式交互的圖形用戶界面或web瀏覽器的客戶端計算機(jī)),或此類后端、中間件或前端組件的任何組合。該系統(tǒng)的組件可通過任何形式或介質(zhì)的數(shù)字?jǐn)?shù)據(jù)通信(例如,通信網(wǎng)絡(luò))來互連。通信網(wǎng)絡(luò)的示例包括局域網(wǎng)(lan)、廣域網(wǎng)(wan)和互聯(lián)網(wǎng)。

計算系統(tǒng)可包括客戶端和服務(wù)器??蛻舳撕头?wù)器通常遠(yuǎn)離彼此并且典型地通過通信網(wǎng)絡(luò)交互??蛻舳撕头?wù)器的關(guān)系借助于在相應(yīng)的計算機(jī)上運(yùn)行并且彼此具有客戶端-服務(wù)器關(guān)系的計算機(jī)程序而產(chǎn)生。

本文中所描述的日志(例如,活動日志)可作為存儲在可由計算機(jī)讀取的物理存儲器結(jié)構(gòu)中的數(shù)字?jǐn)?shù)據(jù)被實現(xiàn)。

在這里系統(tǒng)、方法、設(shè)備和其它技術(shù)收集關(guān)于用戶的個人信息(例如,上下文數(shù)據(jù))或者可以利用個人信息的情形下,可以給用戶提供控制程序或特征是否收集用戶信息(例如,關(guān)于用戶的社交網(wǎng)絡(luò)、社交動作或活動、職業(yè)、用戶的偏好或用戶的當(dāng)前位置的信息)或者控制是否和/或如何從內(nèi)容服務(wù)器接收可能與用戶更相關(guān)的內(nèi)容的機(jī)會。此外,某些數(shù)據(jù)可以在它被存儲或者使用之前被以一個或多個方式處理,使得個人可識別信息被移除。例如,可以處理用戶的身份,使得對該用戶來說不能夠確定個人可識別信息,或者可以在獲得了位置信息的情況下一般化用戶的地理位置(諸如到城市、zip碼或州級別),使得不能夠確定用戶的特定位置。因此,用戶可以控制信息如何關(guān)于用戶被收集并由內(nèi)容服務(wù)器使用。

盡管已經(jīng)在上面詳細(xì)地描述了各種實施方式,然而其它修改是可能的。此外,圖中所描繪的邏輯流不要求所示出的特定次序或順序次序,以實現(xiàn)所希望的結(jié)果。此外,可以提供其它步驟,或者可以從所描述的流中消除步驟,并且其它組件可以被添加到所描述的系統(tǒng),或者被從所描述的系統(tǒng)中移除。因此,其它實施方式在以下權(quán)利要求的范圍內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1