一种文件浏览方法及装置与流程

文档序号:17721410发布日期:2019-05-22 02:11阅读:152来源:国知局
一种文件浏览方法及装置与流程

本申请涉及计算机技术领域,具体涉及一种文件浏览方法及装置。



背景技术:

随着漫画受到越来越多用户的追崇,大量的浏览漫画的应用程序不断出现。在实际应用中,用户在通过应用程序浏览漫画时,节省流量以及阅读顺滑是检验应用程序的重要指标。

然而,用户在通过现有的应用程序浏览漫画时,由于没有预读方案,或者预读时机不够恰当,导致用户在浏览漫画时,当用户滑动稍快时,出现展位图、白块黑块等现象,使得用户感知卡顿,影响用户使用体验。因此,如何有效避免现有技术中因加载过多导致应用程序卡顿是亟待解决的技术问题。



技术实现要素:

有鉴于此,本申请实施例提供一种文件浏览方法及装置,以实现更为高效地浏览文件,提高用户体验。

为解决上述问题,本申请实施例提供的技术方案如下:

在本申请实施例的第一方面,提供了一种文件浏览方法,该方法应用于浏览文件的客户端中,所述方法包括:

响应于用户启动所述客户端,从内存缓存中获取文件,并在显示界面显示所述文件;

检测用户对所述显示界面的控制区域是否存在触发操作的行为;所述控制区域用于响应用户的触发操作,切换所述显示界面所显示的文件;

当存在触发操作行为时,确定所述控制区域响应所述触发操作后,所述显示界面当前所显示的文件;

根据所述显示界面当前所显示的文件,按顺序从所述磁盘缓存中向后读取n个文件至所述内存缓存中,以便从所述内存缓存中获取文件进行显示;所述n为预先设定的预读取文件个数,为正整数。

在一种可能的实现方式中,所述方法还包括:

根据所述显示界面当前所显示的文件,按顺序从所述磁盘缓存中向前读取m个文件至所述内存缓存中;所述m为预先设定的预读取文件个数,为小于n的正整数。

在一种可能的实现方式中,用户对所述控制区域进行触发操作的行为,包括:

用户点击所述控制区域,所述显示界面的文件自由滑动至停止;

用户在所述控制区域内拖动所述显示界面的文件,当放手后,所述显示界面的文件自由滑动至停止;所述文件自由滑动包括向上自由滑动或向下自由滑动;

用户在所述控制区域内拖动所述显示界面的文件直至切换到目标文件停止;所述目标文件为用户确定的文件。

在一种可能的实现方式中,所述确定所述控制区域响应所述触发操作后,所述显示界面当前所显示的文件,包括:

当所述显示界面内的文件停止滑动后,将所述显示界面对应的文件确定为所述显示界面当前所显示的文件;

或,将所述目标文件确定为所述显示界面当前所显示的文件。

在一种可能的实现方式中,在按顺序从所述磁盘缓存中向后读取n个文件至所述内存缓存之前,所述方法还包括:

检测所述内存缓存中是否完全包括预读取的所述n个文件;

如果完全不包括,则从所述磁盘缓存中向后读取所述n个文件至所述内存缓存中;

如果不完全包括,则确定所述内存缓存中已包括的预读取的文件数i;所述i小于n的正整数;

根据n和i确定剩余文件数,按顺序从所述磁盘缓存中向后读取所述剩余文件数个文件至所述内存缓存中。

在一种可能的实现方式中,在按顺序从所述磁盘缓存中向前读取m个文件至所述内存缓存之前,所述方法还包括:

检测所述内存缓存中是否完全包括预读取的所述m个文件;

如果完全不包括,则从所述磁盘缓存中向前读取m个文件至所述内存缓存中;

如果不完全包括,则确定所述内存缓存中已包括的预读取的文件数j;所述j为小于m的正整数;

根据m和j确定剩余文件数,按顺序从所述磁盘缓存中向前读取所述剩余文件数个文件至所述内存缓存中。

在一种可能的实现方式中,在从所述磁盘缓存中预读取文件之前,所述方法还包括:

检测所述磁盘缓存中是否包括预读取的文件;

如果不包括,则从服务器下载文件,将下载的文件保存至磁盘缓存。

在一种可能的实现方式中,所述从服务器下载文件,包括:

