一种数据获取方法、装置及终端与流程

文档序号:18135701发布日期:2019-07-10 10:35阅读:209来源:国知局
一种数据获取方法、装置及终端与流程

本发明涉及网络技术领域,特别是涉及一种数据获取方法、装置及终端。



背景技术:

随着互联网技术的高速发展,人们可以在终端中,通过互联网获取各种各样的网络数据。通常,为了便于提供网络服务,互联网公司在服务器中存储有各种网络数据。当希望获取网络数据时,可以在终端中,通过网络从互联网公司的服务器中获取网络数据。

然而,在线实时数据变得越来越重要、越来越丰富,终端需要实时加载的网络数据也越来越多,从而使得终端的数据加载的耗时增加,尤其是在网络状态不佳的情况下,终端获取网络数据的速度较慢。



技术实现要素:

本发明实施例的目的在于提供一种数据获取方法、装置及终端,以提高网络数据的获取速度。具体技术方案如下:

第一方面,本发明实施例提供了一种数据获取方法,应用于客户端,所述方法包括:

当检测到目标访问请求时,同时触发第一线程和第二线程执行关于所述目标访问请求的数据回调,其中,所述第一线程用于回调本地缓存中存储的缓存数据,所述第二线程用于回调服务器中存储的网络数据;

若监听到所述第一线程先获得包含缓存数据的回调结果,将所述第一线程所获得回调结果中的缓存数据,确定为所述目标访问请求对应的响应数据;

若监听到所述第二线程先获得包含网络数据的回调结果,将所述第二线程所获得回调结果中的网络数据,确定为所述目标访问请求对应的响应数据。

可选地,所述同时触发第一线程和第二线程执行关于所述目标访问请求的数据回调之前,还包括:确定所述目标访问请求对应的目标散列值;

所述同时触发第一线程和第二线程执行关于所述目标访问请求的数据回调,包括:

启动第一线程和第二线程,将所述目标散列值传递至所述第一线程,同时将所述目标访问请求传递至所述第二线程,以使得所述第一线程基于所述目标散列值,从本地缓存中进行缓存数据的回调,所述第二线程基于所述目标访问请求,从服务器进行网络数据的回调;

其中,所述本地缓存中存储有关于散列值与缓存数据的对应关系,任一散列值所对应的缓存数据为该散列值所对应访问请求的响应数据。

可选地,所述确定所述目标访问请求对应的目标散列值,包括:

确定所述目标访问请求对应的统一资源定位符url;

通过预设的散列算法,计算所述url对应的散列值,将计算得到的散列值,确定为所述目标访问请求对应的目标散列值。

可选地,所述方法还包括:

若监听到第二线程获得未包含网络数据的回调结果且第一线程未获得回调结果,则挂起所述第二线程;

所述将所述第一线程所获得回调结果中的缓存数据,确定为所述目标访问请求对应的响应数据的步骤之后,所述方法还包括:

唤醒所述第二线程;

获得所述第二线程所获得的回调结果。

可选地,所述将所述第一线程所获得回调结果中的缓存数据,确定为所述目标访问请求对应的响应数据之后,所述方法还包括:

若监听到所述第二线程获得包含网络数据的回调结果,利用所述第二线程所获得回调结果中的网络数据,更新所述本地缓存。

可选地,所述方法还包括:

若监听到所述第一线程获得未包含缓存数据的回调结果且所述第二线程未获得回调结果,终止所述第一线程。

可选地,所述方法还包括:

若监听到所述第二线程获得包含网络数据的回调结果且所述第一线程未获得回调结果,终止所述第一线程。

可选地,所述本地缓存包括:内存缓存和磁盘缓存;

所述第一线程回调本地缓存中存储的缓存数据的过程,包括:

所述第一线程判断所述内存缓存是否存在所述目标访问请求对应的缓存数据;

当判断结果为是时,从所述内存缓存中回调所述目标访问请求对应的缓存数据;

当判断结果为否时,判断所述磁盘缓存是否存在所述目标访问请求对应的缓存数据,如果存在,从所述磁盘缓存中回调所述目标访问请求对应的缓存数据,否则,判定所述本地缓存中不存在所述目标访问请求对应的缓存数据。

