具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为了解决目前不同用户在同一时刻频繁刷新查询页面时,服务器需要处理的查询数据量过多,尤其是在数据查询业务量比较高的时候,服务器处理这么庞大的查询量,很可能会出现查询延时或者直接崩溃的问题,本发明实施例提供了一种数据查询方法,可以应用于网络数据查询业务相关的客户端,可以减小服务器的数据查询量,进而减轻了服务器的压力,避免出现服务器崩溃的情况。
如图1所示,本实施例的数据查询方法,包括:
步骤101,当接收到服务器根据数据查询请求发送的数据查询结果时,根据数据查询结果,将已查询到的字段信息进行缓存。
在上述技术方案中,当用户需要进行查询数据时,可以通过客户端进行相应数据查询,客户端应用程序(例如,浏览器等)向服务器发送数据查询请求,服务器根据该数据查询请求进行搜索获得相应的查询结果,然后将查询结果返回给客户端,客户端对已查询到的字段信息进行缓存,具体可以缓存在本地的内存、硬盘或其它存储介质中。
对于本实施例的执行主体可以为网络数据查询业务相关的客户端、设备等,也可以为配置在该客户端、设备等中用于优化数据查询功能的装置。
步骤102,当需要再次向服务器发送数据查询请求时,从缓存中获取已查询到的字段信息,并确定数据查询请求相应的未查询到的字段信息。
在上述技术方案中,如果服务器需要处理的数据查询请求量比较大,服务器负载较高,有可能不能查出全部的查询结果,服务器会将搜索到的一部分查询结果,反馈至客户端,此时客户端不能完整的显示查询结果,用户不能查看到完整的数据,通常用户会对客户端的查询页面进行重复刷新,重复向服务器发送相同数据的查询请求。如果客户端接收到的查询结果是部分查询结果,也就是需要查询的N个字段只返回了其中M个字段的查询结果,客户端就会对该M个字段对应的已查询到的字段信息进行缓存,并确定出查询请求中的剩余的N-M个未查询到的字段信息。
步骤103,根据未查询到的字段信息,向服务器发送新的数据查询请求,以使得服务器返回与未查询到的字段信息相应的数据查询结果。
在上述技术方案中,客户端根据剩余的N-M个未查询到的字段信息,生成新的数据查询请求,并发送给服务器。这样服务器无需对全部N个字段进行查询,只需针对这N-M个未查询到的字段信息进行查询,降低了服务器的查询量,避免了服务器由于查询量过大而出现奔溃的情况。
进一步的,作为上述实施例的细化和扩展,目前在展示查询结果之前,通常会将查询到的数据结果一次性进行渲染,以便展示该查询到的数据结果,然而客户端所在终端的硬件能力有限,一次性渲染过大的数据查询结果,会造成客户端应用崩溃,最终还是会造成查询页面无法正确显示,为了解决该问题,如图2所示,在本发明的一个可选实施例中,基于上述实施例提供的上述数据查询方法,该方法还包括:
步骤104,检测一次数据查询请求查询到的字段信息是否需要分页显示。
在上述技术方案中,若某一次数据查询请求查询到的字段信息内容比较多,超出预定数值,此时一个页面无法全部展示,这样就需要进行分页显示,这种情况是客户端自动根据查询结果的内容量进行智能分配是否需要进行分页显示。也可以在客户端上设置分页显示按钮,这样用户也可以根据自己的实际需要进行选择,当需要进行分页时只需触发该分页显示按钮即可。
步骤105,若是,则对一次数据查询请求查询到的字段信息进行分页渲染。
在上述技术方案中,步骤104中的两种情况,都会生成分页显示指令,当接收到该分页显示指令时,就会将查询到的字段信息进行分页划分,并针对分页内容进行渲染,进而可以实现每次只针对当前需要显示的分页内容进行渲染,无需对所有查询到内容一次性渲染,减少了客户端应用的渲染量,从而避免出现客户端应用崩溃的情况。
进一步的,如图3所示,在具体实施例中,上述步骤104具体包括:
步骤1041,检测一次数据查询请求查询到的字段信息是否为需要查询字段的部分字段信息。
例如,当服务器接收到新的数据查询请求后,查询之前未查询到的字段信息,并将相应的数据查询结果发送至客户端。客户端接收到该数据查询结果后,先判断该查询结果是否为需要查询字段的部分字段信息,即之前未查询到的那部分字段信息,或还是不完整的那部分字段信息。
步骤1042,若是,则根据部分字段信息,并从缓存中结合需要查询字段相应的已查询到的字段信息,组成本次数据查询请求查询到的字段信息。
在上述技术方案中,当客户端判断出该查询结果是需要查询字段的部分字段信息,由于客户端在步骤101中已经将与该部分字段信息相对应的已经查询到的字段信息进行缓存,因此,只需将缓存的已经查询到的字段信息调取出来并与部分字段信息进行融合,形成本次数据查询请求查询到的字段信息,进而得到相比上一次查询请求更加完整的查询结果。
步骤1043,检测组成后的字段信息是否需要分页显示。
在上述技术方案中,当组成后的字段信息内容量超过预定数值,或者用户触发分页显示按钮时,就需要对组成后的字段信息进行分页显示。
通过上述技术方案,既可以得到相比上一次查询请求更加完整的查询结果,又避免了服务器的查询压力过大,而造成服务器崩溃的情况。
进一步的,如图4所示,在具体实施例中,上述步骤105具体包括:
步骤1051,对当前需要显示的分页上的字段信息进行渲染,并将其余分页上隐藏显示的字段信息通过预设textarea文本输入控件缓存在隐藏文本域中。
例如,针对用户当前打开分页的字段信息进行渲染,将其余分页的字段信息缓存在隐藏文本域中。通过预设textarea文本输入控件进行缓存,不会渲染客户端浏览器的DOM树,这样就不会给浏览器造成压力。
步骤1052,当接收到分页选择显示的指令时,从隐藏文本域中获取被选择显示的分页上的字段信息进行渲染。
例如,当用户触发其余分页对应的页面时,就会向客户端输入分页选择显示的指令,客户端就会从隐藏文本域中将用户触发的页面的字段信息调取出来,并对其进行渲染,就完成了对用户当前打开的页面进行渲染的目的。
通过上述技术方案,将除用户当前打开页面的其余页面的内容进行隐藏,只有当用户需要打开其余页面时才对其进行渲染,使客户端无需对全部的页面内容进行渲染,减少了客户端的渲染量,减轻了客户端的压力,有效避免了客户端浏览器出现崩溃的情况。
在具体实施例中,为了满足不同用户的个性需要,实现不同的业务需求,上述步骤105之前还可以包括:
步骤105’,获取分页渲染指令对应的分页类别,按照分页类别对一次数据查询请求查询到的字段信息进行分页。
当字段信息内容量超过预定数值,或者用户触发分页显示按钮时,就会向客户端输入分页渲染指令,该分页渲染指令中携带分页类别,这样就可以根据该分页类别对字段信息进行分页。例如,分页类别为时间段,客户端的浏览器就根据用户设定的时间段进行分页,用户设定的时间段可以为一小时、一天等。又例如,分页类别为字段,客户端的浏览器就会将查询请求划分的字段数量作为分页数量,进行分页划分,每页显示的内容为每个字段对应的查询内容。
在具体实施例中,上述步骤105具体包括:
步骤1051’,对查询到的字段信息中的HTML文档和CSS样式表进行解析形成DOM树和CSSOM树。
步骤1052’,根据DOM树和CSSOM树形成渲染树,并在渲染树内对每一个渲染节点进行布局,计算渲染节点中每一个元素的大小和位置。
步骤1053’,根据每一个元素的大小和位置对查询到的字段信息进行渲染。
在上述技术方案中,服务器返回的查询到的字段信息中有HTML文档(超文本标记文档),在HTML文档中,将整个文档是一个文档节点,每个HTML标签是一个元素节点,包含在HTML元素中的文本是文本节点,每一个HTML属性是一个属性节点,注释属于注释节点,构建DOM树。同时根据CSS样式表(Cascading Style Sheets,层叠样式表)中的网页对象和模型样式编辑排版,构建CSSOM树。这样就可以根据DOM树和CSSOM树形成渲染树,根据渲染树中对字段信息中每一个元素的大小和位置进行渲染,呈现给用户一个多彩的页面。
在具体实施例中,为了缓解客户端所在终端的硬件压力,上述步骤101具体可以包括:
将已查询到的字段信息进行缓存,并记录相应的缓存时间;根据缓存时间和预置过期时长,按照预定时间间隔对缓存中的过期字段信息进行清理。
在上述技术方案中,当服务器将查询结果发送至客户端后,客户端对查询结果相对应的已查询到的字段信息进行缓存时,获取客户端计时器的当前时间,并以该当前时间为缓存时间进行记录。然后每间隔预定时间间隔(例如1ms、10ms、1s或者实时或者根据实际情况进行设定)查询缓存中的字段信息的缓存时长是否超过预置过期时长,并将超过预置过期时长的字段信息确定为过期字段信息,并将其进行清理。
例如,用户通过电脑上的浏览器查询“丁香花”时,浏览器根据“丁香花”形成数据查询请求,并发送给服务器,服务器12时00分23秒将“丁香花”的查询结果发送至浏览器,浏览器接收到查询结果后将12时00分23秒记录下来,用户设定的预置过期时长为10分钟,浏览器每间隔1s对缓存的字段信息清理一次,当浏览器在12时10分24秒再对缓存的字段信息进行清理时,此时“丁香花”对应的缓存字段信息缓存已经超过10分钟,成为过期字段信息,就会将“丁香花”对应的过期字段信息清理出去,进行删除。
通过本实施例的上述技术方案,客户端可以直接从本地缓存中获取之前已经查询到的数据内容,无需再向服务器发送这部分已查询到的字段数据的查询请求,只需发送未查询到的字段数据的查询请求即可。这样服务器无需再次对查询页面的全部字段数据进行查询,只需针对该查询页面之前未查询到的字段数据进行查询即可,通过这种方式减小了服务器的查询量,有效避免了由于查询量过大导致出现服务器崩溃的情况。并且通过分页渲染的方式,可以实现每次只针对当前需要显示的分页内容进行渲染,无需对所有查询到内容一次性渲染,减少了客户端应用的渲染量,从而避免出现客户端应用崩溃的情况。
作为图1所示方法的具体实现,本发明实施例提供了一种数据查询装置,如图5所示,包括:缓存单元21、字段信息确定单元22和请求发送单元23。
缓存单元21,用于当接收到服务器根据数据查询请求发送的数据查询结果时,根据数据查询结果,将已查询到的字段信息进行缓存;
字段信息确定单元22,用于当需要再次向服务器发送数据查询请求时,从缓存中获取已查询到的字段信息,并确定数据查询请求相应的未查询到的字段信息;
请求发送单元23,用于根据未查询到的字段信息,向服务器发送新的数据查询请求,以使得服务器返回与未查询到的字段信息相应的数据查询结果。
如图6所示,在具体实施例中,装置还包括:
检测单元24,用于检测一次数据查询请求查询到的字段信息是否需要分页显示;
渲染单元25,用于若查询到的字段信息需要分页显示,则对一次数据查询请求查询到的字段信息进行分页渲染。
如图7所示,在具体实施例中,渲染单元25,具体包括:
分页隐藏模块251,用于对当前需要显示的分页上的字段信息进行渲染,并将其余分页上隐藏显示的字段信息通过预设textarea文本输入控件缓存在隐藏文本域中;
分页渲染模块252,用于当接收到分页选择显示的指令时,从隐藏文本域中获取被选择显示的分页上的字段信息进行渲染。
如图8所示,在具体实施例中,检测单元24,具体包括:
查询模块241,用于检测一次数据查询请求查询到的字段信息是否为需要查询字段的部分字段信息;
组合模块242,用于若是需要查询字段的部分字段信息,则根据部分字段信息,并从缓存中结合需要查询字段相应的已查询到的字段信息,组成本次数据查询请求查询到的字段信息;
检测模块243,用于检测组成后的字段信息是否需要分页显示。
在具体实施例中,缓存单元21,还用于将已查询到的字段信息进行缓存,并记录相应的缓存时间;根据缓存时间和预置过期时长,按照预定时间间隔对缓存中的过期字段信息进行清理。
在具体实施例中,渲染单元25,还用于获取分页渲染指令对应的分页类别,按照分页类别对一次数据查询请求查询到的字段信息进行分页。
在具体实施例中,渲染单元25,还用于对查询到的字段信息中的HTML文档和CSS样式表进行解析形成DOM树和CSSOM树;
根据DOM树和CSSOM树形成渲染树,并在渲染树内对每一个渲染节点进行布局,计算渲染节点中每一个元素的大小和位置;
根据每一个元素的大小和位置对查询到的字段信息进行渲染。
基于上述图1-4所示方法,相应的,本发明实施例还提供了一种存储设备,其上存储有计算机程序,程序被处理器执行时实现图1-4所示数据查询方法对应的步骤。
基于上述图1-4所示方法和图5-8所示虚拟装置的实施例,本发明实施例还提供了一种数据查询的实体装置,如图9所示,包括存储设备32、处理器31其中存储设备32和处理器31均设置在总线33上。
存储设备32,用于存储计算机程序;
处理器31用于执行计算机程序以实现图1-4所示数据查询方法对应的步骤。
通过应用的上述技术方案,减小了服务器的查询量,有效避免了由于查询量过大导致出现服务器崩溃的情况。并且通过分页渲染的方式,可以实现每次只针对当前需要显示的分页内容进行渲染,无需对所有查询到内容一次性渲染,减少了客户端应用的渲染量,从而避免出现客户端应用崩溃的情况。
本发明实施例公开了:
A1、一种数据查询方法,包括:
当接收到服务器根据数据查询请求发送的数据查询结果时,根据所述数据查询结果,将已查询到的字段信息进行缓存;
当需要再次向所述服务器发送所述数据查询请求时,从所述缓存中获取所述已查询到的字段信息,并确定所述数据查询请求相应的未查询到的字段信息;
根据所述未查询到的字段信息,向所述服务器发送新的数据查询请求,以使得所述服务器返回与所述未查询到的字段信息相应的数据查询结果。
A2、如1所述的方法,所述方法还包括:
检测一次数据查询请求查询到的字段信息是否需要分页显示;
若是,则对所述一次数据查询请求查询到的字段信息进行分页渲染。
A3、如A2所述的方法,所述对所述一次数据查询请求查询到的字段信息进行分页渲染,具体包括:
对当前需要显示的分页上的字段信息进行渲染,并将其余分页上隐藏显示的字段信息通过预设textarea文本输入控件缓存在隐藏文本域中;
当接收到分页选择显示的指令时,从所述隐藏文本域中获取被选择显示的分页上的字段信息进行渲染。
A4、如A2所述的方法,所述检测一次数据查询请求查询到的字段信息是否需要分页显示,具体包括:
检测一次数据查询请求查询到的字段信息是否为需要查询字段的部分字段信息;
若是,则根据所述部分字段信息,并从缓存中结合所述需要查询字段相应的已查询到的字段信息,组成本次数据查询请求查询到的字段信息;
检测组成后的字段信息是否需要分页显示。
A5、如A1所述的方法,所述将已查询到的字段信息进行缓存,具体包括:
将已查询到的字段信息进行缓存,并记录相应的缓存时间;
根据所述缓存时间和预置过期时长,按照预定时间间隔对缓存中的过期字段信息进行清理。
A6、如A2所述的方法,所述对所述一次数据查询请求查询到的字段信息进行分页渲染之前,所述方法还包括:
获取分页渲染指令对应的分页类别,按照所述分页类别对所述一次数据查询请求查询到的字段信息进行分页。
A7、如A2所述的方法,所述对所述一次数据查询请求查询到的字段信息进行分页渲染,具体包括:
对所述查询到的字段信息中的HTML文档和CSS样式表进行解析形成DOM树和CSSOM树;
根据DOM树和CSSOM树形成渲染树,并在渲染树内对每一个渲染节点进行布局,计算渲染节点中每一个元素的大小和位置;
根据所述每一个元素的大小和位置对所述查询到的字段信息进行渲染。
B8、一种数据查询装置,包括:
缓存单元,用于当接收到服务器根据数据查询请求发送的数据查询结果时,根据所述数据查询结果,将已查询到的字段信息进行缓存;
字段信息确定单元,用于当需要再次向所述服务器发送所述数据查询请求时,从所述缓存中获取所述已查询到的字段信息,并确定所述数据查询请求相应的未查询到的字段信息;
请求发送单元,用于根据所述未查询到的字段信息,向所述服务器发送新的数据查询请求,以使得所述服务器返回与所述未查询到的字段信息相应的数据查询结果。
B9、如B8所述的装置,所述装置还包括:
检测单元,用于检测一次数据查询请求查询到的字段信息是否需要分页显示;
渲染单元,用于若查询到的字段信息需要分页显示,则对所述一次数据查询请求查询到的字段信息进行分页渲染。
B10、如B9所述的装置,所述渲染单元,具体包括:
分页隐藏模块,用于对当前需要显示的分页上的字段信息进行渲染,并将其余分页上隐藏显示的字段信息通过预设textarea文本输入控件缓存在隐藏文本域中;
分页渲染模块,用于当接收到分页选择显示的指令时,从所述隐藏文本域中获取被选择显示的分页上的字段信息进行渲染。
B11、如B9所述的装置,所述检测单元,具体包括:
查询模块,用于检测一次数据查询请求查询到的字段信息是否为需要查询字段的部分字段信息;
组合模块,用于若是需要查询字段的部分字段信息,则根据所述部分字段信息,并从缓存中结合所述需要查询字段相应的已查询到的字段信息,组成本次数据查询请求查询到的字段信息;
检测模块,用于检测组成后的字段信息是否需要分页显示。
B12、如B8所述的装置,所述缓存单元,还用于将已查询到的字段信息进行缓存,并记录相应的缓存时间;根据所述缓存时间和预置过期时长,按照预定时间间隔对缓存中的过期字段信息进行清理。
B13、如B9所述的装置,所述渲染单元,还用于获取分页渲染指令对应的分页类别,按照所述分页类别对所述一次数据查询请求查询到的字段信息进行分页。
B14、如B9所述的装置,所述渲染单元,还用于对所述查询到的字段信息中的HTML文档和CSS样式表进行解析形成DOM树和CSSOM树;
根据DOM树和CSSOM树形成渲染树,并在渲染树内对每一个渲染节点进行布局,计算渲染节点中每一个元素的大小和位置;
根据所述每一个元素的大小和位置对所述查询到的字段信息进行渲染。
C15、一种存储设备,其上存储有计算机程序,所述程序被处理器执行时实现如A1至如A7任一项所述的数据查询方法。
D16、一种数据查询装置,所述装置包括存储设备和处理器;
所述存储设备,用于存储计算机程序;
所述处理器,用于执行所述计算机程序以实现如A1至如A7任一项所述的数据查询方法。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一种数据查询方法和装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。