获取用户当前浏览进度;

根据所述浏览进度,确定与所述浏览进度对应的预读屏数以及增量;

将拼接参数与所述预读屏数相乘,获得第一参数;所述拼接参数为拼接整屏所需文件的数量;

将快速滑动概率参数与经验参数相乘后,与网络参数相加,获得第二参数;

将所述第一参数与所述第二参数相乘后,与所述增量相加,获得第三参数;

从所述服务器下载所述第三参数个文件。

在一种可能的实现方式中,其特征在于,所述方法还包括:

判断所述内存缓存中已被显示的文件数量是否大于预设阈值;

当所述内存缓存中已被显示的文件数量大于预设阈值时,则根据预设阈值和所述已被显示的文件数量,确定预删除文件数量;

按文件顺序从所述内存缓存中删除所述预删除文件数量个已被显示的文件。

在一种可能的实现方式中,所述文件为图片、文档、视频、音频中的一种。

在本申请实施例的第二方面,提供了一种文件浏览装置,所述装置应用于浏览文件的客户端,所述装置包括:

获取单元,用于响应于用户启动所述客户端,从内存缓存中获取文件,并在显示界面显示所述文件;

第一检测单元,用于检测用户对所述显示界面的控制区域是否存在触发操作的行为;所述控制区域用于响应用户的触发操作,切换所述显示界面所显示的文件;

第一确定单元,用于当存在触发操作行为时,确定所述控制区域响应所述触发操作后,所述显示界面当前所显示的文件;

第一读取单元,用于根据所述显示界面当前所显示的文件,按顺序从所述磁盘缓存中向后读取n个文件至所述内存缓存中,以便从所述内存缓存中获取文件进行显示;所述n为预先设定的预读取文件个数,为正整数。

在一种可能的实现方式中,所述装置还包括:

第二读取单元,用于根据所述显示界面当前所显示的文件,按顺序从所述磁盘缓存中向前读取m个文件至所述内存缓存中;所述m为预先设定的预读取文件个数,为小于n的正整数。

在一种可能的实现方式中,用户对所述控制区域进行触发操作的行为,包括:

用户点击所述控制区域,所述显示界面的文件自由滑动至停止;

用户在所述控制区域内拖动所述显示界面的文件,当放手后,所述显示界面的文件自由滑动至停止;所述文件自由滑动包括向上自由滑动或向下自由滑动;

用户在所述控制区域内拖动所述显示界面的文件直至切换到目标文件停止;所述目标文件为用户确定的文件。

在一种可能的实现方式中,所述确定单元,具体用于当所述显示界面内的文件停止滑动后,将所述显示界面对应的文件确定为所述显示界面当前所显示的文件;或,

所述确定单元,具体用于将所述目标文件确定为所述显示界面当前所显示的文件。

在一种可能的实现方式中,所述装置还包括:

第二检测单元,用于利用所述第一读取单元按顺序从所述磁盘缓存中向后读取n个文件至所述内存缓存中之前,检测所述内存缓存中是否完全包括预读取的所述n个文件;

所述第一读取单元,具体用于当所述第二检测单元的检测结果为完全不包括,则从所述磁盘缓存中向后读取所述n个文件至所述内存缓存中;

第二确定单元,用于当所述第二检测单元的检测结果为不完全包括,则确定所述内存缓存中已包括的预读取的文件数i;所述i小于n的正整数;

第三确定单元,用于根据n和i确定剩余文件数;

所述第一读取单元,具体用于按顺序从所述磁盘缓存中向后读取所述剩余文件数个文件至所述内存缓存中。

在一种可能的实现方式中,所述装置还包括:

第三检测单元,用于在利用所述第二读取单元按顺序从所述磁盘缓存中向前读取m个文件至所述内存缓存之前,检测所述内存缓存中是否完全包括预读取的所述m个文件;

所述第二读取单元,具体用于当所述第三检测单元的检测结果为完全不包括时,则从所述磁盘缓存中向前读取m个文件至所述内存缓存中;

第四确定单元,用于当所述第三检测单元的检测结果为不完全包括,则确定所述内存缓存中已包括的预读取的文件数j;所述j为小于m的正整数;

第五确定单元,用于根据m和j确定剩余文件数;

所述第二读取单元,具体用于按顺序从所述磁盘缓存中向前读取所述剩余文件数个文件至所述内存缓存中。