第二方面,本发明实施例提供了一种数据获取装置,应用于客户端,所述装置包括:

触发模块,用于当检测到目标访问请求时,同时触发第一线程和第二线程执行关于所述目标访问请求的数据回调,其中,所述第一线程用于回调本地缓存中存储的缓存数据,所述第二线程用于回调服务器中存储的网络数据;

第一确定模块,用于若监听到所述第一线程先获得包含缓存数据的回调结果,将所述第一线程所获得回调结果中的缓存数据,确定为所述目标访问请求对应的响应数据;

第二确定模块,用于若监听到所述第二线程先获得包含网络数据的回调结果,将所述第二线程所获得回调结果中的网络数据,确定为所述目标访问请求对应的响应数据。

可选地,所述装置还包括:第三确定模块;

所述第三确定模块,用于在所述触发模块同时触发第一线程和第二线程执行关于所述目标访问请求的数据回调之前,确定所述目标访问请求对应的目标散列值;

所述触发模块,具体用于启动第一线程和第二线程,将所述目标散列值传递至所述第一线程,同时将所述目标访问请求传递至所述第二线程,以使得所述第一线程基于所述目标散列值,从本地缓存中进行缓存数据的回调,所述第二线程基于所述目标访问请求,从服务器进行网络数据的回调;

其中,所述本地缓存中存储有关于散列值与缓存数据的对应关系,任一散列值所对应的缓存数据为该散列值所对应访问请求的响应数据。

可选地,所述第三确定模块,具体用于确定所述目标访问请求对应的统一资源定位符url;通过预设的散列算法,计算所述url对应的散列值,将计算得到的散列值,确定为所述目标访问请求对应的目标散列值。

可选地,所述装置还包括:

挂起模块,用于若监听到第二线程获得未包含网络数据的回调结果且第一线程未获得回调结果,则挂起所述第二线程;

所述装置还包括:唤醒模块;

所述唤醒模块,用于在所述第一确定模块将所述第一线程所获得回调结果中的缓存数据,确定为所述目标访问请求对应的响应数据之后,唤醒所述第二线程;获得所述第二线程所获得的回调结果。

可选地,所述装置还包括:更新模块;

所述更新模块,用于在所述第一确定模块将所述第一线程所获得回调结果中的缓存数据,确定为所述目标访问请求对应的响应数据之后,若监听到所述第二线程获得包含网络数据的回调结果,利用所述第二线程所获得回调结果中的网络数据,更新所述本地缓存。

可选地,所述装置还包括:第一终止模块;

所述第一终止模块,用于若监听到所述第一线程获得未包含缓存数据的回调结果且所述第二线程未获得回调结果,终止所述第一线程。

可选地,所述装置还包括:第二终止模块;

所述第二终止模块,用于若监听到所述第二线程获得包含网络数据的回调结果且所述第一线程未获得回调结果,终止所述第一线程。

可选地,所述本地缓存包括:内存缓存和磁盘缓存;

所述第一线程回调本地缓存中存储的缓存数据的过程,包括:

所述第一线程判断所述内存缓存是否存在所述目标访问请求对应的缓存数据;

当判断结果为是时,从所述内存缓存中回调所述目标访问请求对应的缓存数据;

当判断结果为否时,判断所述磁盘缓存是否存在所述目标访问请求对应的缓存数据,如果存在,从所述磁盘缓存中回调所述目标访问请求对应的缓存数据,否则,判定所述本地缓存中不存在所述目标访问请求对应的缓存数据。

第三方面,本发明实施例提供了一种终端,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口、所述存储器通过所述通信总线完成相互间的通信;

所述存储器,用于存放计算机程序;

所述处理器,用于执行所述存储器上所存放的程序时,实现如上第一方面所述的一种数据获取方法步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如上第一方面所述的一种数据获取方法步骤。

第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如上第一方面所述的一种数据获取方法步骤。

