用于映射页面状态的系统和方法与流程

文档序号:18319659发布日期:2019-08-03 10:20阅读:175来源:国知局
用于映射页面状态的系统和方法与流程

相关申请的交叉引用

本申请要求2013年1月25日提交的美国临时专利申请no.61/756,864以及2013年3月1日提交的美国专利申请no.13/782,840的优先权,其内容以全文引用的方式并入本文中。

本文公开的主题总体上涉及数据处理。具体地,本公开涉及便于将页面状态映射到统一资源定位符(url)的系统和方法。



背景技术:

网络可访问资源(例如设备或存储于其上的数据)可以通过统一资源标识符(uri)来识别。uri的示例包括url、统一资源名称(urn)或者其任何合适的组合。uri可以是字母数字字符串,或包括字母数字字符串,其与由uri识别的网络可访问资源相对应。

网页可以形成由uri识别的文件(document)或呈现的全部或部分。例如,url可以识别网页的基于网络的位置。软件应用(例如互联网浏览器应用)可以使用网页的url来访问(例如请求、读取、检索或下载)该网页(例如从web服务器机器到web客户端设备)。在一些情况下,web应用在web服务器机器上执行,并且基于(例如响应于)接收的一个或多个用户输入来动态生成网页。



技术实现要素:

附图说明

在附图的图中以作为示例而非限制的方式示出了一些实施例。

图1是示出了根据一些示例实施例的适用于将页面状态映射到url的网络环境的网络图。

图2是示出了根据一些示例实施例的web服务器机器和设备的组件的框图。

图3~6是示出并描述了根据一些示例实施例的web服务器机器和设备在执行将页面状态映射到url的方法时的操作的注释流程图。

图7~8是示出了根据一些示例实施例的web服务器机器在执行将页面状态映射到url的方法时的操作的流程图。

图9是示出了根据一些示例实施例的在web服务器机器的操作旁边的设备在执行使用映射到url的页面状态的方法时的操作的流程图。

图10示出了根据一些示例实施例的能够从机器可读介质中读取指令并且执行本文时论的任何一个或多个方法的机器的组件的框图。

具体实施方式

示例方法和系统涉及将页面状态映射到uri(例如url)。示例仅仅作为可能的变化的典型例子。除非另行明确声明,否则组件和功能是可选的并可以组合或细分,并且操作可以在次序上变化或者可以组合或者细分。在以下描述中,出于解释的目的,对多个具体细节进行阐述,以提供对示例实施例的透彻理解。然而对于本领域技术人员将显而易见的是:本主题可以在没有这些具体细节的情况下实施。

根据各种示例实施例,本文讨论的一个或多个方法和系统提供了用于通过将单个页面(例如由单页面web应用产生并提供的单个网页)的各种状态映射到各种url在单页面web应用上管理一致的url的方式。在基于网络的商业系统(例如在线购物网站)的示例背景下,这样的url可以包括类别url(例如对描述可出售项目的类别的网页进行指定的url)、产品url(例如对描述其中多个项目是样品的产品的网页进行指定的url)、项目url(例如对描述可出售的具体项目的网页进行指定的url)、或者其任何合适的组合。

使用本文讨论的方法或系统的示例实施例,对来自这种web应用的单个页面进行显示的客户端应用可以显示一致和直观的url,该url被映射到该单个页面的各种状态(例如以与动态产生的内容的一个或多个用户交互为基础的输入的状态,该内容由web应用在单个页面中提供)。单个页面的各种状态可以基于与该单个页面相关的一个或多个用户交互被映射到对应的url。这些url可以用于重新访问在分别与这些url相对应的各种状态下的单个页面。该方法可以与使用散列片段(例如散列标签)来表示单个页面的各种状态(例如在浏览器中显示相同页面url,但针对单个页面的每个状态具有不同散列片段)形成对比。

对于一些web应用,当用户将url键入浏览器(例如键入浏览器应用的用户界面)时,浏览器向web服务器(例如web服务器机器)进行url请求(例如调用),并且web服务器提供(例如回复)动态内容,然后浏览器将该动态内容作为单个页面(例如单个网页)呈现给用户(例如显示在用户的客户端设备的屏幕上)。随后,当用户用户与所呈现的单个页面上的任何该动态内容(例如链接、按钮或热点)交互时,该交互可以通过以下方式来处理,例如:

1、向web服务器进行另一个url请求,该另一个url请求告知web服务器重新发送页面的全部内容(例如动态内容),从而刷新(例如重新绘制)整个页面;或者

2、向web服务器进行异步javascript和xml(ajax,其中xml是指可扩展标记语言)请求(例如,ajax调用),并且在前端上加载页面的所有内容(例如加载到客户端侧上的浏览器中),从而使用户能够在不需要刷新或离开页面的情况下与任何动态内容(例如链接、按钮或热点)交互,仅在需要时针对附加数据(例如附加动态内容)向web服务器进行附加请求(例如调用)。

选项2有时用于构建单页面web应用,因为它能够提供愉快的用户体验。然而,当用户与单个页面(例如单个网页)交互并且导航到web应用的不同特征时,单个页面的状态会发生变化。例如,页面可以呈现不同的外观(例如以不同方式呈现一些动态内容或将不同内容一起呈现)。然而,页面的url可以保持相同,尽管可以将散列片段(例如散列标签)附加到页面的url,这可以导致页面的url表现得不直观,用户难以阅读,并且用户难以使用(例如,使用浏览器的“后退”按钮或“前进”按钮来访问动态产生的内容,或者复制和粘贴,使得其它用户可以看到在当前状态下的页面)。

在这种背景下,本文讨论的一个或多个方法和系统可以提供以下优点中的一个或多个:

1、尽管web应用(例如针对移动设备的移动网站)可以被设计为单个页面,用户针对单个页面的不同状态(例如区域、配置或历史记录)看到不同url(例如在他们的浏览器中)。可以对这些不同的url进行管理(例如产生、映射或这二者)以使得它们具有一致的外观(例如直观的外观或容易理解的语法)。

2、用户可以在他的活动历史记录中前进或后退(例如在之前访问的url历史记录中前进和后退)并且在单个页面的之前呈现的状态中进行导航。

3、在一些示例实施例中,用户与单个页面的交互产生了状态(例如新状态),并且该状态可以被映射到有效的url(例如包括字母数字字符串在内的url)。

4、在一些示例实施例中,用户与单个页面的交互使得浏览器在不重新加载单个页面的情况下显示更新的url(例如被映射到单个页面的对应状态)。

5、在一些示例实施例中,用户可以使用浏览器来手动请求单个页面的刷新,并且单个页面将会以刷新之前显示的相同状态被重新加载(例如重新绘制或刷新)。

6、在一些示例实施例中,页面的状态与页面的具体视图相对应,并且针对该状态的对应url可以被映射到页面的该具体视图。

可以获得的附加优点包括例如:

1、出于搜索引擎优化(seo)目的(例如seo友好url),针对各种页面状态的url能够被搜索引擎简单地编写索引。

2、用户能够从他的浏览器中容易地复制针对页面的特定状态的直观url,并且可以在一个或多个社交网站或其它地方共享该url。当别人点击该url时,他们将会看到由该用户分享的在相同的特定状态之下的相同页面。

3、不管用户多少次离开并重新访问页面的特定状态,由于动态内容只被加载一次(例如第一次需要一条动态内容时),可以增强或提高用户体验。

4、在一些示例实施例中,web应用可以例如通过提供指定页面特定状态(例如针对用户组来预配置的定制状态)的映射url,向关注类似内容的用户组提供特制的(例如个性化的)定制页面。

根据各种示例实施例,web服务器机器可以被配置为执行具有后端模块(例如url验证模块)的web应用,并且向web客户端设备提供浏览器可执行前端模块(例如url管理模块)。例如,一个或多个表述性状态转移(rest)服务器的集合可以(例如由web服务器机器,如web应用的url验证模块所配置的)在服务器侧执行,以验证任何url路径(例如经由url验证模块的执行),而一个或多个javascript程序的集合可以在客户端侧(例如在浏览器侧,由客户端设备,如url管理模块所配置的)执行,以管理针对单页面web应用的url和状态(例如经由url管理模块的执行)。

图1是示出了根据一些示例实施例的适合于将页面状态映射到url的网络环境100的网络图。网络环境100包括web服务器机器110、数据库115和设备130和150,它们都经由网络190相互通信耦合。如下文关于图10所述,web服务器机器110和设备130和150均可以在计算机系统中整体或部分实现。

web服务器机器110可以被(例如特殊用途软件)配置为执行本文描述的任何一个或多个方法。web服务器机器110在具有数据库115或不具有数据库115的情况下可以形成提供一个或多个web服务的基于网络的系统105的全部或部分。

图1中还示出了用户132和152。用户132和152中的一个或二者可以是人类用户(例如人类)、机器用户(例如由软件程序配置为与设备130交互的计算机)、或其任何合适的组合(例如由机器辅助的人类或者是由人类监督的机器)。用户132不是网络环境100的一部分,但是用户132与设备130相关联,并且可以是设备130的用户。例如,设备130可以是属于用户132的台式计算机、车辆计算机、平板计算机、导航设备、便携式媒体设备或智能电话。类似地,用户152不是网络环境100的一部分,但是用户152与设备150相关联。作为示例,设备150可以是属于用户152的台式计算机、车辆计算机、平板计算机、导航设备、便携式媒体设备或智能电话。

因此,web服务器机器110(例如作为基于网络的系统105的一部分)可以向一个或多个web客户端(例如设备130和150)提供一个或多个web服务。设备130和150中的一个或二者可以是移动设备(例如智能电话、车辆计算机或平板计算机),用户(例如用户132或用户152)可以通过该移动设备来访问并使用由web服务器机器110提供的一个或多个web服务。

例如,web服务器机器110可以向设备130提供(例如供应)内容的页面(例如包括并呈现动态产生的web内容的单个网页)。设备130可以执行允许用户132与提供的内容页面交互(例如触摸链接以请求附加内容,在呈现的内容中的热点上触摸并保持以打开具有附加内容的弹出式窗口,鼠标移动到呈现的内容上以触发通知,通过在其上点击并拖动来操作内容呈现,或者其任何合适的组合)的应用(例如浏览器应用)。

图1中示出的任何机器、数据库或设备可以在通用计算机中实施,该通用计算机由软件修改(例如配置或编程)为专用计算机,以执行本文描述的针对该机器、数据库或设备的功能。例如,能够实施本文描述的一个或多个方法的计算机系统将在下文中参照图10来讨论。如本文中使用的,“数据库”是数据存储资源并且可以存储构成为具有下列结构的数据:文本文件、表格、电子数据表、关系型数据库(例如对象关系数据库)、三元组存储、分级数据存储、或者其任何合适的组合。此外,图1中示出的机器、数据库或设备中任何两个或更多个可以组合成单个机器,并且本文中针对任何单个机器、数据库或设备描述的功能可以细分为多个机器、数据库或设备。

网络190可以是能够实现机器、数据库和设备(例如web服务器机器110和设备130)之间或之中的通信的任何网络。因此,网络190可以是有线网络、无线网络(例如移动或蜂窝网络)或者其任何合适的组合。网络190可以包括构成私有网络、公共网络(例如互联网)或者其任何合适的组合的一个或多个部分。