在一种可能的实现方式中,所述装置还包括:

第四检测单元,用于在利用所述第一读取单元和/或所述第二读取单元从所述磁盘缓存中读取文件之前,检测所述磁盘缓存中是否包括预读取的文件;

下载单元,用于当所述第四检测单元的检测结果为不包括,则从服务器下载文件,将下载的文件保存至磁盘缓存。

在一种可能的实现方式中,所述下载单元,包括:

获取子单元,用于获取用户当前浏览进度;

确定子单元,用于根据所述浏览进度,确定与所述浏览进度对应的预读屏数以及增量;

第一计算子单元,用于将拼接参数与所述预读屏数相乘,获得第一参数;所述拼接参数为拼接整屏所需文件的数量;

第二计算子单元,用于将快速滑动概率参数与经验参数相乘后,与网络参数相加,获得第二参数;

第三计算子单元,用于将所述第一参数与所述第二参数相乘后,与所述增量相加,获得第三参数;

下载子单元,用于从所述服务器下载所述第三参数个文件。

在一种可能的实现方式中,其特征在于,所述装置还包括:

判断单元,用于判断所述内存缓存中已被显示的文件数量是否大于预设阈值;

第六确定单元,用于当所述判断单元的判断结果为所述内存缓存中已被显示的文件数量大于预设阈值时,则根据预设阈值和所述已被显示的文件数量,确定预删除文件数量;

删除单元,用于按文件顺序从所述内存缓存中删除所述预删除文件数量个已被显示的文件。

在一种可能的实现方式中,所述文件为图片、文档、视频、音频中的一种。

由此可见,本申请实施例具有如下有益效果:

本申请实施例采用了双层缓存机制,当用户启动客户端进行文件浏览时,首先从内存缓存中获取文件,在显示界面内显示所获取的文件。同时,实时检测用户对显示界面的控制区域是否存在触发行为,当检测到存在触发行为时,确定控制区域响应触发行为后,显示界面当前所显示的文件。然后,以显示界面当前所显示的文件为基点,按文件顺序从磁盘缓存中向后读取预设个文件至内存缓存中。当用户浏览后续文件时,内存缓存中已包括后续文件,可直接从内存缓存中获取后续文件,避免出现浏览卡顿的问题。而且,是在用户感知不敏感的时机进行预读缓存,提高浏览效率以及用户使用体验。

附图说明

图1为本申请实施例提供的一种示例性应用场景的框架示意图

图2为本申请实施例提供的一种文件浏览方法的流程图;

图3为本申请实施例提供的一种文件浏览框架图;

图4为本申请实施例提供的一种文件浏览结构图;

图5为本申请实施例提供的一种文件流浏览装置结构图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。

为便于理解本申请提供的技术方案,下面将先对本申请的背景技术进行说明。

发明人在对传统的超长图和超长文件浏览技术研究中发现,传统的浏览技术中预读时机不够恰当,当用户滑动稍微快些时,出现展位图、白块黑块等现象,使得用户感知卡顿,影响用户阅读体验。

基于此,本申请提供了一种文件浏览方法及装置,利用双层缓存技术进行文件缓存,即磁盘缓存和内存缓存。当用户通过客户端浏览文件时,首先从内存缓存中获取文件并进行显示,并实时检测用户是否触发显示界面的控制区域。当检测到用户触发控制区域时,确定控制区域响应触发操作后显示界面当前所显示的文件。然后,以显示界面当前所显示的文件为基点,按照文件顺序从磁盘缓存中向后读取n个文件至内存缓存中,当用户向后浏览文件时,应用程序可以直接从内存缓存中获取。即,本申请在用户浏览显示界面当前所显示的文件时间内,进行预读操作,也就是在用户感知不敏感的时机进行缓存操作,保证用户在浏览后续文件时,后续文件已存在内存缓存中,避免卡顿现象出现,提升用户使用体验。

参见图1,该图为本申请实施例提供的示例性应用场景的框架示意图。其中,本申请实施例提供的实现报警的方法可以应用于客户端10中。