本发明实施例提供的方案,基于本地缓存优化网络访问过程,当客户端检测到目标访问请求时,同时触发两个线程,其中,第一线程用于回调本地缓存中存储的缓存数据,第二线程用于回调服务器中存储的网络数据。相比于现有技术中只从服务器中进行数据回调,本发明实施例并行地从本地缓存和服务器中进行数据回调,并将先回调到的缓存数据或网络数据作为目标访问请求对应的响应数据,避免了仅仅依赖服务器的回调结果,因而可以提高网络数据的获取速度。

当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1本发明实施例提供的一种数据获取方法的第一种流程图;

图2本发明实施例提供的一种数据获取方法的第二种流程图;

图3本发明实施例提供的一种数据获取方法的第三种流程图;

图4本发明实施例提供的一种数据获取方法的第四种流程图;

图5本发明实施例提供的一种数据获取方法的第五种流程图;

图6本发明实施例提供的一种数据获取装置的结构图;

图7本发明实施例提供的一种终端的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

为了解决现有技术问题,本发明实施例提供了一种数据获取方法、装置及终端。

需要说明的是,本发明实施例所提供的一种数据获取方法,可以应用于客户端。该客户端可以是安装于终端上的应用程序,如安装在手机上的app(application,应用)等。

如图1所示,本发明实施例提供的一种数据获取方法,可以包括如下步骤:

s101,当检测到目标访问请求时,同时触发第一线程和第二线程执行关于目标访问请求的数据回调,其中,第一线程用于回调本地缓存中存储的缓存数据,第二线程用于回调服务器中存储的网络数据。

当用户在客户端发起网络访问时,客户端可以将检测到的、用户所发起的网络访问作为目标访问请求。

本实施例中,当客户端检测到目标访问请求时,为了更快地获得目标访问请求对应的响应数据,可以同时触发第一线程和第二线程。具体的,第一线程可以用于回调本地缓存中存储的缓存数据。这里的本地缓存是指:安装客户端的终端本地的缓存。第二线程可以用于回调服务器中存储的网络数据。

在执行步骤s101之前,可以先对本地缓存进行初始化,以便于管理本地缓存。具体的,可以设置本地缓存的存储空间的大小和存储空间的位置,还可以初始化在本地缓存进行数据清理的一些操作,以及设置在本地缓存进行文件淘汰的算法等。而且,在本地缓存中,可以存储各种类型的数据,如文本数据、音频数据、图像数据和视频数据等。需要说明的是,本地缓存所存储的缓存数据可以是根据服务器所存储的网络数据更新的。

本实施例的一种实现方式中,在同时触发第一线程和第二线程执行关于目标访问请求的数据回调之前,可以确定目标访问请求对应的目标散列值。相应地,同时触发第一线程和第二线程执行关于目标访问请求的数据回调,可以包括:

启动第一线程和第二线程,将目标散列值传递至第一线程,同时将目标访问请求传递至第二线程,以使得第一线程基于目标散列值,从本地缓存中进行缓存数据的回调,第二线程基于目标访问请求,从服务器进行网络数据的回调;

其中,本地缓存中存储有关于散列值与缓存数据的对应关系,任一散列值所对应的缓存数据为该散列值所对应访问请求的响应数据。

具体的,上述目标散列值可以唯一标识目标访问请求。所以在启动第一线程后,可以将目标散列值传递至第一线程,使得第一线程可以基于目标散列值从本地缓存中进行缓存数据的回调。而且,在本地缓存中可以存储有关于散列值与缓存数据的对应关系,因而当第一线程获取到目标散列值后,可以根据该对应关系,确定出目标散列值对应的缓存数据,将该缓存数据作为目标访问请求对应的响应数据。

可选地,一种具体实现方式中,确定目标访问请求对应的目标散列值,可以包括:

确定目标访问请求对应的统一资源定位符url(uniformresourcelocator,统一资源定位符);

通过预设的散列算法,计算url对应的散列值,将计算得到的散列值,确定为目标访问请求对应的目标散列值。

其中,预设的散列算法可以是md5(message-digestalgorithm,消息摘要算法)。当然,还可以通过其他的散列算法计算上述url对应的散列值。本发明对此并不限定。