图2是示出了根据一些示例实施例的web服务器机器110和设备130的组件的框图。web服务器机器110被示出为包括web应用210(例如在web服务器机器110上执行的web服务应用)、验证模块220(例如在web服务器机器110上执行的其它web服务应用)、和提供(provision)模块230(例如在web服务器机器110上执行的又一个web服务应用),它们都被配置为(例如经由总线、共享存储器或交换机)相互通信。

web应用210是向一个或多个设备(例如设备130)提供web服务的应用,并且web应用210可以是移动应用(例如向一个或多个移动设备提供web服务的应用)。根据一些示例实施例,验证模块220是被配置为验证一个或多个url(例如作为向一个或多个设备提供的web服务)url验证模块。提供模块230被配置为提供软件(例如浏览器可执行软件,如javascript程序或java小应用程序)。

设备130被示出为包括浏览器250(例如在设备130上执行的浏览器应用),其包括管理模块260(例如浏览器可执行软件,如javascript程序或java小应用程序)。在web服务器机器110中,提供模块230可以被配置为下载模块(例如向一个或多个设备提供软件(如管理模块260)的应用)。

本文描述的任何一个或多个模块或应用可以使用硬件(例如机器的处理器)或硬件与软件的组合来实现。例如,本文描述的任何模块或应用可以配置处理器来执行本文针对该模块描述的操作。此外,这些模块或应用中任何两个或更多个可以组合成单个模块,并且本文针对单个模块描述的功能可以细分为多个模块或应用。此外,根据各种示例实施例,本文描述为在单个机器、数据库或设备中实施的模块和应用可以分布在多个机器、数据库或设备中。

图3~6是示出并描述了根据一些示例实施例的web服务器机器110和设备130在执行将页面状态映射到url的方法300时的操作的注释流程图。方法300中的操作可以分别由web服务器机器110或设备130通过使用上文参照图2描述的一个或多个模块来执行。

如图3所示,在操作301中,设备130打开可以对应于web应用210的url。例如,设备130可以执行浏览器250,该浏览器250可以被配置为向在web服务器机器110上执行的web应用210请求网页(例如单页面网页)。该请求可以由用户132在与浏览器250交互时发起。图3中示出的示例url“http://t.d.com/x/z”包括协议名称(“http”)、域名(“d.com”)、子域名(“t”)和文件夹路径(“/x/z”)。在示出的示例url中,不存在url参数,该url参数是以问号(“?”)打头并且由&符号(“&”)分隔的字母数字串。在示出的示例url中,也不存在片段(例如散列片段、散列标签或命名锚点(namedanchor)),它们是以井号(“#”,也被称为磅字符或散列)打头的字母数字字符串。

在操作302中,通过向设备130提供内容(例如动态产生的web内容)web应用210进行响应。例如,提供的内容可以包括超文本标记语言(html)数据、层叠样式表单(css)数据、浏览器可执行软件(例如javascript文件)、或者其任何合适的组合。在一些示例实施例中,提供的内容可以包括管理模块260(例如用于在设备130上的浏览器250中执行的浏览器可执行软件)。如图3所示,提供的内容可以独立于url中指定的任何文件夹路径(例如“/x/z”)。也就是说,提供的内容可以仅仅取决于协议名称和域名,或者在备选示例实施例中,仅仅取决于协议名称、子域名和域名。

在操作303中,验证模块220验证url中指定的一些或全部的文件夹路径(例如验证“x”和“z”)。如图3所示,验证模块220可以形成url验证服务的全部或部分,该url验证服务可以作为rest服务(例如“restful”服务)来实现。将url的文件夹路径(“/x/z”,或“x”和“z”)映射到状态,并且该状态可以存储在数据库115中。验证模块220可以因此访问数据库115以验证文件夹路径的一些或全部。该验证可以响应于操作301中打开url(例如页面加载)来执行。如图3所示,数据库115可以存储有关于文件夹路径(“/x/z”)的信息,并且该有关信息可以由验证模块220(例如作为所请求网页的初始状态)来检索。根据各种示例实施例,当设备130第一次打开url时(例如初始页面加载)、当设备130重新访问url时(例如后来的页面加载)、或者这二者时,,可以执行操作303。

在操作304中,管理模块260可以(例如经由浏览器250)从验证模块220接收对文件夹路径的一些或全部(“/x/z”或“x”)的验证,并且管理模块260可以(例如经由浏览器250)从验证模块220接收有关于文件夹路径(“/x/z”)的信息。基于此,管理模块260可以允许或使得设备130(例如经由浏览器250)加载所请求的网页并且在设备130的屏幕131上显示网页。可以基于管理模块260接收的相关信息(例如存储在数据库115中,与url的文件夹路径相对应),以第一状态来加载(例如初始状态或“状态1”)所请求的网页。