当用户需要通过客户端10浏览漫画时,启动客户端10后生成浏览界面,并从内存缓存中获取图片在显示界面内进行展示。同时,客户端10实时检测用户行为,当检测到用户在显示界面的控制区域内存在触发操作行为时,当控制区域响应触发操作后,确定显示界面当前所显示的图片。然后,以当前所显示的图片为基点,从磁盘缓存中向后读取预设个图片至内存缓存中,当用户继续浏览后续图片时,客户端10可以直接从内存缓存中读取。

本领域技术人员可以理解,图1所示的框架示意图仅是本申请的实施方式可以在其中得以实现的一个示例。本申请实施方式的适用范围不受到该框架任何方面的限制。

需要注意的是,客户端10可以承载与终端,终端可以是现有的、正在研发的或将来研发的、能够通过任何形式的有线和/或无线连接(例如,wi-fi、lan、蜂窝、同轴电缆等)相互交互的任何用户设备,包括但不限于:现有的、正在研发的或将来研发的能手机、非智能手机、平板电脑、膝上型个人计算机、桌面型个人计算机、小型计算机、中型计算机、大型计算机等。本申请的实施方式在此方面不受任何限制。还需要注意的是,本申请实施例中服务器20可以是现有的、正在研发的或将来研发的、能够提供文件存储的应用服务的设备的一个示例。本申请的实施方式在此方面不受任何限制。

为便于理解,先对本申请中的双缓存机制进行说明。其中,双缓存是指内存缓存和磁盘缓存。内存缓存是当前客户端的运行空间,缓存速度快但容量小,用于临时存储文件,供cpu直接读取。磁盘缓存是客户端的存储空间,缓存容量大速度慢,用于永久存储。通常情况下,为保证文件读取速度,cpu首先从内存缓存中读取文件,如果内存缓存中未存储文件,则再从磁盘缓存中读取文件至内存缓存。另外,客户端关闭时或者内存缓存空间较小时,内存缓存可以自动释放存储空间,即删除已缓存文件。而磁盘缓存中缓存的文件一直存在,直至客户端被删除。

为便于理解本申请的技术方案,下面将结合附图对本申请提供的文件浏览方法进行说明。

参见图2,该图为本申请实施例提供的一种文件浏览方法流程图,该方法可以应用于浏览文件的客户端,该方法可以包括:

s201:响应于用户启动客户端,从内存缓存中获取文件,并在显示界面显示文件。

本实施例中,当用户启动用于浏览文件的客户端后,从内存缓存中获取文件,并在客户端的显示界面进行文件显示。其中,文件可以为图片、文档、视频等。

可以理解的是,当文件为超长文件时,可以预先将超长文件切割成多个文件,并将切割后的多个文件上传至服务器中。当用户通过客户端浏览文件时,可以从服务器中下载相应文件。例如,漫画本身为超长图,为便于用户浏览,先将超长图切割成多张图片,将组成该漫画的多张图片上传至服务器。

s202:检测用户对显示界面的控制区域是否存在触发操作的行为,其中,控制区域用于响应用户的触发操作,切换显示界面所显示的文件。

本实施例中,当用户想要浏览上一个文件或下一个文件时,用户可以通过触发显示界面上的控制区域,实现文件的切换。因此,客户端可以实时检测用户是否对显示界面的控制区域进行触发,以便确定预读时机。

其中,用户对控制区域的触发操作可以包括以下三种,第一种是,用户点击控制区域,显示界面的文件自由滑动至停止;第二种是,用户在控制区域内拖动显示界面的文件,当放手后,显示界面的文件自由滑动至停止;第三种是,用户在控制区域内拖动显示界面的文件直至切换到目标文件停止,该目标文件为用户确定的文件。其中,文件自由滑动包括向上自由滑动或向下自由滑动。

在实际应用中,在客户端的显示界面中的控制区域可以根据用户的触发操作进行文件切换,通常情况下,显示界面顶部的控制区域在用户触发操作下,文件向下自由滑动,切换至上一个文件,以帮助用户回顾上文。显示界面底部的控制区域在用户触发操作下,文件向上自由滑动,为用户切换下一个文件,以帮助用户继续向后浏览。因此,在第一种触发操作情况下,如果用户点击显示界面顶部的控制区域,表示用户想要回顾上文,则文件自由向下滑动直至停止。如果用户点击显示界面底部的控制区域,表示用户要浏览后续文件,则文件自由向上滑动直至停止。