本实施例的一种实现方式中,本地缓存可以包括:内存缓存和磁盘缓存。相应地,第一线程回调本地缓存中存储的缓存数据的过程,可以包括:

第一线程判断内存缓存是否存在目标访问请求对应的缓存数据;

当判断结果为是时,从内存缓存中回调目标访问请求对应的缓存数据;

当判断结果为否时,判断磁盘缓存是否存在目标访问请求对应的缓存数据,如果存在,从磁盘缓存中回调目标访问请求对应的缓存数据,否则,判定本地缓存中不存在目标访问请求对应的缓存数据。

内存缓存的存取速度较快,但数据容易丢失。磁盘缓存的存取速度较慢,但数据可以长期存储。因此,第一线程可以先从内存缓存中进行数据回调,在内存缓存中不存在目标访问请求对应的缓存数据时,第一线程可以继续从磁盘缓存中进行数据回调。这种通过多级缓存进行数据回调的方式,可以更快地获得目标访问请求对应的响应数据。

一种具体实现方式中,可以基于上述目标散列值从内存缓存和磁盘缓存中进行数据回调。具体的,可以判断内存缓存或磁盘缓存中是否存在与上述目标散列值匹配的缓存数据。而且进一步地,在判断出内存缓存或磁盘缓存中存在与上述目标散列值匹配的缓存数据后,可以先读取该缓存数据,并判断该缓存数据是否过期;若未过期,则从内存缓存或磁盘缓存中回调该缓存数据;若过期,则判定内存缓存或磁盘缓存中不存在目标访问请求对应的缓存数据。

在上述具体实现方式中,为了使用户获得较新的响应数据,可以对内存缓存和磁盘缓存中所存储的缓存数据设置一个有效性时间。而且,可以针对不同类型的缓存数据设置不同的有效性时间。也可以对内存缓存中的缓存数据和磁盘缓存中的缓存数据设置不同的有效性时间。

s102,若监听到第一线程先获得包含缓存数据的回调结果,将第一线程所获得回调结果中的缓存数据,确定为目标访问请求对应的响应数据。

当同时触发第一线程和第二线程执行关于目标访问请求的数据回调之后,第一线程和第二线程可以并行地进行数据回调。在数据回调的过程中,第一线程和第二线程获得回调结果的时间可能是不同的,即可能是第一线程先获得回调结果,也可能是第二线程先获得回调结果。而且第一线程获得的回调结果中可能包含缓存数据,也可能不包含缓存数据。第二线程获得的回调结果中可能包含网络数据,也可能不包含网络数据。

基于此,为了尽快地响应目标访问请求,即为了尽快地获得目标访问请求对应的响应数据,从同时触发第一线程和第二线程的时刻开始,只要客户端监听到第一线程和第二线程中的任一线程先获得了包含缓存数据/网络数据的回调结果,就可以将该缓存数据/网络数据确定为目标访问请求对应的响应数据。

若监听到第一线程先获得包含缓存数据的回调结果,则第二线程获得回调结果可能是以下几种情形:第一种情形,第二线程先于第一线程获得回调结果,但第二线程所获得的回调结果中未包含网络数据;第二种情形,第二线程迟于第一线程获得回调结果。

针对第一种情形,虽然第二线程先获得了回调结果,但未从服务器中成功获取网络数据,这样,在第二线程之后,第一线程获得了包含缓存数据的回调结果,即从本地缓存中成功获取了缓存数据,不仅提高了网络数据的获取速度,而且提高了网络数据获取的成功率。针对第二种情形,第一线程先获得了回调结果,且回调结果中包含缓存数据,即从本地缓存中成功获取了缓存数据,同样提高了网络数据的获取速度,而且提高了网络数据获取的成功率。

需要说明的是,由于本地缓存所存储的缓存数据可以是根据服务器所存储的网络数据更新的。所以从本地缓存中成功获取的缓存数据实质上就是网络数据。

s103,若监听到第二线程先获得包含网络数据的回调结果,将第二线程所获得回调结果中的网络数据,确定为目标访问请求对应的响应数据。

