用于映射頁面狀態(tài)的系統(tǒng)和方法
【專利說明】用于映射頁面狀態(tài)的系統(tǒng)和方法
[0001]相關(guān)申請的交叉引用
[0002]本申請要求2013年I月25日提交的美國臨時專利申請N0.61/756,864以及2013年3月I日提交的美國專利申請N0.13/782,840的優(yōu)先權(quán),其內(nèi)容以全文引用的方式并入本文中。
技術(shù)領(lǐng)域
[0003]本文公開的主題總體上涉及數(shù)據(jù)處理。具體地,本公開涉及便于將頁面狀態(tài)映射到統(tǒng)一資源定位符(URL)的系統(tǒng)和方法。
【背景技術(shù)】
[0004]網(wǎng)絡(luò)可訪問資源(例如設(shè)備或存儲于其上的數(shù)據(jù))可以通過統(tǒng)一資源標(biāo)識符(URI)來識別。URI的示例包括URL、統(tǒng)一資源名稱(URN)或者其任何合適的組合。URI可以是字母數(shù)字字符串,或包括字母數(shù)字字符串,其與由URI識別的網(wǎng)絡(luò)可訪問資源相對應(yīng)。
[0005]網(wǎng)頁可以形成由URI識別的文件(document)或呈現(xiàn)的全部或部分。例如,URL可以識別網(wǎng)頁的基于網(wǎng)絡(luò)的位置。軟件應(yīng)用(例如互聯(lián)網(wǎng)瀏覽器應(yīng)用)可以使用網(wǎng)頁的URL來訪問(例如請求、讀取、檢索或下載)該網(wǎng)頁(例如從web服務(wù)器機(jī)器到web客戶端設(shè)備)。在一些情況下,web應(yīng)用在web服務(wù)器機(jī)器上執(zhí)行,并且基于(例如響應(yīng)于)接收的一個或多個用戶輸入來動態(tài)生成網(wǎng)頁。
【發(fā)明內(nèi)容】
【附圖說明】
[0006]在附圖的圖中以作為示例而非限制的方式示出了一些實施例。
[0007]圖1是示出了根據(jù)一些示例實施例的適用于將頁面狀態(tài)映射到URL的網(wǎng)絡(luò)環(huán)境的網(wǎng)絡(luò)圖。
[0008]圖2是示出了根據(jù)一些示例實施例的web服務(wù)器機(jī)器和設(shè)備的組件的框圖。
[0009]圖3?6是示出并描述了根據(jù)一些示例實施例的web服務(wù)器機(jī)器和設(shè)備在執(zhí)行將頁面狀態(tài)映射到URL的方法時的操作的注釋流程圖。
[0010]圖7?8是示出了根據(jù)一些示例實施例的web服務(wù)器機(jī)器在執(zhí)行將頁面狀態(tài)映射到URL的方法時的操作的流程圖。
[0011]圖9是示出了根據(jù)一些示例實施例的在web服務(wù)器機(jī)器的操作旁邊的設(shè)備在執(zhí)行使用映射到URL的頁面狀態(tài)的方法時的操作的流程圖。
[0012]圖10示出了根據(jù)一些示例實施例的能夠從機(jī)器可讀介質(zhì)中讀取指令并且執(zhí)行本文討論的任何一個或多個方法的機(jī)器的組件的框圖。
【具體實施方式】
[0013]示例方法和系統(tǒng)涉及將頁面狀態(tài)映射到URI (例如URL)。示例僅僅作為可能的變化的典型例子。除非另行明確聲明,否則組件和功能是可選的并可以組合或細(xì)分,并且操作可以在次序上變化或者可以組合或者細(xì)分。在以下描述中,出于解釋的目的,對多個具體細(xì)節(jié)進(jìn)行闡述,以提供對示例實施例的透徹理解。然而對于本領(lǐng)域技術(shù)人員將顯而易見的是:本主題可以在沒有這些具體細(xì)節(jié)的情況下實施。
[0014]根據(jù)各種示例實施例,本文討論的一個或多個方法和系統(tǒng)提供了用于通過將單個頁面(例如由單頁面web應(yīng)用產(chǎn)生并提供的單個網(wǎng)頁)的各種狀態(tài)映射到各種URL在單頁面web應(yīng)用上管理一致的URL的方式。在基于網(wǎng)絡(luò)的商業(yè)系統(tǒng)(例如在線購物網(wǎng)站)的示例背景下,這樣的URL可以包括類別URL(例如對描述可出售項目的類別的網(wǎng)頁進(jìn)行指定的URL)、產(chǎn)品URL(例如對描述其中多個項目是樣品的產(chǎn)品的網(wǎng)頁進(jìn)行指定的URL)、項目URL(例如對描述可出售的具體項目的網(wǎng)頁進(jìn)行指定的URL)、或者其任何合適的組合。
[0015]使用本文討論的方法或系統(tǒng)的示例實施例,對來自這種web應(yīng)用的單個頁面進(jìn)行顯示的客戶端應(yīng)用可以顯示一致和直觀的URL,該URL被映射到該單個頁面的各種狀態(tài)(例如以與動態(tài)產(chǎn)生的內(nèi)容的一個或多個用戶交互為基礎(chǔ)的輸入的狀態(tài),該內(nèi)容由web應(yīng)用在單個頁面中提供)。單個頁面的各種狀態(tài)可以基于與該單個頁面相關(guān)的一個或多個用戶交互被映射到對應(yīng)的URL。這些URL可以用于重新訪問在分別與這些URL相對應(yīng)的各種狀態(tài)下的單個頁面。該方法可以與使用散列片段(例如散列標(biāo)簽)來表示單個頁面的各種狀態(tài)(例如在瀏覽器中顯示相同頁面URL,但針對單個頁面的每個狀態(tài)具有不同散列片段)形成對比。
[0016]對于一些web應(yīng)用,當(dāng)用戶將URL鍵入瀏覽器(例如鍵入瀏覽器應(yīng)用的用戶界面)時,瀏覽器向web服務(wù)器(例如web服務(wù)器機(jī)器)進(jìn)行URL請求(例如調(diào)用),并且web服務(wù)器提供(例如回復(fù))動態(tài)內(nèi)容,然后瀏覽器將該動態(tài)內(nèi)容作為單個頁面(例如單個網(wǎng)頁)呈現(xiàn)給用戶(例如顯示在用戶的客戶端設(shè)備的屏幕上)。隨后,當(dāng)用戶用戶與所呈現(xiàn)的單個頁面上的任何該動態(tài)內(nèi)容(例如鏈接、按鈕或熱點)交互時,該交互可以通過以下方式來處理,例如:
[0017]1、向web服務(wù)器進(jìn)行另一個URL請求,該另一個URL請求告知web服務(wù)器重新發(fā)送頁面的全部內(nèi)容(例如動態(tài)內(nèi)容),從而刷新(例如重新繪制)整個頁面;或者
[0018]2、向web服務(wù)器進(jìn)行異步JavaScript和XML(AJAX,其中XML是指可擴(kuò)展標(biāo)記語言)請求(例如,AJAX調(diào)用),并且在前端上加載頁面的所有內(nèi)容(例如加載到客戶端側(cè)上的瀏覽器中),從而使用戶能夠在不需要刷新或離開頁面的情況下與任何動態(tài)內(nèi)容(例如鏈接、按鈕或熱點)交互,僅在需要時針對附加數(shù)據(jù)(例如附加動態(tài)內(nèi)容)向web服務(wù)器進(jìn)行附加請求(例如調(diào)用)。
[0019]選項2有時用于構(gòu)建單頁面web應(yīng)用,因為它能夠提供愉快的用戶體驗。然而,當(dāng)用戶與單個頁面(例如單個網(wǎng)頁)交互并且導(dǎo)航到web應(yīng)用的不同特征時,單個頁面的狀態(tài)會發(fā)生變化。例如,頁面可以呈現(xiàn)不同的外觀(例如以不同方式呈現(xiàn)一些動態(tài)內(nèi)容或?qū)⒉煌瑑?nèi)容一起呈現(xiàn))。然而,頁面的URL可以保持相同,盡管可以將散列片段(例如散列標(biāo)簽)附加到頁面的URL,這可以導(dǎo)致頁面的URL表現(xiàn)得不直觀,用戶難以閱讀,并且用戶難以使用(例如,使用瀏覽器的“后退”按鈕或“前進(jìn)”按鈕來訪問動態(tài)產(chǎn)生的內(nèi)容,或者復(fù)制和粘貼,使得其它用戶可以看到在當(dāng)前狀態(tài)下的頁面)。
[0020]在這種背景下,本文討論的一個或多個方法和系統(tǒng)可以提供以下優(yōu)點中的一個或多個:
[0021]1、盡管web應(yīng)用(例如針對移動設(shè)備的移動網(wǎng)站)可以被設(shè)計為單個頁面,用戶針對單個頁面的不同狀態(tài)(例如區(qū)域、配置或歷史記錄)看到不同URL(例如在他們的瀏覽器中)??梢詫@些不同的URL進(jìn)行管理(例如產(chǎn)生、映射或這二者)以使得它們具有一致的外觀(例如直觀的外觀或容易理解的語法)。
[0022]2、用戶可以在他的活動歷史記錄中前進(jìn)或后退(例如在之前訪問的URL歷史記錄中前進(jìn)和后退)并且在單個頁面的之前呈現(xiàn)的狀態(tài)中進(jìn)行導(dǎo)航。
[0023]3、在一些示例實施例中,用戶與單個頁面的交互產(chǎn)生了狀態(tài)(例如新狀態(tài)),并且該狀態(tài)可以被映射到有效的URL(例如包括字母數(shù)字字符串在內(nèi)的URL)。
[0024]4、在一些示例實施例中,用戶與單個頁面的交互使得瀏覽器在不重新加載單個頁面的情況下顯示更新的URL(例如被映射到單個頁面的對應(yīng)狀態(tài))。
[0025]5、在一些示例實施例中,用戶可以使用瀏覽器來手動請求單個頁面的刷新,并且單個頁面將會以刷新之前顯示的相同狀態(tài)被重新加載(例如重新繪制或刷新)。
[0026]6、在一些示例實施例中,頁面的狀態(tài)與頁面的具體視圖相對應(yīng),并且針對該狀態(tài)的對應(yīng)URL可以被映射到頁面的該具體視圖。
[0027]可以獲得的附加優(yōu)點包括例如:
[0028]1、出于搜索引擎優(yōu)化(SEO)目的(例如SEO友好URL),針對各種頁面狀態(tài)的URL能夠被搜索引擎簡單地編寫索引。
[0029]2、用戶能夠從他的瀏覽器中容易地復(fù)制針對頁面的特定狀態(tài)的直觀URL,并且可以在一個或多個社交網(wǎng)站或其它地方共享該URL。當(dāng)別人點擊該URL時,他們將會看到由該用戶分享的在相同的特定狀態(tài)之下的相同頁面。
[0030]3、不管用戶多少次離開并重新訪問頁面的特定狀態(tài),由于動態(tài)內(nèi)容只被加載一次(例如第一次需要一條動態(tài)內(nèi)容時),可以增強(qiáng)或提高用戶體驗。
[0031]4、在一些示例實施例中,web應(yīng)用可以例如通過提供指定頁面特定狀態(tài)(例如針對用戶組來預(yù)配置的定制狀態(tài))的映射URL,向關(guān)注類似內(nèi)容的用戶組提供特制的(例如個性化的)定制頁面。
[0032]根據(jù)各種示例實施例,web服務(wù)器機(jī)器可以被配置為執(zhí)行具有后端模塊(例如URL驗證模塊)的web應(yīng)用,并且向web客戶端設(shè)備提供瀏覽器可執(zhí)行前端模塊(例如URL管理模塊)。例如,一個或多個表述性狀態(tài)轉(zhuǎn)移(REST)服務(wù)器的集合可以(例如由web服務(wù)器機(jī)器,如web應(yīng)用的URL驗證模塊所配置的)在服務(wù)器側(cè)執(zhí)行,以驗證任何URL路徑(例如經(jīng)由URL驗證模塊的執(zhí)行),而一個或多個JavaScript程序的集合可以在客戶端側(cè)(例如在瀏覽器側(cè),由客戶端設(shè)備,如URL管理模塊所配置的)執(zhí)行,以管理針對單頁面web應(yīng)用的URL和狀態(tài)(例如經(jīng)由URL管理模塊的執(zhí)行)。
[0033]圖1是示出了根據(jù)一些示例實施例的適合于將頁面狀態(tài)映射到URL的網(wǎng)絡(luò)環(huán)境100的網(wǎng)絡(luò)圖。網(wǎng)絡(luò)環(huán)境100包括web服務(wù)器機(jī)器110、數(shù)據(jù)庫115和設(shè)備130和150,它們都經(jīng)由網(wǎng)絡(luò)190相互通信耦合。如下文關(guān)于圖10所述,web服務(wù)器機(jī)器110和設(shè)備130和150均可以在計算機(jī)系統(tǒng)中整體或部分實現(xiàn)。
[0034]web服務(wù)器機(jī)器110可以被(例如特殊用途軟件)配置為執(zhí)行本文描述的任何一個或多個方法。web服務(wù)器機(jī)器110在具有數(shù)據(jù)庫115或不具有數(shù)據(jù)庫115的情況下可以形成提供一個或多個web服務(wù)的基于網(wǎng)絡(luò)的系統(tǒng)105的全部或部分。
[0035]圖1中還示出了用戶132和152。用戶132和152中的一個或二者可以是人類用戶(例如人類)、機(jī)器用戶(例如由軟件程序配置為與設(shè)備130交互的計算機(jī))、或其任何合適的組合(例如由機(jī)器輔助的人類或者是由人類監(jiān)督的機(jī)器)。用戶132不是網(wǎng)絡(luò)環(huán)境100的一部分,但是用戶132與設(shè)備130相關(guān)聯(lián),并且可以是設(shè)備130的用戶。例如,設(shè)備130可以是屬于用戶132的臺式計算機(jī)、車輛計算機(jī)、平板計算機(jī)、導(dǎo)航設(shè)備、便攜式媒體設(shè)備或智能電話。類似地,用戶152不是網(wǎng)絡(luò)環(huán)境100的一部分,但是用戶152與設(shè)備150相關(guān)聯(lián)。作為示例,設(shè)備150可以是屬于用戶152的臺式計算機(jī)、車輛計算機(jī)、平板計算機(jī)、導(dǎo)航設(shè)備、便攜式媒體設(shè)備或智能電話。
[0036]因此,web服務(wù)器機(jī)器110 (例如作為基于網(wǎng)絡(luò)的系統(tǒng)105的一部分)可以向一個或多個web客戶端(例如設(shè)備130和150)提供一個或多個web服務(wù)。設(shè)備130和150中的一個或二者可以是移動設(shè)備(例如智能電話、車輛計算機(jī)或平板計算機(jī)),用戶(例如用戶132或用戶152)可以通過該移動設(shè)備來訪問并使用由web服務(wù)器機(jī)器110提供的一個或多個web服務(wù)。
[0037]例如,web服務(wù)器機(jī)器110可以向設(shè)備130提供(例如供應(yīng))內(nèi)容的頁面(例如包括并呈現(xiàn)動態(tài)產(chǎn)生的web內(nèi)容的單個網(wǎng)頁)。設(shè)備130可以執(zhí)行允許用戶132與提供的內(nèi)容頁面交互(例如觸摸鏈接以請求附加內(nèi)容,在呈現(xiàn)的內(nèi)容中的熱點上觸摸并保持以打開具有附加內(nèi)容的彈出式窗口,鼠標(biāo)移動到呈現(xiàn)的內(nèi)容上以觸發(fā)通知,通過在其上點擊并拖動來操作內(nèi)容呈現(xiàn),或者其任何合適的組合)的應(yīng)用(例如瀏覽器應(yīng)用)。
[0038]圖1中示出的任何機(jī)器、數(shù)據(jù)庫或設(shè)備可以在通用計算機(jī)中實施,該通用計算機(jī)由軟件修改(例如配置或編程)為專用計算機(jī),以執(zhí)行本文描述的針對該機(jī)器、數(shù)據(jù)庫或設(shè)備的功能。例如,能夠?qū)嵤┍疚拿枋龅囊粋€或多個方法的計算機(jī)系統(tǒng)將在下文中參照圖10來討論。如本文中使用的,