需要说明的是,文件从开始自由滑动至停止的时长可以预先设定,当用户触发控制区域时,显示界面的文件开始滑动,到预设时长后停止滑动,显示停止后所对应的文件。

对于第二种触发操作行为,用户可以在控制区域内拖动显示界面文件,当用户要浏览后续文件,可以向上拖动文件,当放手后,显示界面的文件向上自由滑动至停止;当用户要回顾上一文件时,可以向下拖动文件,当放手后,显示界面的文件向下自由滑动至停止。即,在第二种情况下,文件自由滑动的方向与用户拖动文件的方向一致。可以理解的是,文件从开始自由滑动至停止的时长可以预先设定,具体时长可以根据实际应用情况进行设定,本实施例在此不进行限定。

对于第三种触发操作行为,用户可以主动在控制区域内向上拖到或向下拖动文件,直至显示界面切换到用户自身所要浏览的文件。

s203:当存在触发操作行为时,确定控制区域响应所述触发操作后,显示界面当前所显示的文件。

本实施例中,当检测到用户在控制区域的触发操作行为时,确定控制区域响应用户的触发操作后,显示界面当前所显示的文件。

可以理解的是,当用户触发操作行为为第一种和第二种时,当显示界面内的文件停止滑动后,则将停止滑动后显示界面所对应的文件确定为当前所显示的文件。当用户触发操作行为为第三种时,则将目标文件确定为显示界面当前所显示文件。

s204:根据显示界面当前所显示的文件,按顺序从磁盘缓存中向后读取n个文件至内存缓存中,以便从内存缓存中获取文件进行显示。

本实施例中,当确定控制区域响应触发操作后显示界面当前所显示的文件时,以当前所显示的文件为基点,按顺序从磁盘缓存中向后读取n个文件至内存缓存中。即在用户浏览当前显示界面所显示的文件时,预先从磁盘缓存中读取数个文件,以便用户继续向后浏览,提高用户使用体验。

其中,n为预先设定的预读取文件个数,为正整数。在具体设定时,可以根据内存缓存空间大小进行设定,避免n设置较大影响内存缓存读取速率。也可以根据用户浏览当前文件所需时间以及读取磁盘缓存速度进行设定,即n等于浏览所需时间与读取磁盘缓存速度的乘积。在实际应用时,可以根据实际情况进行设定,本实例在此不做限定。

可以理解的是,在实际应用中,会出现用户回顾上文的情况,为保证用户在回顾上文时,内存缓存中也存在相应的文件,也可以在用户浏览当前文件时,从磁盘缓存中向前读取预设个文件。具体为,根据显示界面当前所显示的文件,按顺序从磁盘缓存中向前读取m个文件至内存缓存中,其中,m为预先设定的预读取文件个数,为小于n的正整数。

在具体实现时,以显示界面当前所显示的文件为基点,按顺序从磁盘缓存中向前读取数个文件存储在内存缓存中,以便当用户回顾上文时,可以直接从内存缓存中读取文件,避免出现卡顿现象,提高用户使用体验。可以理解的是,通常情况下,用户向后浏览的概率大于向前回顾的概率,因此,在设定预读文件个数n和m时,向后预读的个数大于向前预读的个数。

可以理解的是,磁盘缓存可以按照文件顺序进行存储,当确定显示界面当前所显示的文件时,可以直接按照顺序从磁盘缓存中读取预设数个文件。当磁盘缓存中的文件未按顺序存储时,可以为每个文件添加序号,当确定显示界面当前所显示的文件时,获取该文件对应的序号,按照序号顺序从磁盘缓存读取预设数个文件。

通过上述实施例可知,本申请实施例采用了双层缓存机制,当用户客户端进行文件浏览时,首先从内存缓存中读取文件,在显示界面内显示所读取的文件。同时,实时检测用户对显示界面的控制区域是否存在触发行为,当检测到存在触发行为时,确定控制区域响应触发行为后,显示界面当前所显示的文件。然后,以显示界面当前所显示的文件为基点,按文件顺序从磁盘缓存中向后读取预设个文件至内存缓存中。当用户浏览后续文件时,内存缓存中已包括后续文件,可直接从内存缓存中获取后续文件,避免出现浏览卡顿的问题。而且,在用户感知不敏感的时机进行预读缓存,提高浏览效率以及用户使用体验。