在操作305中,用户132与加载的网页及其内容交互(例如激活链接、按钮或热点)。例如,用户132可以点击引用另一url的链接,该另一url可以对应于web应用210(例如“http://t.d.com/y/k”或者就是“/y/k”)。如图3中提到的,该另一url可以被映射到网页的第二状态(例如后续状态或“状态2”)。该第二状态可以存储在数据库115中。当用户132激活引用该另一url的内容时,管理模块260(例如从浏览器250通知管理模块260)检测到该活动。在一些示例实施例中,管理模块260向验证模块220请求验证该另一url的一些或全部(例如文件夹路径“/y/k”),并且验证模块220可以响应以所请求的验证以及有关于网页第二状态的信息。

在操作306中,管理模块260可以接收对与网页的第二状态相对应的另一url的一些或全部(例如文件夹路径“/y/k”)的验证,并且它们接收有关于第二状态或者其对应文件夹路径(“/y/k”)的信息。基于此,管理模块260可以允许或使得设备130(例如经由浏览器250)将网页更新到其第二状态。这可以在不重新加载网页的情况下执行。如图3中提到的,用户132能够使用浏览器250中的一个或多个页面导航控制(例如“后退”按钮、“前进”按钮或者两者)在第一状态与第二状态之间切换。

如图3所示,如果浏览器250正在显示网页的第二状态(“状态2”,其被映射到文件夹路径“/y/k”),并且用户132请求浏览器250刷新网页,方法300回到操作301,在操作301中,打开针对该网页的url。然而这次url包括与网页的第二状态相对应的文件夹路径(“/y/k”,未示出)。

如图4所示,如果浏览器250正在显示网页的第一状态(“状态1”,其被映射到文件夹路径“/x/z”),并且用户132请求浏览器250刷新网页,则方法300回到操作301,在操作301中,打开针对该网页的url。如图4所示,url包括与网页的第一状态相对应的文件夹路径(“/x/z”)。否则,图4示出了类似于图3中示例实施例的示例实施例。

如图5所示,浏览器250可以使用浏览器高速缓存510来存储(例如暂时地或永久地)(例如由数据库115存储的并且由验证模块220提供的)与网页的各种状态相对应的信息。浏览器高速缓存510可以形成可由设备130容易访问的本地存储(例如存储器)或者其它数据仓库的全部或部分。在使用浏览器高速缓存510的示例实施例中,方法300包括操作501、502和503中一个或多个。

在操作501中,如果用户132请求打开url“http://t.d.com/x/z”(例如页面加载请求),管理模块260可以在浏览器高速缓存510中检查任何有关于url文件夹路径(“/x/z”)的高速缓存数据。例如,浏览器高速缓存510可以存储有关于网页的第一状态的信息(例如限定网页的第一状态的信息),并且管理模块260可以在浏览器高速缓存510中检查这样的相关信息。如果浏览器高速缓存510包含这样的高速缓存数据,则管理模块260使用该高速缓存数据来允许或使得设备130(例如通过浏览器250)加载在其第一状态下的网页,该第一状态对应于文件夹路径“/x/z”。在这种情况下,可以省略操作502和503。

在操作502中,如果浏览器高速缓存510不包含有关于文件夹路径(“/x/z”)的数据,则管理模块260请求验证模块220提供对文件夹路径的验证。该请求及其对应的由验证模块220进行的响应可以用类似于上文关于操作303描述的方式来执行。

在操作503中,管理模块260可以从验证模块220(例如经由浏览器250)接收有关于文件夹路径(“/x/z”)的信息,并且管理模块260可以在浏览器高速缓存510中存储(例如高速缓存)该接收的信息。因此,该相关数据可以是可用的,并且可以供浏览器250容易访问,以响应将来的打开url“http://t.d.com/x/z”的请求。如上所述,在操作304中,管理模块260可以(例如经由浏览器250)接收对文件夹路径(“/x/z”)的一些或全部的验证,并且基于该验证,管理模块260可以允许或使得设备130(例如经由浏览器250)加载在其第一状态下的网页,该第一状态对应于文件夹路径“/x/z”。根据各种示例实施例,操作503可以在操作304之前执行、可以结合操作304执行、作为操作304的一部分来执行、或者在操作304之后执行。

如图6所示,在验证模块220没有提供对文件夹路径“/x/z”的验证的情况下,或者是在验证模块220提供指示文件夹路径(例如“x”或“z”)的一些或全部无效的响应的情况下,方法300可以包括操作604和605中的一个或多个以处理这样的错误情况。在图6中示出的示例中,文件夹路径“/x/z”是部分无效的。具体地,在该示例中,“x”是有效的,而“z”并不是。例如,“x”可以是未到期的(例如作为用于指明文件夹路径的一部分的字母数字串),而“z”可以是到期的(例如作为用于指明文件夹路径的一部分的字母数字串)。

在操作604中,管理模块260可以(例如经由浏览器250)从验证模块220接收仅关于文件夹路径的有效部分(例如“x”)的信息。基于此,在操作605中,管理模块260可以(例如基于在操作604中接收的信息)允许或使得设备130(经由浏览器250)在与文件夹路径的有效部分相对应的状态下加载请求的网页。在一些示例实施例中,该状态与网页的第一状态(例如初始状态或“状态1”)相同。

图7~8是示出了根据一些示例实施例的在执行将页面状态映射到url的方法700时web服务器机器110的操作的流程图。方法700中的操作可以使用上文参照图2描述的模块和应用来执行。如图7所示,方法700包括操作710、720、730和740。

在操作710中,web服务器机器110的web应用210接收引用第一url(例如“http://t.d.com/x/z”,具有第一文件夹路径“/x/z”)的请求(例如页面请求),可通过该第一url来定位文件(例如具有动态产生的内容的网页),用于在浏览器250中显示(例如经由设备130的屏幕131来显示)。该第一url可以对应于第一状态,在第一状态下,文件具有第一外观(例如,内容的第一布置、内容要素的第一集合,或者这二者)。例如,web应用210可以接收包括第一url在内的请求,其可以用于定位动态产生的内容的单页面网页。

在操作720中,web应用210向浏览器250提供所请求的在其第一状态(例如具有其第一外观)下的文件。可以响应于在操作710中接收到的请求来提供所请求的文件,并且对所请求的文件的提供还可以基于第一url,该第一url可以对应于文件的第一状态(例如对应于文件的第一外观)。在其第一状态下,文件可以包括控制(例如链接、按钮、热点、或其任何合适的组合),该控制能够用于调用第二状态,在第二状态下,文件具有第二外观(例如,内容的第二布置、内容要素的第二集合,或者这二者)。控制可以引用第二url(例如“http://t.d.com/y/k”,具有第二文件夹路径“/y/k”)(例如包含对第二url的引用),通过第二url,能够定位文件,用于浏览器250中的显示。

在操作730中,web服务器机器110的验证模块220对使用控制(例如链接、按钮、热点、或其任何合适的组合)以调用文件的第二状态(例如具有文件的第二外观)进行检测。如上所述,控制可以引用(例如通过包含)第二url,并且验证模块220可以通过检测请求来检测对控制的使用,该请求是为了在浏览器250中显示而在其第二状态(例如具有其第二外观)下提供文件的请求。例如,验证模块220可以从浏览器250直接接收这样的请求(例如来自浏览器可执行软件,如管理模块260)。作为另一个示例,验证模块220可以对web应用210从浏览器250接收这样的请求进行检测(例如通过监视web应用210或从web应用210接收通知)。

响应于对控制的使用,浏览器250可以显示在其第二状态(例如具有其第二外观)下的文件。例如,有关于第二状态的信息(例如限定第二状态的信息)可以由浏览器250(例如通过管理模块260)从验证模块220、从web应用210、从数据库115、从浏览器高速缓存510或者从上述任何合适的组合处获得。

在操作740中,web服务器机器110的验证模块220将文件的第二状态映射到第二url(例如“http://t.d.com/y/k”)。例如,验证模块220可以通过存储第二url与限定文件的第二外观的数据(例如上文关于操作730描述的相关信息)之间的对应关系将第二状态映射到第二url。可以由验证模块220将对应关系、第二url、限定第二外观的数据、或其任何合适的组合存储在数据库115中(例如存储在表格的行中或作为三元组来存储)。

如图8所示,方法700可以包括操作802、810、812、830、832、840和842中的一个或多个。操作802可以在操作710之前执行,或者响应于操作710中接收的请求来执行。在操作802中,web服务器机器110的提供模块230向浏览器250提供管理模块260(例如用于在浏览器250中执行,例如作为浏览器可执行软件,如插件、小应用程序、小工具程序(widget)、脚本或者其任何合适的组合)。

在被提供到浏览器250之后,管理模块260可以配置浏览器250来存储有关于文件的第二状态(例如限定第二外观的数据)的信息,该文件能够通过第一url(例如“http://t.d.com/x/z”)来定位,该第一url由操作710中接收的请求来引用。例如,管理模块260可以配置浏览器250在浏览器高速缓存510中存储这样的相关信息。管理模块260还可以配置浏览器250存储第二url(例如“http://t.d.com/y/k”)与有关于第二状态的信息之间的对应关系。该对应关系还可以存储在浏览器高速缓存510中。管理模块260还可以配置浏览器250请求验证一个或多个url(例如第一url、第二url、或这二者)对应于文件有效状态(例如未到期状态)。

操作810可以作为操作710的一部分(例如前导任务、子程序或部分)来执行,或者与操作710并行执行,在操作710中接收引用第一url的请求。在操作810中,web服务器机器110的验证模块220接收针对验证第一url对应于文件的有效状态(例如第一状态,所述第一状态可以是非到期状态)的请求。根据各种示例实施例,验证模块220可以执行所请求的验证一些或全部(例如通过访问指示哪些url有效的数据库115中的查找表)。

在操作812中,验证模块220提供所请求的第一url(例如“http://t.d.com/x/z”,具有第一文件夹路径“/x/z”)对应于文件的有效状态的验证。例如,验证模块220可以(例如经由管理模块260)向浏览器250提供指示,该指示是对第一url对应于文件的第一状态(例如具有第一外观)以及该第一状态是文件的有效状态(例如非到期的)的指示。方法700中的操作810和812可以对应于方法300中操作303的全部或部分。在一些示例实施例中,操作720可以基于操作812中提供的验证来执行。

操作830可以作为操作730的部分来执行,或者与操作730并行执行,在操作730中验证模块220检测使用控制来调用文件第二状态。在操作830中,web服务器机器110的验证模块220接收针对验证第二url对应于文件的有效状态(例如第二状态,所述第二状态可以是非到期状态)的请求。根据各种示例实施例,验证模块220可以执行所请求的验证(例如通过访问指示哪些url有效的数据库115中的查找表)中的一些或全部。

在操作832中,验证模块220提供所请求的对第二url(例如“http://t.d.com/y/k”,具有第二文件夹路径“/y/k”)对应于文件的有效状态的验证。例如,验证模块220可以(例如经由管理模块260)向浏览器250提供指示,该指示是对第二url对应于文件的第二状态(例如具有第二外观)以及该第二状态对于文件来说是有效(例如非到期的)状态的指示。方法700中的操作830和832可以对应于方法300中的操作305的全部或部分。在一些示例实施例中,基于操作832中提供的验证,可以(例如经由管理模块260)(例如由web应用210、验证模块220、或这二者)向浏览器250提供数据,该数据限定文件的第二状态。

当浏览器250正在(例如在设备130的屏幕131上)显示文件的第二状态时,可以执行操作840。在一些示例实施例中,在其第二状态下的文件可以不具有能够用来调用文件第一状态(例如文件具有第一外观的第一状态)的任何控制(例如任何链接、按钮或热点)。在这些情况下,用户132可能希望通过给予浏览器250命令来重新显示在其第一状态下的文件,该命令用于在url历史记录(例如与浏览器250之前显示的内容相对应的url)中回溯导航。例如,用户132可能希望使浏览器250执行“后退”命令以重新显示在其第一状态下的文件。

在一些示例实施例中,当浏览器正在显示一些其它内容(例如文件的第三状态或完全另一个文件)时可以执行操作840,并且用户132可能希望重新显示在其第一状态下的文件。在这些情况下,用户132可能希望通过给予浏览器250命令来重新显示在其第一状态下的文件,该命令用于在浏览器250的url历史记录中向前导航。例如,用户132可能希望使浏览器250执行“前进”命令以重新显示在其第一状态下的文件。

在某些示例实施例中,当浏览器正在显示文件的第一状态(例如由于在url的历史记录中导航)时可以执行操作840。在这些情况下,用户132可能希望通过使浏览器250执行“重新加载”命令、“刷新”命令、或“重新绘制”命令来重新加载(例如刷新)在其第一状态下的文件。

在操作840中,web服务器机器110的验证模块220接收针对验证第一url对应于文件的有效状态(例如第一状态,该第一状态可以是非到期状态)的请求。如上所述,验证模块220可以执行(例如通过访问指示哪些url有效的数据库115中的查找表)所请求的一些或全部的验证。根据各种示例实施例,该请求的接收可以使得浏览器250执行用户命令(例如“后退”命令、“前进”命令、“刷新”命令、或者其任何合适的组合)。

在操作842中,验证模块220提供所请求的对第一url(例如“http://t.d.com/x/z”,且其第一文件夹路径是“/x/z”)对应于文件的有效状态的验证。如上所述,验证模块220可以(例如经由管理模块260)向浏览器250提供指示,该指示是对第一url对应于文件的第一状态(例如具有第一外观)以及该第一状态对于文件来说是有效(例如非到期的)状态的指示。根据一些示例实施例,可以基于操作842中提供的验证(例如由web应用210、验证模块220、或这二者)(例如经由管理模块260)向浏览器250提供限定文件的第一数据的数据。

图9是示出了根据一些示例实施例的在方法700中的操作旁边的设备130在执行使用映射到url的页面状态的方法900时的操作的流程图。可以使用上文参照图2描述的模块和应用来执行方法900中的操作。如图9所示,方法900包括操作902、904、905、912、924、926、932、934、940和944中的一个或多个。

在操作902中,设备130、浏览器250或这二者接收由web服务器机器110在操作802中提供的管理模块260。浏览器250然后可以并入或执行管理模块260(例如,作为浏览器可执行软件,例如插件、小应用程序、小工具程序、脚本、或者其任何合适的组合)。

在操作904中,浏览器250发送由web服务器机器110在操作710中接收的请求。如上所述,该请求引用第一url(例如“http://t.d.com/x/z”,且其第一文件夹路径为“/x/z”),通过第一url,文件是可定位的。

操作905可以作为操作904的部分来执行,或者与操作904并行执行。在操作905中,设备130的管理模块发送由web服务器机器110在操作810中接收的请求,操作810可以是操作710的一部分。如上所述,该请求可以是针对验证第一url(例如“http://t.d.com/x/z”)对应于文件的有效状态的请求。

在操作912中,设备130的管理模块260访问浏览器高速缓存510,并且在浏览器高速缓存510中检查限定文件的第一状态(例如限定文件的第一外观的数据)的任何数据。操作912可以响应于由web服务器机器110在操作812中提供的验证(例如对第一url对应于文件的有效状态的验证)来执行。如上所述,如果浏览器高速缓存510中出现了这样的数据,管理模块260、浏览器250或这二者可以使用(例如检索)该数据,以在设备130的屏幕131上显示在其第一状态(例如具有其第一外观)下的文件。

在操作924中,设备130上的浏览器250显示在其第一状态(具有其第一外观)下的文件,并且可以在显示在其第一状态下的文件的同时显示对应于第一状态的第一url(例如“http://t.d.com/x/z”)。根据各种示例实施例,第一url不具有任何散列片段(例如散列标签),并且在第一url中不包括任何散列片段的情况下,浏览器250显示第一url。在操作924的执行期间,设备130的管理模块260可以完全或部分地控制浏览器250。

在操作926中,管理模块260(例如作为浏览器250的一部分来执行)发送由web服务器机器110在操作830中接收的请求,操作830可以是操作730的部分。如上所述,该请求引用第二url(例如“http://t.d.com/y/k”,且其第二文件夹路径是“/y/k”),通过第二url,文件是可定位的。如上所述,该请求可以是针对验证第二url对应于文件的有效状态的请求。

在操作932中,设备130的管理模块260访问浏览器高速缓存510,并且在浏览器高速缓存510中检查限定文件的第二状态的任何数据(例如限定文件的第二外观的数据)。操作932可以响应于由web服务器机器110在操作832中提供的验证(例如对第二url对应于文件的有效状态的验证)来执行。如上所示,如果在浏览器高速缓存510中出现这样的数据,则管理模块260、浏览器250或这二者可以使用该数据在设备130的屏幕131上显示在其第二状态(例如具有其第二外观)下的文件。

在操作934中,设备130上的浏览器250显示在其第二状态(具有其第二外观)下的文件,并且可以在显示在其第二状态下的文件的同时显示对应于第二状态的第二url(例如“http://t.d.com/y/k”)。根据各种示例实施例,第二url不具有任何散列片段(例如散列标签),并且在第二url中不包括任何散列片段的情况下,浏览器250显示第二url。在操作934的执行期间,设备130的管理模块260可以完全或部分地控制浏览器250。

在操作940中,设备130上的浏览器250执行(例如由用户132提交的)用户命令来重新显示在其第一状态下的文件。例如,浏览器250可以正在显示在其第二状态(例如如上文中关于操作934描述的)下的文件,并且浏览器250可以接收并执行用户命令以在url历史记录中导航,该url的历史记录对应于浏览器250之前显示的内容(例如“后退”命令)。因此,管理模块260可以发送由web服务器机器110在操作840中接收的请求。如上所述,该请求可以是针对验证第一url对应于文件的有效状态的请求。

在操作944中,设备130上的浏览器250显示(例如重新显示)在其第一状态(具有其第一外观)下的文件,并且可以在显示在其第一状态下的文件的同时显示(例如重新显示)对应于第一状态的第一url(例如“http://t.d.com/x/z”)。如上所述,第一url可以不具有任何散列片段(例如散列标签),并且在第一url中不包括任何散列片段的情况下,浏览器250可以显示第一url。在操作944的执行期间,设备130的管理模块260可以完全或部分地控制浏览器250。

根据各种示例实施例,本文描述的一个或多个方法可以便于将页面状态映射到url。此外,本文描述的一个或多个方法可以便于对映射到url的页面状态的使用,包括对url的验证、对限定页面状态的数据的高速缓存、以及对对应于映射的url的各种页面状态的显示。因此,本文描述的一个或多个方法可以便于在url中不使用散列片段的情况下检索和呈现具有多个状态或多个外观的文件,以及便于人类可读且直观的对应于文件各种状态的url的方便且一致的使用和共享。

当总体来考虑这些效果时,本文描述的一个或多个方法可以消除针对某些效果或资源的需求,该某些效果或资源在其他情况下将在对具有多个状态或多个外观的文件的检索和呈现中涉及。通过本文描述的一个或多个方法,可以减少用户在重新访问文件的特定状态或外观时所进行的工作。可以类似地减少由(例如在网络环境100中的)一个或多个机器、数据库或设备使用的计算资源。这样的计算资源的示例包括处理器循环、网络业务、存储器使用状况、数据存储容量、功耗以及冷却能力。

图10是示出了根据一些示例实施例的机器1000的组件的框图,该机器1000能够从机器可读介质(例如机器可读存储介质、计算机可读存储介质、或者其任何合适的组合)中读取指令,并且能够整个地或部分地执行本文描述的一个或多个方法。具体地,图10示出了具有计算机系统的示例形式的机器1000的示意表示图,并且在该计算机系统中可以整个地或部分地执行用于使得机器100执行本文描述的任何一个或多个方法的指令1024(例如软件、程序、应用、小应用程序、app、或者其它可执行代码)。在备选实施例中,机器1000作为独立设备来工作,或者可以连接(例如连网)到其它机器上。在连网部署中,机器1000可以以服务器-客户端网络环境中的服务器机器或客户端机器的身份来工作,或者作为分布式(例如对等)网络环境中的对等端机器来工作。机器1000可以是服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、智能电话、web电器、网络路由器、网络交换机、网桥、或者顺序或以其他方式能够执行规定由该机器采取的特定动作的指令1024的任何机器。此外,虽然只示出了单个机器,术语“机器”还应当指单独或共同地执行指令1024以执行本文描述的一个或多个方法的全部或部分的机器的集合。

机器1000包括处理器1002(例如中央处理单元(cpu)、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、射频集成电路(rfic)、或者其任何合适的组合)、主存储器1004和静态存储器1006,上述部件被配置为经由总线1008来相互通信。机器1000还可以包括图形显示器1010(例如等离子显示面板(pdp)、发光二极管(led)显示器、液晶显示器(lcd)、投影仪、或者阴极射线管(crt))。机器1000还可以包括字母数字输入设备1012(例如键盘)、光标控制设备1014(例如鼠标、触控板、轨迹球、摇杆、运动传感器、或其它指向仪器)、存储单元1016、信号产生设备1018(例如扬声器)、以及网络接口设备1020。

存储单元1016包括机器可读介质1022,在机器可读介质1022上存储了表现本文描述的任何一个或多个方法或功能的指令1024。在机器1000执行指令1024时,指令1024还可以完全地或至少部分地位于主存储器1004中、位于处理器1002(例如位于处理器的高速缓存存储器中)中、或者这二者。因此,主存储器1004和处理器1002可被视为机器可读介质。指令1024可以经由网络接口设备1020在网络1026(例如网络190)上发送或接收。

如本文中使用的,术语“存储器”是指能够暂时或永久地存储数据的机器可读介质,并且存储器是指可以包括但不限于:随机存取存储器(ram)、只读存储器(rom)、缓冲存储器、闪存、以及高速缓冲存储器。虽然在示例实施例中示出机器可读介质1022为单个介质,但是术语“机器可读介质”应当指的是包括能够存储指令的单个介质或多个介质(例如集中或分布式数据库,或关联的高速高速缓存和服务器)。术语“机器可读介质”还应当指包括任何介质或多个介质的组合,其能够存储由机器(例如机器1000)执行的指令,使得当机器的一个或多个处理器(例如处理器1002)执行指令时,使得机器执行本文描述的一个或多个方法。因此,“机器可读介质”指的是单个存储装置或设备,以及包括多个存储装置或设备在内的“基于云”的存储系统或存储网络。术语“机器可读介质”因此应当指包括但不限于:具有固态存储器形式的一个或多个数据仓库、光学介质、磁性介质、或者其任何合适的组合。

在整个说明书中,多个实例可以实现描述为单个实例的组件、操作或结构。尽管将一个或多个方法的各个操作示出和描述为分开的操作,但是各个操作中的一个或多个可以并发执行,并且不要求按所示出的顺序来执行各操作。在示例配置中作为分开的组件呈现的结构和功能可以作为组合的结构或组件来实现。类似地,作为单一组件呈现的结构和功能可以作为分开的组件来实现。这些和其它的变化、修改、添加和改进在本文主题的范围之内。

某些实施例在本文中被描述为包括逻辑或多个组件、模块或机制。模块可以构成软件模块(例如体现在机器可读介质上的代码或以传输信号体现的代码)或硬件模块。“硬件模块”是能够执行某些操作并可以按特定物理方式来配置或布置的有形单元。在各种示例实施例中,一个或多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或多个硬件模块(例如处理器或处理器组)可以由软件(例如,应用或应用部分)配置为进行操作以执行本文描述的某些操作的硬件模块。

在一些实施例中,硬件模块可以用机械方式、电子方式、或者其任何合适的组合方式来实现。例如,硬件模块可以包括永久地被配置为执行某些操作的专用电路或逻辑。例如,硬件模块可以是专用处理器,例如现场可编程门阵列(fpga)或asic。硬件模块还可以包括暂时由软件配置以执行某些操作的可编程逻辑或电路。例如,硬件模块可以包括通用处理器或其它可编程处理器中包含的软件。将会意识到的是:对以机械方式、在专用且永久配置的电路中、或在暂时配置的电路(例如由软件配置)中实现硬件的决定可以受到成本和时间考虑因素的驱动。

因此,短语“硬件模块”应当被理解为包含有形实体,应当是物理构成的、永久配置(例如硬连线的)或暂时配置(例如编程的)以在某个方式下工作或以执行本文描述的某些操作的实体。如本文中使用的,“硬件实现模块”是指硬件模块。考虑到其中硬件模块是暂时配置(例如编程的)的实施例,每个硬件模块在任何一个时刻上不需要是已配置或已实例化的。例如,在硬件模块包括由软件配置以变为专用处理器的通用处理器的情况下,通用处理器就可以在不同时间被配置为各自不同的专用处理器(例如包括不同的硬件模块)。因此软件可以配置处理器以例如在一个时刻构成特定硬件模块并且在不同的时刻构成不同的硬件模块。

硬件模块可以向其它硬件模块提供信息,并且可以从其它硬件模块接收信息。因此,描述的硬件模块可以看做是通信耦合的。在多个硬件模块同时存在的情况下,就可以通过两个或多个硬件模块之间或之中的信号传输(例如在适当的电路和总线上)来实现通信。在其中多个硬件模块在不同的时间被配置或实例化的实施例中,就可以例如通过在多个硬件模块可访问的存储器结构中对信息的存储和检索来实现这样的硬件模块之间的通信。例如,一个硬件模块可以执行操作,并且将该操作的输出存储在与该硬件模块通信耦合的存储设备中。然后另一硬件模块可以在之后的时间访问该存储设备以检索并处理所存储的输出。硬件模块还可以发起与输入或输出设备的通信,并且能够在资源(例如信息的集合)上工作。

本文描述的示例方法的各种操作可以至少部分地由一个或多个处理器执行,该处理器被暂时地配置(例如通过软件)或永久地配置以执行有关的操作。无论是暂时地还是永久地配置,这样的处理器可以构成进行操作以执行本文描述的一个或多个操作或功能的处理器实现的模块。如本文中使用的,“处理器实现的模块”是指使用一个或多个处理器实现的硬件模块。

类似地,本文中描述的方法可以至少部分由处理器实现,处理器是硬件的示例。例如,方法的至少一些操作可以由一个或多个处理器或处理器实现的模块来执行。此外,一个或多个处理器还可以操作以支持在“云计算环境”下的操作的执行或作为“软件即服务”(saas)的操作的执行。例如,至少一些操作可以由计算机组(作为包括处理器在内的机器示例)来执行,这些操作能够经由网络(例如互联网)并且经由一个或多个适当的接口(例如应用程序接口(api))来访问。

某些操作的执行可以分布在一个或多个处理器中,并不只位于单个机器中,而且布置在多个机器中。在一些示例实施例中,一个或多个处理器或处理器实现的模块可以位于单个地理位置中(例如在家庭环境、办公室环境或服务器群中)。在其它示例实施例中,一个或多个处理器或处理器实现的模块可以分布在多个地理位置中。

本文描述的主题的一些部分可以用针对数据的操作的算法或符号化表示来呈现,该数据在机器存储器(例如计算机存储器)中存储为比特或二进制数字信号。这样的算法或符号化表示是由数据处理领域中普通技术人员用来向其它本领域技术人员传达他们工作的主旨的技术的示例。如本文中使用的,“算法”是导致期望结果的操作或类似处理的自相容序列。在该上下文中,算法和操作涉及物理量的物理操作。典型地但不是必须地,这样的量可以表现为以下形式:电、磁、或者能够由机器存储、访问、传输、组合、比较或以其他方式操作。有些时候,特别是针对常见用途,使用以下词语来指代这样的信号是方便的:“数据”、“内容”、“比特”、“值”、“要素”、“符号”、“字符”、“项”、“数量”、“数字”等等。然而这些词语仅仅是方便的标签,并且应当与适当的物理量相关联。

除非另行明确声明,否则使用这些词语“处理”、“计算(computing)”、“计算(calculating)”、“确定”、“呈现”、“显示”等等的本文讨论可以指的是机器(例如计算机)的动作或处理,该机器动作或处理对表示为物理(例如电、磁或光)量的数据进行操作或变换,物理量在一个或多个存储器(例如易失性存储器、非易失性存储器,或者其任何合适的组合)、寄存器、或者其它接收、存储、发送或显示信息的机器组件中。此外,除非另行明确声明,否则如在专利文件中常见的,本文中使用的术语“一”或“一个”是用于包括一个或多于一个实例。最后,除非另行明确声明,否则如本文中使用的,连词“或”是指非排他性的“或者”。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1