若监听到第二线程先获得包含网络数据的回调结果,即先从服务器中获取了网络数据,可以将该网络数据确定为目标访问请求对应的响应数据。

本发明实施例提供的方案,基于本地缓存优化网络访问过程,当客户端检测到目标访问请求时,同时触发两个线程,其中,第一线程用于回调本地缓存中存储的缓存数据,第二线程用于回调服务器中存储的网络数据。相比于现有技术中只从服务器中进行数据回调,本发明实施例并行地从本地缓存和服务器中进行数据回调,并将先回调到的缓存数据或网络数据作为目标访问请求对应的响应数据,避免了仅仅依赖服务器的回调结果,因而可以提高网络数据的获取速度。

在本发明实施例中,是通过“回调”的形式来通知客户端目标访问请求的请求结果,而第一线程和第二线程获得回调结果的先后时间,以及回调结果中包含数据的情况可能不同。基于此,在图1所示实施例的基础上,以下通过图2-图5所示的实施例分别介绍不同的回调情形。

如图2所示,本发明实施例提供的一种数据获取方法,可以包括如下步骤:

s201,当检测到目标访问请求时,同时触发第一线程和第二线程执行关于目标访问请求的数据回调,其中,第一线程用于回调本地缓存中存储的缓存数据,第二线程用于回调服务器中存储的网络数据。

步骤s201可以与步骤s101完全相同,在此不再赘述。

s202,若监听到第二线程获得未包含网络数据的回调结果且第一线程未获得回调结果,则挂起第二线程。

当同时触发第一线程和第二线程执行关于目标访问请求的数据回调之后,第一线程和第二线程可以并行地进行数据回调。在数据回调的过程中,第一线程和第二线程获得回调结果的时间可能是不同的。

若监听到第二线程获得未包含网络数据的回调结果且第一线程未获得回调结果,是指:先监听到第二线程获得回调结果,而该回调结果中不包含网络数据,即未从服务器中成功获取网络数据。对于客户端的开发者来说,若未能从服务器中获取网络数据,意味着,可能是服务器出现硬件或软件故障,也可能是网络连接出现故障。这样势必会影响网络数据的获取,因而,有必要将第二线程所获得的未包含网络数据的回调结果反馈至客户端。但是为了尽快地响应目标访问请求,可以先将第二线程挂起,即先不获得第二线程反馈的回调结果。而是待第一线程的数据回调结束后,再获得第二线程反馈的回调结果。

s203,若监听到第一线程获得包含缓存数据的回调结果,将第一线程所获得回调结果中的缓存数据,确定为目标访问请求对应的响应数据。

s204,唤醒第二线程。

在将第一线程所获得回调结果中的缓存数据,确定为目标访问请求对应的响应数据之后,意味着第一线程的数据回调结束,可以唤醒第二线程。唤醒第二线程,意味着可以继续进行第二线程的数据回调。

s205,获得第二线程所获得的回调结果。

由于第二线程所获得的是未包含网络数据的回调结果,因而,在该回调结果中可以包含一些状态信息。例如,这些状态信息是:未包含网络数据的状态标记、网络状态、和/或数据回调的时长等。获得这些状态信息后,可以利用这些状态信息对服务器或网络进行维护,以便于更好地响应访问请求。

s206,若监听到第二线程获得包含网络数据的回调结果且第一线程未获得回调结果,将第二线程所获得回调结果中的网络数据,确定为目标访问请求对应的响应数据。

本发明实施例提供的方案,基于本地缓存优化网络访问过程,当客户端检测到目标访问请求时,同时触发两个线程,其中,第一线程用于回调本地缓存中存储的缓存数据,第二线程用于回调服务器中存储的网络数据。相比于现有技术中只从服务器中进行数据回调,本发明实施例并行地从本地缓存和服务器中进行数据回调,并将先回调到的缓存数据或网络数据作为目标访问请求对应的响应数据,避免了仅仅依赖服务器的回调结果,因而可以提高网络数据的获取速度。而且,在第二线程先获得回调结果,且该回调结果未包含网络数据的情况下,将第二线程挂起,在第一线程的数据回调结束后,再获得第二线程的回调结果。这样,先不占用客户端的资源获取不包含网络数据的回调结果,从而可以更快地响应目标访问请求。