可以理解的是,由于受磁盘缓存存储空间或当前网络限制,磁盘缓存中未必存储用户所要浏览的所有文件,因此,在本申请实施例的一种可能的实现方式,在从磁盘缓存中预读取文件之前,还需要检测磁盘缓存中是否包括预读取的文件,如果磁盘缓存中不包括预读取的文件,则从服务器下载文件,将下载的文件保存至磁盘缓存中。

在具体实现时,客户端从服务器下载文件时,需要考虑网络情况、浏览进度等参数确定下载文件的数量,以避免下载过多影响下载进度以及浪费流量。基于此,本实施例提供了一种确定下载文件数量的方法,具体为,获取用户当前浏览进度;根据所述浏览进度,确定与所述浏览进度对应的预读屏数以及增量;将拼接参数与所述预读屏数相乘,获得第一参数;所述拼接参数为拼接整屏文件的数量;将快速滑动概率参数与经验参数相乘后,与网络参数相加,获得第二参数;将所述第一参数与所述第二参数相乘后,与所述增量相加,获得第三参数;从所述服务器下载所述第三参数个文件。

在实际应用中,具体可以利用公式(1)计算获得:

y=a*x1*(wf+r*m)+x2(1)

其中,a为拼接参数,表示拼接一个完整显示屏所需文件的数量;x1为预读屏数,即以显示屏为单位,读取显示屏的数量,与浏览进度相关,1<x1<10;x2为浏览进度对应的增量,0<=x2<=30;wf为下载时网络参数,当为数据网络时,0<wf<1,当为wi-fi网络时,wf=1;r为用户在浏览文件时,快速滑动概率,小于1;m为经验参数,1<m<100。其中,a可以通过显示屏高度除以单个文件高度获得。

在具体实现时,可以预先设定x1、x2分别与流量进度的对应关系。例如,浏览进度为q,当q<0.1:x1=k1、x2=p1;当0.1<q<=0.3:x1=k2、x2=p2;当0.3<q<=0.5:x1=k3、x2=p3;当0.5<p<=1:x1=k4、x2=p4。其中,1<k1<k2<k3<k4<10,0<=p1<p2<p3<p4<=30,为常数,具体数值可以根据大数据统计结果确定。例如,当q<0.1:x1=3、x2=0;当0.1<q<=0.3:x1=4、x2=3;当0.3<q<=0.5:x1=6、x2=5;当0.5<p<=1:x1=9、x2=10。

需要说明的,在确定浏览进度与预读屏数以及浏览进度与增量之间的对应关系时,划分区间可以根据实际情况进行设定,本实施例在此不进行限定。

在具体实现时,当获取用户当前浏览进度时,根据浏览进度确定预读屏数以及增量,然后根据公式(1)确定下载文件数量,。

通过上述可知,在下载文件时,考虑了用户的浏览进度,当用户浏览进度较小时,可以下载少量文件,节省不必要的流量开销,有效降低无效流量。当浏览进度较大时,表明用户浏览完整文件的概率较大,则增大下载文件的数量。

在实际应用时,客户端从服务器下载文件时,可以将下载的文件分别存储在磁盘缓存和内存缓存中,但由于内存缓存为临时缓存,其存储的文件在某些情况下会被自动释放,为避免从磁盘缓存中重复读取文件,在从磁盘缓存中读取预设数个文件时,先检测内存缓存中是否包括预读取的文件。具体为,在按顺序从磁盘缓存中向后读取n个文件至内存缓存之前,检测内存缓存中是否完全包括预读取的n个文件,如果完全包括,则无需读取。如果完全不包括,则从磁盘缓存中向后读取n个文件至内存缓存中;如果不完全包括,则确定内存缓存中已包括的预读取的文件数i,并根据n和i确定剩余文件数。然后,按顺序从磁盘缓存中向后读取剩余文件数个文件至内存缓存中。其中,i小于n的正整数.

同理,在按顺序从磁盘缓存中向前读取m个文件至内存缓存之前,检测内存缓存中是否完全包括预读取的m个文件。如果完全包括,则无需读取,继续检测用户的触发操作。如果完全不包括,则从磁盘缓存中向前读取m个文件至内存缓存中。如果不完全包括,则确定内存缓存中已包括的预读取的文件数j,并根据m和j确定剩余文件数。然后,按顺序从磁盘缓存中向前读取剩余文件数个文件至内存缓存中。其中,j小于m的正整数。

