网页保存、网页打开方法及装置和网页浏览系统的制作方法
【专利摘要】本发明公开了一种网页保存和网页打开的方法及装置。在该网页保存方法中,在接收到保存网页的指令后,以MHTML格式保存网页的页面数据;并且在网页中包括AJAX请求时,将AJAX资源与AJAX请求相关联地保存在本地数据库中。并且在网页打开时,如果加载网页时产生AJAX请求,则在本地获取对应的AJAX资源。利用该方法,当打开网页时,即使处于断网状态,由于本地也保留着AJAX资源,由此可以在本地获取AJAX资源,从而解决了断网情况下,因为无法获取AJAX请求的AJAX资源而导致部分网页功能不能使用的问题。
【专利说明】网页保存、网页打开方法及装置和网页浏览系统
【技术领域】
[0001]本发明涉及网页浏览领域,更为具体地,涉及一种网页保存和网页打开的方法及装置,以及一种网页浏览系统。
【背景技术】
[0002]现在的网页保存形式基本上有两种。
[0003]一种是HTML+子资源的形式,就是将当前的网页保存成一个HTML文档,其图片、样式表及脚本文件等都各自以一个单独的文件保存下来,而HTML文档里的资源的路径都要相应地修改为对应于保存到本地的文件的路径。
[0004]另一种是MHTML的形式,就是将当前页面的网页数据打包保存到一个文件中,网页里面所有的数据都保存到同一个文件中,无需修改任何页面数据。
[0005]HTML+子资源的形式属于一种静态保存,只能保存当前页面已经生成好的内容。如果某部分内容是通过JS (JavaScript)生成的话,打开保存的这个HTML文件的时候,这部分内容会重新生成,那么就会出现两份重复的内容。这种保存形式还有很多问题,例如,某些网站,如新浪微博、优酷等做了域名限制,不能通过这种形式将网页保存下来。另外,还有base (基础)标签的限制等等,导致保存下来的网页跟原来网页的出入非常大。
[0006]MHTML形式遵循MHTML标准,将网页所有原始数据打包保存到一个文件当中,打开文件时,会重新执行生成页面的操作,这样就不会出现上述HTML+子资源的形式所存在的问题。因为,页面是重新执行生成,所以如果是在断网的情况下,而这个网页某部分内容是依赖于AJAX (异步JavaScript和XML)请求生成的话,那么页面也无法还原为原来页面的样子。而这个问题对于HTML+子资源的形式却不会存在。
[0007]很明显,MHTML要比HTML+子资源的形式要优秀,但是也存在该形式无法解决的问题,那就是对于依赖AJAX请求的内容,在断网的情况下无法正确生成。
[0008]本来这样的问题影响也不是很明显。但是随着业务的拓展,问题变得严重。例如,在iPad2.0上推出了稍后阅读+离线视频的结合。稍后阅读的实现正是使用MHTML形式的保存形式,可以比较完美的将所有网页保存下来。但是加上了离线视频就出问题了。很多网站的视频控件video (视频)标签是通过某个AJAX请求生成的。如果在断网情况下,那么这个视频控件无法生成,于是就无法播放已离线保存到本地的视频。因此,这个功能就因为这个问题而存在着最重大的缺陷,即网页保存下来了,视频也保存下来了,却不能离线播放。
【发明内容】
[0009]鉴于上述问题,提出了一种网页保存方法及装置,该网页保存方法及装置能够在需要保存的网页中包括AJAX请求的情况下,除了以MHTML格式保存所述网页的页面数据之外;还将将基于所述AJAX请求而获取的AJAX资源与AJAX请求相关联地保存在本地数据库中。[0010]本发明还提出了一种网页打开方法及装置,该网页打开方法及装置能够基于上述方式保存的网页数据及AJAX资源来在本地生成网页进行浏览。
[0011]本发明还提出了一种网页浏览系统,该网页浏览系统能够实现对网页内容进行离线浏览。
[0012]根据本发明的一个方面,提供了一种网页保存方法,包括:在接收到网页保存指令后,以MHTML格式保存所述网页的页面数据;以及在所述网页中包括AJAX请求的情况下,将基于所述AJAX请求而获取的AJAX资源与AJAX请求相关联地保存在本地数据库中。
[0013]在上述方面的一个或多个示例中,将基于所述AJAX请求而获取的AJAX资源保存在本地数据库中可以包括:在所述网页中包括AJAX请求的情况下,在内存中创建用于保存基于所述AJAX请求而获取的AJAX资源的AJAX资源缓存;将所述AJAX资源与所述AJAX请求相关联地保存在所述AJAX资源缓存中;以及将所述AJAX资源缓存中保存的所述AJAX资源,以数据库的形式与所述AJAX请求相关联地保存到本地数据库中。
[0014]在上述方面的一个或多个示例中,所述AJAX请求可以包括AJAX资源的URL地址,以及在将所述AJAX资源保存在所述AJAX资源缓存和本地数据库的步骤中,所述AJAX资源与所述URL地址相关联地保存。
[0015]在上述方面的一个或多个示例中,所述将所述AJAX资源保存在所述AJAX资源缓存和本地数据库的步骤在网络适配层中执行。
[0016]根据本发明的另一方面,提供了一种网页保存装置,包括:页面数据保存单元,用于在接收到网页保存指令后,以MHTML格式保存所述网页的页面数据;以及AJAX资源保存单元,用于在所述网页中包含AJAX请求的情况下,将基于所述AJAX请求而获取的AJAX资源与AJAX请求相关联地保存在本地数据库中。
[0017]在上述方面的一个或多个示例中,所述网页保存装置还可以包括:AJAX资源缓存创建单元,用于在所述网页中包括AJAX请求的情况下,在内存中创建用于保存基于所述AJAX请求而获取的AJAX资源的AJAX资源缓存;AJAX资源缓存保存单元,用于将所述AJAX资源与所述AJAX请求相关联地保存在所述AJAX资源缓存中,以及所述AJAX资源保存单元被配置为将所述AJAX资源缓存中保存的所述AJAX资源,以数据库的形式与所述AJAX请求相关联地保存到本地数据库中。
[0018]根据本发明的另一方面,提供了一种网页打开方法,包括:在接收到浏览如上所述保存的网页的网页浏览指令后,基于以所述MHTML格式保存的页面数据进行网页加载;当在加载所述网页时产生AJAX请求时,从本地读取与所述AJAX请求对应的AJAX资源;以及基于所加载的页面数据和所读取的AJAX资源,生成所述网页页面。
[0019]在上述方面的一个或多个示例中,所述从本地中读取与所述AJAX请求对应的AJAX资源可以包括:基于所述AJAX请求,从本地数据库中读取与所述AJAX请求对应的AJAX资源。
[0020]在上述方面的一个或多个示例中,所述从本地中读取与所述AJAX请求对应的AJAX资源可以包括:在本地存在所述AJAX资源缓存的情况下,基于所述AJAX请求,从所述AJAX资源缓存中读取与所述AJAX请求对应的AJAX资源。
[0021 ] 在上述方面的一个或多个示例中,所述AJAX请求可以包括AJAX资源的URL地址,以及所述AJAX资源与所述URL地址相关联地保存在所述本地数据库中,以及所述从本地中读取与所述AJAX请求对应的AJAX资源可以包括:获取本地数据库或AJAX资源缓存中保存的AJAX资源的所有URL地址的URL列表;根据所述AJAX请求中的URL地址,对所述URL列表进行完全匹配查找;在所述URL列表中查找到完全匹配的URL地址时,从所述本地数据库或AJAX资源缓存中读取与所找到的URL对应的AJAX资源;在所述URL列表中未找到完全匹配的URL地址时,使用所述AJAX请求中的URL的正则表达式进行模糊匹配查找;以及在查找到唯一一条匹配结果时,从所述本地数据库或AJAX资源缓存中读取与所查找到的URL地址对应的AJAX资源。
[0022]在上述方面的一个或多个示例中,所述从本地读取与所述AJAX请求对应的AJAX资源的步骤在网络适配层中执行。
[0023]根据本发明的另一方面,提供了一种网页打开装置,包括:页面数据加载单元,用于在接收到浏览如上所述保存的网页的网页浏览指令后,基于以所述MHTML格式保存的页面数据进行网页加载;AJAX资源读取单元,用于当在加载所述网页时产生AJAX请求时,从本地读取与所述AJAX请求对应的AJAX资源;以及网页生成单元,用于基于所加载的页面数据以及所读取的AJAX资源,生成所述网页页面。
[0024]在上述方面的一个或多个示例中,所述AJAX资源读取单元被配置为基于所述AJAX请求,从本地数据库中读取与所述AJAX请求对应的AJAX资源。
[0025]在上述方面的一个或多个示例中,在本地存在所述AJAX资源缓存的情况下,所述AJAX资源读取单元被配置为基于所述AJAX请求,从所述AJAX资源缓存中读取与所述AJAX请求对应的AJAX资源。
[0026]在上述方面的一个或多个示例中,所述AJAX请求可以包括AJAX资源的URL地址,以及所述AJAX资源与所述URL地址相关联地保存在所述本地数据库中,以及所述AJAX资源读取单元可以包括:URL列表获取单元,用于获取本地数据库或AJAX资源缓存中保存的AJAX资源的所有URL地址的URL列表;完全匹配单元,用于根据所述AJAX请求中的URL地址,对所述URL列表进行完全匹配查找;第一 AJAX资源获取单元,用于在所述URL列表中查找到完全匹配的URL地址时,从所述本地数据库或AJAX资源缓存中读取与所找到的URL对应的AJAX资源;模糊匹配单元,用于在所述URL列表中未找到完全匹配的URL地址时,使用所述AJAX请求中的URL的正则表达式进行模糊匹配查找;以及第二 AJAX资源获取单元,用于当在模糊匹配时查找到唯一一条匹配结果时,从所述本地数据库或AJAX资源缓存中读取与所找到的URL对应的AJAX资源。
[0027]根据本发明的另一方面,提供了一种网页浏览系统,包括显示单元,存储单元,如上所述的网页保存装置以及如上所述的网页打开装置。
[0028]通过使用本发明的方法和装置,在所浏览的网页页面包含AJAX请求的情况下,即使处于断网状态,也能在本地响应于AJAX请求而获得AJAX资源,从而能够在本地实现离线网页页面浏览。
[0029]为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。【专利附图】
【附图说明】
[0030]根据下述参照附图进行的详细描述,本发明的上述和其他目的、特征和优点将变得更加显而易见。在附图中:
[0031]图1示出了根据本发明的网页浏览方法的总体流程图;
[0032]图2示出了根据本发明的网页浏览系统的示意方框图;
[0033]图3示出了根据本发明的实施例的网页保存方法的示意性流程图;
[0034]图4示出了根据本发明的另一实施例的网页保存方法的示意性流程图;
[0035]图5示出了图2中的网页保存装置的一个实施例的示意方框图;
[0036]图6示出了图2中的网页保存装置的另一实施例的示意方框图;
[0037]图7是根据本发明的实施例的网页打开方法的示意流程图;
[0038]图8示意性地示出了基于AJAX请求中的URL从本地数据库读取AJAX资源的方法示例的流程图;
[0039]图9给出了图7所示的网页打开方法的变型的流程图;
[0040]图10是图2中的网页打开装置的一个实施例的示意性方框图;和
[0041]图11示出了根据本发明的AJAX资源读取单元的一个实施例的示意性方框图。
[0042]在所有附图中相同的标号指示相似或相应的特征或功能。
【具体实施方式】
[0043]下面描述本公开的各个方面。应该明白的是,本文的教导可以以多种多样形式具体体现,并且在本文中公开的任何具体结构、功能或两者仅仅是代表性的。基于本文的教导,本领域技术人员应该明白的是,本文所公开的一个方面可以独立于任何其它方面实现,并且这些方面中的两个或多个方面可以按照各种方式组合。例如,可以使用本文所阐述的任何数目的方面,实现装置或实践方法。另外,可以使用其它结构、功能、或除了本文所阐述的一个或多个方面之外或不是本文所阐述的一个或多个方面的结构和功能,实现这种装置或实践这种方法。此外,本文所描述的任何方面可以包括权利要求的至少一个元素。
[0044]在对本发明的实施例进行详细说明之前,先对本发明中涉及的AJAX技术进行简要说明。
[0045]AJAX 是 Asynchronous JavaScript+XML(异步 JavaScript 和 XML)的缩略语。AJAX技术其实是多种开发技术的有机组合,包括:利用XHTML和CSS技术实现标准界面;利用Document Object Model技术实现动态显示和交互功能;利用XML和XSLT技术来实现数据的交换和维护;利用XMLHttpRequest技术实现异步数据检索;以及利用JavaScript把一切联系起来。
[0046]传统的网络程序工作流程基本如下:客户在网页上的操作转化为HTTP请求传回服务器,而服务器接受请求以及相关数据、解析数据并将其发送给相应的处理单元后,将返回的数据转成HTML页发还给客户。这种工作流程总会让用户感觉不太舒服,因为当服务器处理数据的时候,用户只能等待。显然用户不喜欢每作一步操作后,都需要等待服务器返回新的网页,用户希望的是顺畅的使用网络程序,甚至感觉不到服务器的存在。
[0047]AJAX技术可以摆脱这种停停走走的网络交互方式,实现的方法是AJAX在客户与服务器之间插入AJAX engine, AJAX engine是用JavasSript编写的,用于负责绘制客户看到的界面以及与服务器进行通信。在会话开始后,浏览器装载AJAX engine,而不是一个网页。AJAX engine可以用异步通讯的方式将用户的输入发送给服务器,从而避免用户看着空白的网页等待服务器的响应。用户的操作会调用一个AJAX engine的javascript函数,在以前这通常会触发一个HTTP请求给服务器,所有对用户操作的响应不需要再通过服务器,诸如简单的数据检查、修改数据甚至检索网页,engine都可以处理。如果engine必须要服务器返回数据以响应用户的请求,比如需要服务器处理提交的数据或者装载新的代码或数据等,engine会采用异步通讯的方式发出请求,通常用XML,从而不会影响用户与程序的交互。
[0048]下面将参照附图描述本发明的各个实施例。
[0049]网页浏览方法及系统
[0050]图1示出了根据本发明的实施例的网页浏览方法的总体流程图。
[0051]如图1所示,首先,在步骤S10,例如响应于用户在地址栏输入URL,或者在网页上点击链接,从网络上加载网页的页面数据后,将所加载的页面数据保存到本地,比如具有网页浏览功能的终端设备的存储单元中,所述终端设备比如包括台式计算机、笔记本电脑、智能移动终端、苹果公司的IPad、个人数据助理等。页面加载流程可以如常规方式一样,可以在浏览器内核例如WebKit内核中执行。在此不再赘述。关于网页保存步骤,将在下面参照图3和图4进行详细说明。
[0052]在如上进行网页保存后,如果需要进行离线浏览,则在步骤S20,响应于打开所保存的网页的网页浏览指令,打开本地保存的网页。下文中将参考图8至图9具体说明。
[0053]图2示出了根据本发明的实施例的网页浏览系统I的示意方框图。
[0054]如图2所示,网页浏览系统I包括网页保存装置10、网页打开装置20、存储单元30以及显示单元40。
[0055]网页保存装置10被配置为在从网络上加载网页的页面数据后,将所加载的页面数据保存到本地,比如具有网页浏览功能的终端设备的存储单元30中。关于网页保存装置10,如下将参照图5和图6进行更为详细的描述。
[0056]网页打开装置20被配置为在接收到打开所保存的网页的网页浏览指令后,打开本地(比如终端设备的存储单元或缓存的本地数据库中)保存的网页。关于网页打开装置20,如下将参照图10和图11进行更为具体的描述。
[0057]存储单元30可以包括高速随机存取存储器,也可以包括非易失性存储器,比如一个或多个磁盘存储器、闪存装置或者其它固态非易失性存储器。存储单元30被配置为保存网页的页面数据、与网页中包含的AJAX请求对应的AJAX资源。显示单元40用于显示网页数据。
[0058]这里要说明的是,网页保存装置10和网页打开装置20可以利用硬件实现,也可以利用软件实现,或者可以利用软件和硬件相结合实现。比如,网页保存装置10和网页打开装置20可以利用一个或多个处理器来实现。在这种情况下,存储单元30还被配置为保存用于执行网页保存装置10和网页打开装置20的功能的应用程序。一个或多个处理器被配置为在接收到网页保存指令或网页打开指令后,调用存储单元30中保存的相应应用程序来实现网页保存或网页打开,从而实现网页保存装置10和网页打开装置20的功能。
[0059]网页保存方法及网页保存装置[0060]下面将参照图3到图4具体描述图1中的网页保存步骤。图3示出了根据本发明的实施例的网页保存方法的示意性流程图;图4示出了根据本发明的另一实施例的网页保存方法的示意性流程图。
[0061]如图3所示,在步骤SllO中,当在从网络加载网页后接收到网页保存指令,则以MHTML格式将该网页的页面数据保存在本地的存储单元30中。
[0062]接着,在步骤S120中,判断所保存的网页是否包含AJAX请求。在所保存的网页中不包含AJAX请求时,流程结束。所述AJAX请求是浏览器应用程序中的一个请求,其核心是xmlhttprequest,这种请求不用刷新页面。
[0063]在所保存的网页中包含AJAX请求时,在步骤S130,将基于所述AJAX请求而获取的AJAX资源与AJAX请求相关联地保存在本地,比如保存在本地的存储单元中。所述AJAX资源可以是在从网络加载网页时,通过网络从储存有AJAX资源的网页服务器下载的。或者,所述AJAX资源也可以通过其它途径从网页服务器获取的。
[0064]这里,AJAX资源可以是与内容数据的播放有关的数据。例如,在内容数据是视频内容的情况下,AJAX资源可以是视频内容的视频(video)标签。视频标签可以涉及视频的一些属性等等。在播放视频内容时,需要获取视频标签。
[0065]这里,所述AJAX请求可以包括AJAX资源的URL地址,所述URL地址指示用于获取AJAX资源的网络地址。所述AJAX资源与所述AJAX请求可以以数据库的形式保存在存储单元30的本地数据库中。对于一个AJAX资源,数据库具有两个字段key和value,字段key为AJAX资源的URL地址,字段value为对应的数据,即AJAX资源。这样,在解析出AJAX请求中包含的URL地址中,就可以在本地数据库中查找对应的AJAX资源。
[0066]此外,上述网页保存方法可以启用多进程来实现,比如利用一个进程保存页面数据,而启用另一进程来执行AJAX资源的保存。在这种情况下,步骤SllO可以与步骤S120、S130并行执行,也可以按任意顺序依次执行。
[0067]图4示出了根据本发明的另一实施例的网页保存方法的示意性流程图。图4中示出的实施例是对图3中示出的实施例的改进。与图3相比,图4中示出的实施例的不同之处仅仅在于利用步骤S131、S133和S135替换图3中的步骤S130,其它步骤完全相同。为了说明简便,在此仅仅对不同之处进行说明。
[0068]如图4所示,在判断出所保存的网页中包含AJAX请求时,在步骤S131,在内存中创建用于保存基于所述AJAX请求而获取的AJAX资源的AJAX资源缓存。接着,在步骤S133,将所述AJAX资源与所述AJAX请求相关联地保存在所述AJAX资源缓存中。然后,在步骤S135,将所述AJAX资源缓存中保存的所述AJAX资源,以数据库的形式与所述AJAX请求相关联地保存到本地数据库中。
[0069]根据该实施例,在打开本地保存的网页的方法在新加载的网页中包括AJAX请求的情况下,将基于AJAX请求而获取的AJAX资源缓存在内存中的AJAX缓存中。在一个示例中,可以针对所有页面中基于AJAX请求获取的AJAX资源都缓存在AJAX缓存中。在另一示例中,也可以仅在用户发出了网页保存指令的情况下,才启用AJAX缓存,将这些AJAX资源缓存在AJAX缓存中。这样,可以减少对内存的消耗。网页保存指令可以是通过由用户直接选择保存网页的指令而发起的,也可以是响应于其它指令而激活的。
[0070]这里,以WebKit的情况为例加以进一步说明。WebKit的缓存结构是这样的:MemoryCache->AppCache->HTTPCache。可以在 AppCache 和 HTTPCache 之间创建 AJAX 缓存AJAXCache,用于缓存AJAX资源。由于该AJAX缓存在网络层中实现,所以无需修改WebKit的代码。
[0071 ] 此外,为了节省内存空间,在图3和图4中示出的实施例中,还可以包括AJAX资源缓存情况步骤。比如,可以在浏览窗口关闭后,清空AJAX资源缓存中所有与该浏览窗口相关的AJAX资源。或者,可以在将AJAX资源保存到本地数据库中之后、或者当响应于网页前进或网页后退指令而重新联网加载网页时,清空AJAX缓存中所缓存的对应于网页的所有AJAX资源。
[0072]此外,步骤S133中保存AJAX资源的步骤可以在网络适配层中执行,这样可以避免对WebKit进行修改。当然,上述方法中包含的也可以分别在其它层中执行。
[0073]图5示出了根据本发明的实施例的网页保存装置10的示意框图。
[0074]如图5所示,网页保存装置10包括页面数据保存单元110和AJAX资源保存单元120。
[0075]页面数据保存单元110用于在接收到网页保存指令后,以MHTML格式保存所述网页的页面数据。AJAX资源保存单元120用于在所述网页中包含AJAX请求的情况下,将基于所述AJAX请求而获取的AJAX资源与AJAX请求相关联地保存在本地数据库中。
[0076]在本发明的另一示例中,网页保存装置10还可以包括第一判断单元(未示出),用于判断所述网页中是否包含AJAX请求。
[0077]与图4中示出的网页保存方法对应,在本发明的另一实施例中,网页保存装置10还可以包括AJAX资源缓存创建单元130和AJAX资源缓存保存单元140。
[0078]AJAX资源缓存创建单元130用于在所述网页中包括AJAX请求的情况下,在内存中创建用于保存基于所述AJAX请求而获取的AJAX资源的AJAX资源缓存。AJAX资源缓存保存单元140用于将所述AJAX资源与所述AJAX请求相关联地保存在所述AJAX资源缓存中。然后,AJAX资源保存单元将所述AJAX资源缓存中保存的所述AJAX资源,以数据库的形式与所述AJAX请求相关联地保存到本地数据库中。
[0079]同样地,为了节省内存空间,还可以另外提供AJAX资源缓存清空单元(图中未示出)。比如,AJAX资源缓存清空单元可以被配置为在浏览窗口关闭后,清空AJAX资源缓存中所有与该浏览窗口相关的AJAX资源。或者,AJAX资源缓存清空单元可以被配置为在将AJAX资源保存到本地数据库中之后、或者当响应于网页前进或网页后退指令而重新联网加载网页时,清空AJAX缓存中所缓存的对应于网页的所有AJAX资源。
[0080]在本发明的一个示例中,可以仅在用户发出了网页保存指令的情况下,才启用AJAX缓存,将这些AJAX资源缓存在AJAX缓存中。这样,可以减少对内存的消耗。网页保存指令可以是通过由用户直接选择保存网页的指令而发起的,也可以是响应于其它指令而激活的。在这种情况下,网页保存装置10还可以包括网页保存指令激活单元(未示出)。网页保存指令激活单元被配置为响应于保存页面数据中的内容数据的指令,激活保存网页的指令。
[0081]网页打开方法及网页打开装置
[0082]下面参考图7至图11描述根据本发明的实施例的网页打开方法和网页打开装置。
[0083]图7是根据本发明的实施例的网页打开方法的示意流程图。[0084]如图7所示,在步骤S210,在接收到浏览如图3中所述的网页保存方法保存的网页的网页浏览指令后,基于以所述MHTML格式保存的页面数据进行网页加载。接着,在步骤S220,判断在加载所述网页时,是否产生AJAX请求。如果不产生AJAX请求,则流程结束。
[0085]当在加载所述网页时产生AJAX请求时,则在步骤S230,从本地读取与所述AJAX请求对应的AJAX资源。这里,在一个示例中,从本地中读取与所述AJAX请求对应的AJAX资源可以包括:基于所述AJAX请求,从本地数据库中读取与所述AJAX请求对应的AJAX资源。或者,在另一示例中,在本地存在所述AJAX资源缓存的情况下,所述从本地中读取与所述AJAX请求对应的AJAX资源可以包括:基于所述AJAX请求,从所述AJAX资源缓存中读取与所述AJAX请求对应的AJAX资源。这里,从本地读取AJAX资源的操作可以在网络适配层中执行,由此可以避免对WebKit代码进行修改。
[0086]然后,在步骤S240,基于所加载的页面数据以及所读取的AJAX资源,生成网页页面。
[0087]此外,所述AJAX请求可以包括AJAX资源的URL地址,并且所述AJAX资源与所述URL地址相关联地保存在所述本地数据库中。图8示意性地示出了基于AJAX请求中的URL从本地数据库读取AJAX资源的方法示例的流程图。
[0088]如图8所示,在判断出加载网页时产生AJAX请求时,首先,在步骤S2310,获取本地数据库或AJAX资源缓存中保存的AJAX资源的所有URL地址的URL列表。接着,在步骤S2320和S2330,根据所述AJAX请求中的URL地址,对所述URL列表进行完全匹配查找。
[0089]在所述URL列表中查找到完全匹配的URL地址(步骤S2340的结果为是)时,则在步骤S2340,从所述本地数据库或AJAX资源缓存中读取与所找到的URL对应的AJAX资源,并且将所获取的AJAX资源返回给浏览器内核(比如Webkit内核)来进行渲染(步骤S2350 )。
[0090]在所述URL列表中未找到完全匹配的URL地址(步骤S2340的结果为否)时,使用所述AJAX请求中的URL的正则表达式进行模糊匹配查找,并且在步骤S2370中,判断是否存在匹配结果。
[0091]如果不存在匹配结果(步骤S2370的结果为否),则返回空数据。如果存在匹配结果(步骤S2370的结果为是),则在步骤S2380,判断所存在的匹配结果是否多于一条。
[0092]如果查找到唯——条匹配结果(步骤S2380的结果为否),则返回到步骤S2340,从所述本地数据库或AJAX资源缓存中读取与所查找到的URL地址对应的AJAX资源。如果查找到的匹配结果多于一条(步骤S2380的结果为是),则返回空数据。
[0093]此外,由于AJAX资源本身是动态请求的资源,大多数情况下,请求的URL地址也是动态变化的,所以发起查询时,可以先进行域名判断,然后进行完全匹配,匹配不中再进行正则表达式模糊匹配以提升效率和命中率。
[0094]通过使用来自本地数据库的AJAX资源,可以执行页面中发出相应AJAX请求的相关任务。在上面提到的播放视频的情况下,AJAX资源为视频标签。有了视频标签,就可以播放已存储到本地的视频节目了。
[0095]由此,即使在断网的情况下,也可以使用保存在本地数据库中的AJAX资源来响应网页中的AJAX请求,从而执行网页上的相关任务。在离线视频的示例中,响应于AJAX请求,从本地数据库中获取视频标签,从而在没有联网的情况下,也可以正常离线播放视频。
[0096]保存在本地的网页可以在没有联网的情况下打开,也可以在联网状态下打开。在联网状态下,优选可以从网络上来获取AJAX资源。这样,当网络上的AJAX资源发生变化时,能够及时使用更新后的AJAX资源。
[0097]图9给出了图7所示的网页打开方法的变型的流程图。与图7相比,图9中示出的实施例的不同之处仅仅在于增加了步骤S940和步骤S950,其它步骤与图7中完全相同。在此仅仅对所增加的步骤S940和步骤S950进行说明。
[0098]如图9所示,在步骤S220中判断出在加载网页时产生AJAX请求后,在步骤S940,判断进行网页浏览的终端设备当前是否处于联网状态。如果处于联网状态,则在步骤S950,通过网络获取AJAX资源。随后,流程进行到步骤S240。
[0099]如果处于断网状态,则进行到步骤S230,从本地读取与AJAX请求对应的AJAX资源。随后,流程进行到步骤S240。
[0100]图10是图2中的网页打开装置20的一个实施例的示意性方框图。如图2所示,网页打开装置20包括页面数据加载单元210、AJAX资源读取单元220和网页生成单元230。
[0101]页面数据加载单元210用于在接收到浏览如图3中所述的网页保存方法保存的网页的网页浏览指令后,基于以所述MHTML格式保存的页面数据进行网页加载。AJAX资源读取单元220用于当在加载所述网页时产生AJAX请求时,从本地读取与所述AJAX请求对应的AJAX资源。网页生成单元230用于基于所加载的页面数据以及所读取的AJAX资源,生成网页页面。
[0102]在本发明的一个示例中,所述AJAX资源读取单元可以被配置为基于所述AJAX请求,从本地数据库中读取与所述AJAX请求对应的AJAX资源来生成所述网页。
[0103]在本发明的另一示例中,在本地存在所述AJAX资源缓存的情况下,所述AJAX资源读取单元可以被配置为基于所述AJAX请求,从所述AJAX资源缓存中读取与所述AJAX请求对应的AJAX资源。
[0104]此外,在本发明的另一示例中,网页打开装置20还可以包括第二判断单元(未示出),用于判断在加载网页时是否产生AJAX请求。
[0105]此外,所述AJAX请求可以包括AJAX资源的URL地址,以及所述AJAX资源与所述URL地址相关联地保存在所述本地数据库中。图11示出了根据本发明的AJAX资源读取单元220的一个实施例的示意性方框图。
[0106]如图11所示,AJAX资源读取单元220可以包括URL列表获取单元2210、完全匹配单元2220、模糊匹配单元2230、第一 AJAX资源获取单元2240和第二 AJAX资源获取单元2250。
[0107]URL列表获取单元2210用于获取本地数据库或AJAX资源缓存中保存的AJAX资源的所有URL地址的URL列表。完全匹配单元2220用于根据所述AJAX请求中的URL地址,对所述URL列表进行完全匹配查找。在所述URL列表中查找到完全匹配的URL地址时,第一 AJAX资源获取单元2240从所述本地数据库或AJAX资源缓存中读取与所找到的URL对应的AJAX资源。
[0108]在所述URL列表中未找到完全匹配的URL地址时,模糊匹配单元2230使用所述AJAX请求中的URL的正则表达式进行模糊匹配查找。当在模糊匹配时查找到唯一一条匹配结果时,第二 AJAX资源获取单元2250从所述本地数据库或AJAX资源缓存中读取与所找到的URL对应的AJAX资源。当在模糊匹配时没有查找到匹配结果或者所查找到的匹配结果多于一条,则返回空数据。
[0109]在本发明中,通过添加一个AJAX缓存器,对特定网页的AJAX请求的资源进行缓存,保存网页的时候,也将这些AJAX资源也一同保存下来,那么在断网的情况下,本地也保留着一份数据,就可以解决断网情况下,因为无法获取AJAX请求的资源而导致某些网页功能不能使用的问题。这样的话,也就可以解决离线视频在断网情况下无法播放的缺陷。
[0110]示例
[0111]下面简单描述一个本发明的应用示例。
[0112]针对iPad2.0推出了稍后阅读+离线视频的结合。稍后阅读的实现正是使用MHTML形式的保存形式,可以比较完美地将所有网页保存下来。但是加上了离线视频就出问题了。很多网站的视频控件视频(video)标签是通过某个AJAX请求生成的,如果在断网情况下,那么这个视频控件无法生成,那么就无法播放离线到本地的视频。因此,这个功能就因为这个问题存在着最重大的缺陷,网页保存下来了,视频也保存下来了,却不能离线播放。
[0113]根据本发明,可以通过建立一个AJAXCache来确保在断网的情况下也能够获取到AJAX资源。
[0114]I)在带视频的页面,如youtube,点击小电视离线下载视频。下载离线视频的同时也会将当前页面添加到稍后阅读中进行保存。
[0115]2)对该页面开启AJAXCache,所有请求的AJAX资源在AJAXCache中保留一份数据。
[0116]3)当页面在后台加载完成,保存页面数据到本地,同时保存AJAXCache中对应的AJAX资源到本地,保存成功后,清空这些缓存资源释放内存。
[0117]4)断网情况下,打开离线视频,会打开稍后阅读保存的本地页面。页面在加载的过程中,会产生AJAX请求,查询AJAX缓存数据的数据库,查找对应的数据,如果有,则返回。
[0118]5)本地页面在断网的情况下,可以获取到AJAX资源,那么该页面内的所有内容都可以正确生成。
[0119]6)这样的话,可以直接在保存到本地的youtube视频页面上播放离线到本地的视频,因为video标签可以正确生成。
[0120]通过上述方法,解决了断网状态下无法播放离线视频的问题。
[0121]此外,根据本发明的方法还可以被实现为由移动终端中的处理器(比如CPU)执行的计算机程序,并且存储在移动终端的存储器中。在该计算机程序被处理器执行时,执行本发明的方法中限定的上述功能。
[0122]此外,根据本发明的方法还可以实现为一种计算机程序产品,该计算机程序产品包括计算机可读介质,在该计算机可读介质上存储有用于执行本发明的方法中限定的上述功能的计算机程序。
[0123]此外,上述方法步骤以及系统单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储设备实现。
[0124]本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现所述的功能,但是这种实现决定不应被解释为导致脱离本发明的范围。
[0125]尽管前面公开的内容示出了本发明的示例性实施例,但是应当注意,在不背离权利要求限定的本发明的范围的前提下,可以进行多种改变和修改。根据这里描述的发明实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明的元素可以以个体形式描述或要求,但是也可以设想多个,除非明确限制为单数。
[0126]虽然如上参照图描述了根据本发明的各个实施例进行了描述,但是本领域技术人员应当理解,对上述本发明所提出的各个实施例,还可以在不脱离本
【发明内容】
的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。
【权利要求】
1.一种网页保存方法,包括: 在接收到网页保存指令后,以MHTML格式保存所述网页的页面数据; 在所述网页中包括AJAX请求的情况下,将基于所述AJAX请求而获取的AJAX资源与AJAX请求相关联地保存在本地数据库中。
2.根据权利要求1所述的网页保存方法,其中,将基于所述AJAX请求而获取的AJAX资源保存在本地数据库中包括: 在所述网页中包括AJAX请求的情况下,在内存中创建用于保存基于所述AJAX请求而获取的AJAX资源的AJAX资源缓存; 将所述AJAX资源与所述AJAX请求相关联地保存在所述AJAX资源缓存中;以及 将所述AJAX资源缓存中保存的所述AJAX资源,以数据库的形式与所述AJAX请求相关联地保存到本地数据库中。
3.根据权利要求2的网页保存方法,其中,所述AJAX请求包括AJAX资源的URL地址,以及在将所述AJAX资源保存在所述AJAX资源缓存和本地数据库的步骤中,所述AJAX资源与所述URL地址相关联地保存。
4.根据权利要求1至3中任何一项所述的网页保存方法,其中,所述将所述AJAX资源保存在所述AJAX资源缓存和本地数据库的步骤在网络适配层中执行。
5.一种网页保存装置,包括: 页面数据保存单元,用于在接收到网页保存指令后,以MHTML格式保存所述网页的页面数据;以及 AJAX资源保存单元,用于在所述网页中包含AJAX请求的情况下,将基于所述AJAX请求而获取的AJAX资源与AJAX请求相关联地保存在本地数据库中。
6.根据权利要求5的网页保存装置,还包括: AJAX资源缓存创建单元,用于在所述网页中包括AJAX请求的情况下,在内存中创建用于保存基于所述AJAX请求而获取的AJAX资源的AJAX资源缓存; AJAX资源缓存保存单元,用于将所述AJAX资源与所述AJAX请求相关联地保存在所述AJAX资源缓存中,以及 所述AJAX资源保存单元被配置为将所述AJAX资源缓存中保存的所述AJAX资源,以数据库的形式与所述AJAX请求相关联地保存到本地数据库中。
7.—种网页打开方法,包括: 在接收到浏览如权利要求1所述保存的网页的网页浏览指令后,基于以所述MHTML格式保存的页面数据进行网页加载; 当在加载所述网页时产生AJAX请求时,从本地读取与所述AJAX请求对应的AJAX资源;以及 基于所加载的页面数据以及所读取的AJAX资源,生成网页页面。
8.根据权利要求7的网页打开方法,其中,所述从本地中读取与所述AJAX请求对应的AJAX资源包括: 基于所述AJAX请求,从本地数据库中读取与所述AJAX请求对应的AJAX资源。
9.根据权利要求7所述的网页打开方法,其中,所述从本地中读取与所述AJAX请求对应的AJAX资源包括:在本地存在所述AJAX资源缓存的情况下,基于所述AJAX请求,从所述AJAX资源缓存中读取与所述AJAX请求对应的AJAX资源。
10.根据权利要求8或9所述的网页打开方法,其中,所述AJAX请求包括AJAX资源的URL地址,以及所述AJAX资源与所述URL地址相关联地保存在所述本地数据库中,以及 所述从本地中读取与所述AJAX请求对应的AJAX资源包括: 获取本地数据库或AJAX资源缓存中保存的AJAX资源的所有URL地址的URL列表; 根据所述AJAX请求中的URL地址,对所述URL列表进行完全匹配查找; 在所述URL列表中查找到完全匹配的URL地址时,从所述本地数据库或AJAX资源缓存中读取与所找到的URL对应的AJAX资源; 在所述URL列表中未找到完全匹配的URL地址时,使用所述AJAX请求中的URL的正则表达式进行模糊匹配查找;以及 在查找到唯一一条匹配结果时,从所述本地数据库或AJAX资源缓存中读取与所查找到的URL地址对应的AJAX资源。
11.根据权利要求7至10中任何一个所述的网页打开方法,其中,所述从本地读取与所述AJAX请求对应的AJAX资源的步骤在网络适配层中执行。
12.一种网页打开装置,包括: 页面数据加载单元,用于`在接收到浏览如权利要求1所述保存的网页的网页浏览指令后,基于以所述MHTML格式保存的页面数据进行网页加载; AJAX资源读取单元,用于当在加载所述网页时产生AJAX请求时,从本地读取与所述AJAX请求对应的AJAX资源;以及 网页生成单元,用于基于所加载的页面数据以及所读取的AJAX资源,生成网页页面。
13.根据权利要求12的网页打开装置,其中,所述AJAX资源读取单元被配置为基于所述AJAX请求,从本地数据库中读取与所述AJAX请求对应的AJAX资源来生成所述网页。
14.根据权利要求12所述的网页打开装置,其中,在本地存在所述AJAX资源缓存的情况下,所述AJAX资源读取单元被配置为基于所述AJAX请求,从所述AJAX资源缓存中读取与所述AJAX请求对应的AJAX资源。
15.根据权利要求12或13所述的网页打开装置,其中,所述AJAX请求包括AJAX资源的URL地址,以及所述AJAX资源与所述URL地址相关联地保存在所述本地数据库中,以及 所述AJAX资源读取单元包括: URL列表获取单元,用于获取本地数据库或AJAX资源缓存中保存的AJAX资源的所有URL地址的URL列表; 完全匹配单元,用于根据所述AJAX请求中的URL地址,对所述URL列表进行完全匹配查找; 第一 AJAX资源获取单元,用于在所述URL列表中查找到完全匹配的URL地址时,从所述本地数据库或AJAX资源缓存中读取与所找到的URL对应的AJAX资源; 模糊匹配单元,用于在所述URL列表中未找到完全匹配的URL地址时,使用所述AJAX请求中的URL的正则表达式进行模糊匹配查找;以及 第二 AJAX资源获取单元,用于当在模糊匹配时查找到唯一一条匹配结果时,从所述本地数据库或AJAX资源缓存中读取与所找到的URL对应的AJAX资源。
16.一种网页浏览系统,包括:显示单元,用于显示网页内容;存储单元;如权利要求5或6所述的网页保存装置;以及如权利要求12到15中 任何一个所述的网页打开装置。
【文档编号】G06F17/30GK103699674SQ201310749825
【公开日】2014年4月2日 申请日期:2013年12月31日 优先权日:2013年12月31日
【发明者】赵鸿彬 申请人:优视科技有限公司