如图3所示,本发明实施例提供的一种数据获取方法,可以包括如下步骤:

s301,当检测到目标访问请求时,同时触发第一线程和第二线程执行关于目标访问请求的数据回调,其中,第一线程用于回调本地缓存中存储的缓存数据,第二线程用于回调服务器中存储的网络数据。

步骤s301可以与步骤s101完全相同,在此不再赘述。

s302,若监听到第一线程获得包含缓存数据的回调结果且第二线程未获得回调结果,将第一线程所获得回调结果中的缓存数据,确定为目标访问请求对应的响应数据。

s303,若监听到第二线程获得包含网络数据的回调结果,利用第二线程所获得回调结果中的网络数据,更新本地缓存。

在将第一线程所获得回调结果中的缓存数据,确定为目标访问请求对应的响应数据之后,意味着第一线程的数据回调结束。

在第一线程的数据回调结束之后,若第二线程获得了回调结果,且该回调结果中包含网络数据,则可以利用第二线程所获得回调结果中的网络数据,更新本地缓存。

具体的,更新本地缓存的步骤可以包括:判断第二线程回调结果中的网络数据是否与第一线程回调结果中的缓存数据相同,若不相同,则将本地缓存中的该缓存数据更新为该网络数据。

当然,如果第二线程回调结果中的网络数据与第一线程回调结果中的缓存数据相同,则不需要更新本地缓存。

利用第二线程所获得回调结果中的网络数据更新本地缓存之后,当客户端再次检测到目标访问请求后,可以更快地从本地缓存中获得目标访问请求对应的响应数据。而且,使得本地缓存中存储有响应了目标访问请求之后的最新的缓存数据。

在一种实现方式中,本地缓存可以包括:内存缓存和磁盘缓存。相应地,更新本地缓存的顺序可以是:先更新磁盘缓存,再更新内存缓存,以保证两级缓存中缓存数据的一致性。

s304,若监听到第二线程获得包含网络数据的回调结果且第一线程未获得回调结果,将第二线程所获得回调结果中的网络数据,确定为目标访问请求对应的响应数据。

本发明实施例提供的方案,基于本地缓存优化网络访问过程,当客户端检测到目标访问请求时,同时触发两个线程,其中,第一线程用于回调本地缓存中存储的缓存数据,第二线程用于回调服务器中存储的网络数据。相比于现有技术中只从服务器中进行数据回调,本发明实施例并行地从本地缓存和服务器中进行数据回调,并将先回调到的缓存数据或网络数据作为目标访问请求对应的响应数据,避免了仅仅依赖服务器的回调结果,因而可以提高网络数据的获取速度。而且,利用在第一线程的数据回调结束之后,获得的第二线程回调结果中的网络数据,更新本地缓存。这样可以更快地响应再次检测到的目标访问请求。

如图4所示,本发明实施例提供的一种数据获取方法,可以包括如下步骤:

s401,当检测到目标访问请求时,同时触发第一线程和第二线程执行关于目标访问请求的数据回调,其中,第一线程用于回调本地缓存中存储的缓存数据,第二线程用于回调服务器中存储的网络数据。

步骤s401可以与步骤s101完全相同,在此不再赘述。

s402,若监听到第一线程获得未包含缓存数据的回调结果且第二线程未获得回调结果,终止第一线程。

若监听到第一线程获得未包含缓存数据的回调结果且第二线程未获得回调结果,是指:先监听到第一线程获得回调结果,而该回调结果中不包含缓存数据,即未从本地缓存中成功获取缓存数据。原因可能是本地缓存中不存在缓存数据,也可能是本地缓存中的缓存数据过期了等等。因而,可以直接终止第一线程。也就是说,可以不占用客户端的资源获得第一线程反馈的回调结果。

s403,若监听到第二线程获得包含网络数据的回调结果,将第二线程所获得回调结果中的网络数据,确定为目标访问请求对应的响应数据。