在具体实现时,为避免内存缓存中文件数量较多而影响读取速率,本实施例还提供了一种清理内存缓存的方法,具体为,判断内存缓存中已被显示的文件数量是否大于预设阈值,当大于预设阈值时,则根据预设阈值和已被显示的文件数量,确定预删除文件数量,按文件顺序从内存缓存中删除预删除文件数个已被显示给文件。

可以理解的是,为保证用户在回顾上文时,内存缓存中可以包括部分用户已浏览的文件。但为避免文件数量较多影响读取速率,当内存缓存中被显示的文件数量大于预设阈值时,则将超出预设阈值对应的文件进行删除,即预设阈值与已被显示的文件数量的差值。在删除时,按照文件顺序删除部分已被显示的文件。

为便于理解本申请的技术方案,参见图3所示框架图。用户启动客户端后,客户端生成浏览界面,初始化文件列表,并从服务器下载文件。在下载时,可以根据用户浏览文件的进度确定下载数量,当用户当前浏览进度未超过预设进度时,则下载n1个文件;否则下载n2个文件。同时将下载的文件保存至磁盘缓存中和内存缓存中,并从内存缓存中获取文件进行显示。并实时检测用户行为以及确定显示界面当前所显示的文件,根据当前所显示的文件,从磁盘缓存中预读n个文件至内存缓存中。在从磁盘缓存中预读取文件时,首先判断磁盘缓存中是否存在预读取的文件,如果不包括,则继续从服务器中下载。如果当前磁盘缓存中包括预读取的文件,则直接读取,再从内存缓存中获取文件进行显示,并继续检测用户行为。

参见图4,该图为本申请实施例提供的一种具体场景图。其中,浏览窗口即为显示界面,其可以与终端显示屏幕的大小一致。预读窗口大小为每次预读时向后或向前预读文件的数量,其中,从浏览窗口顶部到预读窗口顶部为向前预读文件的个数;从浏览窗口底部到预读窗口底部为向后预读文件的个数。下载窗口是指每次下载文件数量,与当前网络参数有关。保持窗口大小为允许内存缓存中存储文件的数量。随着用户的浏览,部分文件远离浏览窗口,当超过保持窗口时,则认为用户在最近时间不会浏览该文件,则将滑出保持窗口的文件从内存缓存中删除。其中,保持窗口的大小可以根据内存缓存设置,通常情况下保持窗口内的文件所占用的内存不超过内存缓存的50%-60%。同时,保持窗口大于或等于预读窗口。

基于上述方法实施例,本申请实施例提供了一种文件浏览装置,下面将结合附图对该装置进行说明。

参见图5,该图为本申请实施例提供的一种文件流浏览装置结构图,如图5所示,该装置可以包括:

获取单元501,用于响应于用户启动所述客户端,从内存缓存中获取文件,并在显示界面显示所述文件;

第一检测单元502,用于检测用户对所述显示界面的控制区域是否存在触发操作的行为;所述控制区域用于响应用户的触发操作,切换所述显示界面所显示的文件;

第一确定单元503,用于当存在触发操作行为时,确定所述控制区域响应所述触发操作后,所述显示界面当前所显示的文件;

第一读取单元504,用于根据所述显示界面当前所显示的文件,按顺序从所述磁盘缓存中向后读取n个文件至所述内存缓存中,以便从所述内存缓存中获取文件进行显示;所述n为预先设定的预读取文件个数,为正整数。

在一种可能的实现方式中,所述装置还包括:

第二读取单元,用于根据所述显示界面当前所显示的文件,按顺序从所述磁盘缓存中向前读取m个文件至所述内存缓存中;所述m为预先设定的预读取文件个数,为小于n的正整数。

在一种可能的实现方式中,用户对所述控制区域进行触发操作的行为,包括:

用户点击所述控制区域,所述显示界面的文件自由滑动至停止;

用户在所述控制区域内拖动所述显示界面的文件,当放手后,所述显示界面的文件自由滑动至停止;所述文件自由滑动包括向上自由滑动或向下自由滑动;

用户在所述控制区域内拖动所述显示界面的文件直至切换到目标文件停止;所述目标文件为用户确定的文件。