s404,若监听到第一线程获得包含缓存数据的回调结果且第二线程未获得回调结果,将第一线程所获得回调结果中的缓存数据,确定为目标访问请求对应的响应数据。

本发明实施例提供的方案,基于本地缓存优化网络访问过程,当客户端检测到目标访问请求时,同时触发两个线程,其中,第一线程用于回调本地缓存中存储的缓存数据,第二线程用于回调服务器中存储的网络数据。相比于现有技术中只从服务器中进行数据回调,本发明实施例并行地从本地缓存和服务器中进行数据回调,并将先回调到的缓存数据或网络数据作为目标访问请求对应的响应数据,避免了仅仅依赖服务器的回调结果,因而可以提高网络数据的获取速度。而且,在第一线程先获得回调结果,且该回调结果不包含缓存数据的情形下,直接终止第一线程。这样不占用客户端的资源获得第一线程反馈的回调结果,从而可以更快地响应目标访问请求。

如图5所示,本发明实施例提供的一种数据获取方法,可以包括如下步骤:

s501,当检测到目标访问请求时,同时触发第一线程和第二线程执行关于目标访问请求的数据回调,其中,第一线程用于回调本地缓存中存储的缓存数据,第二线程用于回调服务器中存储的网络数据。

步骤s501可以与步骤s101完全相同,在此不再赘述。

s502,若监听到第二线程获得包含网络数据的回调结果且第一线程未获得回调结果,终止第一线程,并将第二线程所获得回调结果中的网络数据,确定为目标访问请求对应的响应数据。

若监听到第二线程获得包含网络数据的回调结果且第一线程未获得回调结果,表示:先监听到第二线程获得回调结果,且该回调结果包含网络数据,即从服务器中成功获取了网络数据。那么可以直接终止第一线程,也就是说,可以不占用客户端的资源获得第一线程反馈的回调结果。

具体的,可以先执行将第二线程所获得回调结果中的网络数据,确定为目标访问请求对应的响应数据的步骤,然后终止第一线程。这样,可以更快地响应目标访问请求。

s503,若监听到第一线程获得包含缓存数据的回调结果且第二线程未获得回调结果,将第一线程所获得回调结果中的缓存数据,确定为目标访问请求对应的响应数据。

本发明实施例提供的方案,基于本地缓存优化网络访问过程,当客户端检测到目标访问请求时,同时触发两个线程,其中,第一线程用于回调本地缓存中存储的缓存数据,第二线程用于回调服务器中存储的网络数据。相比于现有技术中只从服务器中进行数据回调,本发明实施例并行地从本地缓存和服务器中进行数据回调,并将先回调到的缓存数据或网络数据作为目标访问请求对应的响应数据,避免了仅仅依赖服务器的回调结果,因而可以提高网络数据的获取速度。而且,在第二线程先获得回调结果,且该回调结果包含网络数据的情形下,直接终止第一线程。这样不占用客户端的资源获得第一线程反馈的回调结果。进一步地,在将第二线程所获得回调结果中的网络数据,确定为目标访问请求对应的响应数据之后,终止第一线程,可以更快地响应目标访问请求。

相应于图1所示方法实施例,本发明实施例提供了一种数据获取装置,应用于客户端,如图6所示,所述装置包括:

触发模块601,用于当检测到目标访问请求时,同时触发第一线程和第二线程执行关于所述目标访问请求的数据回调,其中,所述第一线程用于回调本地缓存中存储的缓存数据,所述第二线程用于回调服务器中存储的网络数据;

第一确定模块602,用于若监听到所述第一线程先获得包含缓存数据的回调结果,将所述第一线程所获得回调结果中的缓存数据,确定为所述目标访问请求对应的响应数据;

第二确定模块603,用于若监听到所述第二线程先获得包含网络数据的回调结果,将所述第二线程所获得回调结果中的网络数据,确定为所述目标访问请求对应的响应数据。

本发明实施例提供的方案,基于本地缓存优化网络访问过程,当客户端检测到目标访问请求时,同时触发两个线程,其中,第一线程用于回调本地缓存中存储的缓存数据,第二线程用于回调服务器中存储的网络数据。相比于现有技术中只从服务器中进行数据回调,本发明实施例并行地从本地缓存和服务器中进行数据回调,并将先回调到的缓存数据或网络数据作为目标访问请求对应的响应数据,避免了仅仅依赖服务器的回调结果,因而,本发明实施例可以提高网络数据的获取速度。

可选地,所述装置还包括:第三确定模块;

所述第三确定模块,用于在所述触发模块601同时触发第一线程和第二线程执行关于所述目标访问请求的数据回调之前,确定所述目标访问请求对应的目标散列值;

所述触发模块601,具体用于启动第一线程和第二线程,将所述目标散列值传递至所述第一线程,同时将所述目标访问请求传递至所述第二线程,以使得所述第一线程基于所述目标散列值,从本地缓存中进行缓存数据的回调,所述第二线程基于所述目标访问请求,从服务器进行网络数据的回调;

其中,所述本地缓存中存储有关于散列值与缓存数据的对应关系,任一散列值所对应的缓存数据为该散列值所对应访问请求的响应数据。

可选地,所述第三确定模块,具体用于确定所述目标访问请求对应的统一资源定位符url;通过预设的散列算法,计算所述url对应的散列值,将计算得到的散列值,确定为所述目标访问请求对应的目标散列值。

可选地,所述装置还包括:

挂起模块,用于若监听到第二线程获得未包含网络数据的回调结果且第一线程未获得回调结果,则挂起所述第二线程;

所述装置还包括:唤醒模块;

所述唤醒模块,用于在所述第一确定模块602将所述第一线程所获得回调结果中的缓存数据,确定为所述目标访问请求对应的响应数据之后,唤醒所述第二线程;获得所述第二线程所获得的回调结果。

可选地,所述装置还包括:更新模块;

所述更新模块,用于在所述第一确定模块602将所述第一线程所获得回调结果中的缓存数据,确定为所述目标访问请求对应的响应数据之后,若监听到所述第二线程获得包含网络数据的回调结果,利用所述第二线程所获得回调结果中的网络数据,更新所述本地缓存。

可选地,所述装置还包括:第一终止模块;

所述第一终止模块,用于若监听到所述第一线程获得未包含缓存数据的回调结果且所述第二线程未获得回调结果,终止所述第一线程。

可选地,所述装置还包括:第二终止模块;

所述第二终止模块,用于若监听到所述第二线程获得包含网络数据的回调结果且所述第一线程未获得回调结果,终止所述第一线程。

可选地,所述本地缓存包括:内存缓存和磁盘缓存;

所述第一线程回调本地缓存中存储的缓存数据的过程,包括:

所述第一线程判断所述内存缓存是否存在所述目标访问请求对应的缓存数据;

当判断结果为是时,从所述内存缓存中回调所述目标访问请求对应的缓存数据;

当判断结果为否时,判断所述磁盘缓存是否存在所述目标访问请求对应的缓存数据,如果存在,从所述磁盘缓存中回调所述目标访问请求对应的缓存数据,否则,判定所述本地缓存中不存在所述目标访问请求对应的缓存数据。

本发明实施例还提供了一种终端,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,

存储器703,用于存放计算机程序;

处理器701,用于执行存储器703上所存放的程序时,实现上述实施例中任一的数据获取方法。

本发明实施例提供的方案,基于本地缓存优化网络访问过程,当客户端检测到目标访问请求时,同时触发两个线程,其中,第一线程用于回调本地缓存中存储的缓存数据,第二线程用于回调服务器中存储的网络数据。相比于现有技术中只从服务器中进行数据回调,本发明实施例并行地从本地缓存和服务器中进行数据回调,并将先回调到的缓存数据或网络数据作为目标访问请求对应的响应数据,避免了仅仅依赖服务器的回调结果,因而可以提高网络数据的获取速度。

上述终端提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述终端与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一的数据获取方法,以获得相同的技术效果。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一的数据获取方法,以获得相同的技术效果。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置/终端/存储介质/计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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