在一种可能的实现方式中,所述确定单元,具体用于当所述显示界面内的文件停止滑动后,将所述显示界面对应的文件确定为所述显示界面当前所显示的文件;或,

所述确定单元,具体用于将所述目标文件确定为所述显示界面当前所显示的文件。

在一种可能的实现方式中,所述装置还包括:

第二检测单元,用于利用所述第一读取单元按顺序从所述磁盘缓存中向后读取n个文件至所述内存缓存中之前,检测所述内存缓存中是否完全包括预读取的所述n个文件;

所述第一读取单元,具体用于当所述第二检测单元的检测结果为完全不包括,则从所述磁盘缓存中向后读取所述n个文件至所述内存缓存中;

第二确定单元,用于当所述第二检测单元的检测结果为不完全包括,则确定所述内存缓存中已包括的预读取的文件数i;所述i小于n的正整数;

第三确定单元,用于根据n和i确定剩余文件数;

所述第一读取单元,具体用于按顺序从所述磁盘缓存中向后读取所述剩余文件数个文件至所述内存缓存中。

在一种可能的实现方式中,所述装置还包括:

第三检测单元,用于在利用所述第二读取单元按顺序从所述磁盘缓存中向前读取m个文件至所述内存缓存之前,检测所述内存缓存中是否完全包括预读取的所述m个文件;

所述第二读取单元,具体用于当所述第三检测单元的检测结果为完全不包括时,则从所述磁盘缓存中向前读取m个文件至所述内存缓存中;

第四确定单元,用于当所述第三检测单元的检测结果为不完全包括,则确定所述内存缓存中已包括的预读取的文件数j;所述j为小于m的正整数;

第五确定单元,用于根据m和j确定剩余文件数;

所述第二读取单元,具体用于按顺序从所述磁盘缓存中向前读取所述剩余文件数个文件至所述内存缓存中。

在一种可能的实现方式中,所述装置还包括:

第四检测单元,用于在利用所述第一读取单元和/或所述第二读取单元从所述磁盘缓存中读取文件之前,检测所述磁盘缓存中是否包括预读取的文件;

下载单元,用于当所述第四检测单元的检测结果为不包括,则从服务器下载文件,将下载的文件保存至磁盘缓存。

在一种可能的实现方式中,所述下载单元,包括:

获取子单元,用于获取用户当前浏览进度;

确定子单元,用于根据所述浏览进度,确定与所述浏览进度对应的预读屏数以及增量;

第一计算子单元,用于将拼接参数与所述预读屏数相乘,获得第一参数;所述拼接参数为拼接整屏所需文件的数量;

第二计算子单元,用于将快速滑动概率参数与经验参数相乘后,与网络参数相加,获得第二参数;

第三计算子单元,用于将所述第一参数与所述第二参数相乘后,与所述增量相加,获得第三参数;

下载子单元,用于从所述服务器下载所述第三参数个文件。

在一种可能的实现方式中,其特征在于,所述装置还包括:

判断单元,用于判断所述内存缓存中已被显示的文件数量是否大于预设阈值;

第六确定单元,用于当所述判断单元的判断结果为所述内存缓存中已被显示的文件数量大于预设阈值时,则根据预设阈值和所述已被显示的文件数量,确定预删除文件数量;

删除单元,用于按文件顺序从所述内存缓存中删除所述预删除文件数量个已被显示的文件。

在一种可能的实现方式中,所述文件为图片、文档、视频、音频中的一种。

需要说明的是,本实施例中各个单元的具体实现已在方法实施例进行详细说明,本实施例在此不再赘述。

通过上述描述可知,本申请实施例采用了双层缓存机制,当用户启动客户端进行文件浏览时,首先从内存缓存中获取文件,在显示界面内显示所获取的文件。同时,实时检测用户对显示界面的控制区域是否存在触发行为,当检测到存在触发行为时,确定控制区域响应触发行为后,显示界面当前所显示的文件。然后,以显示界面当前所显示的文件为基点,按文件顺序从磁盘缓存中向后读取预设个文件至内存缓存中。当用户浏览后续文件时,内存缓存中已包括后续文件,可直接从内存缓存中获取后续文件,避免出现浏览卡顿的问题。而且,是在用户感知不敏感的时机进行预读缓存,提高浏览效率以及用户使用体验。

需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

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

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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