发明内容
有鉴于此,本公开实施例提供一种内容的缓存和读取方法、客户端及存储介质。
第一方面,本公开实施例提供了一种内容的缓存方法,包括:
获取待递送内容对应的JSON数据,并确定所述JSON数据对应的标识信息;
按照所述标识信息对所述JSON数据进行分组存储,获得所述标识信息对应的内存列表,并根据所述标识信息和所述内存列表,将所述JSON数据写入目标磁盘;
根据所述JSON数据,对所述待递送内容进行视频预加载处理,获得预加载视频数据,并确定所述预加载视频数据对应的地址信息;其中,所述预加载视频数据用于对所述待递送内容进行视频数据的部分缓存;
按照所述标识信息将所述地址信息存储至所述内存列表和所述目标磁盘,以完成所述JSON数据和所述预加载视频数据的缓存。
在上述方案中,所述按照所述标识信息对所述JSON数据进行分组存储,获得所述标识信息对应的内存列表,包括:
将所述标识信息相同的所述JSON数据存储至同一个列表中,生成所述标识信息对应的所述内存列表;其中,一个标识信息对应一个内存列表。
在上述方案中,所述根据所述JSON数据,对所述待递送内容进行视频预加载处理,获得预加载视频数据,包括:
基于所述JSON数据,按照预设数据参数,对所述待递送内容对应的全部视频数据中的部分视频数据进行预加载,获得所述预加载视频数据。
在上述方案中,所述按照所述标识信息将所述地址信息存储至所述内存列表和所述目标磁盘之后,所述方法还包括:
遍历所述内存列表,对所述内存列表中的、未存储所述地址信息的所述JSON数据进行所述视频预加载处理,以获得所述待递送内容对应的所述全部视频数据。
在上述方案中,所述按照所述标识信息将所述地址信息存储至所述内存列表和所述目标磁盘之后,所述方法还包括:
遍历所述内存列表,对所述内存列表中的已过期数据进行删除处理,以获得更新后的内存列表;
按照所述更新后的内存列表更新所述目标磁盘。
第二方面,本公开实施例提供了一种内容的读取方法,所述方法包括:
在接收开启指令之后,确定待递送内容对应的JSON数据的标识信息;
若所述标识信息对应的内存列表中存在预加载视频数据对应的地址信息,则从所述内存列表中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据;其中,所述预加载视频数据用于对所述待递送内容进行部分读取;
若所述标识信息对应的内存列表中不存在所述预加载视频数据对应的地址信息,则从目标磁盘中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据。
在上述方案中,所述从目标磁盘中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据之后,所述方法还包括:
根据所述标识信息和所述地址信息,更新所述内存列表。
在上述方案中,所述确定待递送内容对应的JSON数据的标识信息之后,所述方法还包括:
检测当前状态参数;
若所述当前状态参数满足预设展示条件,则判定进行所述预加载视频数据的读取流程;其中,所述预设展示条件用于判断是否展示所述预加载视频数据对应的待递送内容视频。
在上述方案中,所述根据所述地址信息读取所述预加载视频数据之后,所述方法还包括:
将所述预加载视频数据嵌入至当前信息流中,获得待展示信息流;
响应所述开启指令,播放所述待展示信息流对应的目标视频。
在上述方案中,所述根据所述地址信息读取所述预加载视频数据之后,所述方法还包括:
对所述JSON数据进行结构转换处理,获得转换后的JSON数据;
将所述转换后的JSON数据嵌入至所述当前信息流中。
在上述方案中,所述播放所述待展示信息流对应的目标视频之前,所述方法还包括:
在接收开启指令之后,获取预存模拟启动图像和/或预存模拟启动视频;
响应所述开启指令,显示所述预存模拟启动图像和/或所述预存模拟启动视频。
第三方面,本公开实施例提供了一种第一客户端,包括:所述第一客户端包括:获取单元、第一确定单元、写入单元以及存储单元,
所述获取单元,用于获取待递送内容对应的JSON数据;
所述第一确定单元,用于确定所述JSON数据对应的标识信息;
所述获取单元,还用于按照所述标识信息对所述JSON数据进行分组存储,获得所述标识信息对应的内存列表;
所述写入单元,用于根据所述标识信息和所述内存列表,将所述JSON数据写入目标磁盘;
所述获取单元,还用于根据所述JSON数据,对所述待递送内容进行视频预加载处理,获得预加载视频数据;其中,所述预加载视频数据用于对所述待递送内容进行视频数据的部分缓存;
所述第一确定单元,还用于确定所述预加载视频数据对应的地址信息;
所述存储单元,用于按照所述标识信息将所述地址信息存储至所述内存列表和所述目标磁盘,以完成所述JSON数据和所述预加载视频数据的缓存。
在上述方案中,所述获取单元,具体用于将所述标识信息相同的所述JSON数据存储至同一个列表中,生成所述标识信息对应的所述内存列表;其中,一个标识信息对应一个内存列表;
所述获取单元,还具体用于基于所述JSON数据,按照预设数据参数,对所述待递送内容对应的全部视频数据中的部分视频数据进行预加载,获得所述预加载视频数据。
在上述方案中,所述第一客户端还包括:第一更新单元,
所述获取单元,还用于按照所述标识信息将所述地址信息存储至所述内存列表和所述目标磁盘之后,遍历所述内存列表,对所述内存列表中的、未存储所述地址信息的所述JSON数据进行所述视频预加载处理,以获得所述待递送内容对应的所述全部视频数据;
所述第一更新单元,用于按照所述标识信息将所述地址信息存储至所述内存列表和所述目标磁盘之后,遍历所述内存列表,对所述内存列表中的已过期数据进行删除处理,以获得更新后的内存列表;以及按照所述更新后的内存列表更新所述目标磁盘。
第四方面,本公开实施例提供了一种第二客户端,其特征在于,所述第二客户端包括:第二确定单元、读取单元以及存储单元,
所述第二确定单元,用于在接收开启指令之后,确定待递送内容对应的JSON数据的标识信息;
所述读取单元,用于若所述标识信息对应的内存列表中存在预加载视频数据对应的地址信息,则从所述内存列表中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据;其中,所述预加载视频数据用于对所述待递送内容进行部分读取;
所述读取单元,还用于若所述标识信息对应的内存列表中不存在所述预加载视频数据对应的地址信息,则从目标磁盘中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据。
在上述方案中,所述第二客户端还包括:第二更新单元、检测单元以及判断单元,
所述第二更新单元,用于从目标磁盘中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据之后,根据所述标识信息和所述地址信息,更新所述内存列表;
所述检测单元,用于确定待递送内容对应的JSON数据的标识信息之后,检测当前状态参数;
所述判断单元,用于若所述当前状态参数满足预设展示条件,则判定进行所述预加载视频数据的读取流程;其中,所述预设展示条件用于判断是否展示所述预加载视频数据对应的待递送内容视频。
在上述方案中,所述第二客户端还包括:嵌入单元、转换单元以及播放单元,
所述嵌入单元,用于根据所述地址信息读取所述预加载视频数据之后,将所述预加载视频数据嵌入至当前信息流中,获得待展示信息流;
所述播放单元,用于响应所述开启指令,播放所述待展示信息流对应的目标视频。
所述转换单元,用于根据所述地址信息读取所述预加载视频数据之后,对所述JSON数据进行结构转换处理,获得转换后的JSON数据;
所述嵌入单元,还用于将所述转换后的JSON数据嵌入至所述当前信息流中。
第五方面,本公开实施例提供了一种第一客户端,所述第一客户端包括第一处理器、存储有所述第一处理器可执行指令的第一存储器,当所述指令被所述第一处理器执行时,实现如上所述的内容的缓存方法。
第六方面,本公开实施例提供了一种第二客户端,所述第二客户端包括第二处理器、存储有所述第二处理器可执行指令的第二存储器,当所述指令被所述第二处理器执行时,实现如上所述的内容的读取方法。
第七方面,本公开实施例提供了一种存储介质,其上存储有程序,应用于第一客户端和第二客户端中,所述程序被处理器执行时,用于实现如上所述的内容的缓存和读取方法。
本公开实施例提出的一种内容的缓存和读取方法、客户端及存储介质,在缓存时,客户端获取待递送内容对应的JSON数据,并确定JSON数据对应的标识信息;按照标识信息对JSON数据进行分组存储,获得标识信息对应的内存列表,并根据标识信息和内存列表,将JSON数据写入目标磁盘;根据JSON数据,对待递送内容进行视频预加载处理,获得预加载视频数据,并确定预加载视频数据对应的地址信息;其中,预加载视频数据用于对待递送内容进行视频数据的部分缓存;按照标识信息将地址信息存储至内存列表和目标磁盘,以完成JSON数据和预加载视频数据的缓存。在读取时,客户端在接收开启指令之后,确定待递送内容对应的JSON数据的标识信息;若标识信息对应的内存列表中存在预加载视频数据对应的地址信息,则从内存列表中读取地址信息,并根据地址信息读取预加载视频数据;其中,预加载视频数据用于对待递送内容进行部分读取;若标识信息对应的内存列表中不存在预加载视频数据对应的地址信息,则从目标磁盘中读取地址信息,并根据地址信息读取预加载视频数据。也就是说,在本公开中,客户端既可以根据待递送内容对应的数据的标识信息将待递送内容对应的JSON数据和预加载视频数据异步缓存至内存列表和目标磁盘中,客户端也可以根据待递送内容对应的数据的标识信息从内存列表或目标磁盘中读取待递送内容对应的JSON数据和预加载视频数据。由此可见,本公开提出的内容的缓存和读取方法,可以基于待递送内容对应的标识信息,实现待递送内容对应的数据的分表存储和定向读取。从而可以提高客户端的启动速度,同时解决原生开屏广告读取延迟的问题,提升了原生开屏广告的流畅度。
具体实施方式
为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,所描述的实施例不应视为对本公开的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在本公开中,客户端可以为能够在终端中运行的软件。下面参见图1,图1是本公开实施例提出的终端的结构示意图。如图1所示,终端可以是各种电子设备,包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(PDA,Personal DigitalAssistant)、平板电脑(PAD)、便携式多媒体播放器(PMP,Portable Media Player)、车载电子设备(例如车载导航电子设备)等等的移动电子设备以及诸如数字电视(TV)、台式计算机等等的固定电子设备。图1示出的终端仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图1所示,终端100可以包括处理装置(例如中央处理器、图形处理器等)110,其可以根据存储在只读存储器(ROM,Read-Only Memory)120中的程序或者从存储装置180加载到随机访问存储器(RAM,Random Access Memory)130中的程序而执行各种适当的动作和处理。在RAM130中,还存储有终端100操作所需的各种程序和数据。处理装置110、ROM120以及RAM130通过总线140彼此相连。输入/输出(I/O,Input/Output)接口150也连接至总线140。
通常,以下装置可以连接至I/O接口150:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置160;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置170;包括例如磁带、硬盘等的存储装置180;以及通信装置190。通信装置190可以允许终端100与其他设备进行无线或有线通信以交换数据。虽然图1示出了具有各种装置的终端100,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开实施例,所提供的流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,计算机程序可以通过通信装置190从网络上被下载和安装,或者从存储装置180被安装,或者从ROM120被安装。在计算机程序被处理装置110执行时,执行本公开实施例的方法中的功能。
需要说明的是,本公开实施例上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、RAM、ROM、可擦式可编程只读存储器(EPROM,ErasableProgrammable Read Only Memory)、闪存、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
在本公开实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、射频(RF,Radio Frequency)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述终端100中所包含的;也可以是单独存在,而未装配入终端100中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该终端执行时,使得终端100执行本公开实施例提供的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN,Local Area Network))和广域网(WAN,Wide Area Network),以连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
描述于本公开实施例中所涉及到的终端中的单元和/或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。
对于硬件的方式来说,实现本公开实施例的终端的单元和/或模块可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件实现,用于执行实现本公开实施例提供的方法。
对于软件的方式来说,实现本公开实施例内容的缓存方法的终端中的单元和/或模块可以被两个或以上的单元实现,
下面以软件的方式为例,示例性说明实现本公开实施例的内容的缓存方法的装置中单元和/或模块。
图2是本公开实施例提出的第一客户端组成结构示意图一,如图2所示,第一客户端2包括获取单元21、第一确定单元22、写入单元23、存储单元24以及第一更新单元25。
所述获取单元21,用于获取待递送内容对应的JSON数据;
所述第一确定单元22,用于确定所述JSON数据对应的标识信息;
所述获取单元21,还用于按照所述标识信息对所述JSON数据进行分组存储,获得所述标识信息对应的内存列表;
所述写入单元23,用于根据所述标识信息和所述内存列表,将所述JSON数据写入目标磁盘;
所述获取单元21,还用于根据所述JSON数据,对所述待递送内容进行视频预加载处理,获得预加载视频数据;其中,所述预加载视频数据用于对所述待递送内容进行视频数据的部分缓存;
所述第一确定单元22,还用于确定所述预加载视频数据对应的地址信息;
所述存储单元24,用于按照所述标识信息将所述地址信息存储至所述内存列表和所述目标磁盘,以完成所述JSON数据和所述预加载视频数据的缓存。
进一步地,在本公开的实施例中,所述获取单元21,具体用于将所述标识信息相同的所述JSON数据存储至同一个列表中,生成所述标识信息对应的所述内存列表;其中,一个标识信息对应一个内存列表;
所述获取单元21,还具体用于基于所述JSON数据,按照预设数据参数,对所述待递送内容对应的全部视频数据中的部分视频数据进行预加载,获得所述预加载视频数据。
进一步地,在本公开的实施例中,所述获取单元21,还用于按照所述标识信息将所述地址信息存储至所述内存列表和所述目标磁盘之后,遍历所述内存列表,对所述内存列表中的、未存储所述地址信息的所述JSON数据进行所述视频预加载处理,以获得所述待递送内容对应的所述全部视频数据;
所述第一更新单元25,用于按照所述标识信息将所述地址信息存储至所述内存列表和所述目标磁盘之后,遍历所述内存列表,对所述内存列表中的已过期数据进行删除处理,以获得更新后的内存列表;以及按照所述更新后的内存列表更新所述目标磁盘。
图3是本公开实施例提出的第一客户端组成结构示意图二,如图3所示,第一客户端2还可以包括第一处理器26、存储有第一处理器26可执行指令的第一存储器27,进一步地,客户端2还可以包括第一通信接口28,和用于连接第一处理器26、第一存储器27以及第一通信接口28的第一总线29。
在本公开的实施例中,第一总线29用于连接第一通信接口28、第一处理器26以及第一存储器27以及这些器件之间的相互通信。
在本公开的实施例中,第一存储器27,用于存储指令和数据。
进一步地,在本公开的实施例中,上述第一处理器26,用于获取待递送内容对应的JSON数据,并确定所述JSON数据对应的标识信息;按照所述标识信息对所述JSON数据进行分组存储,获得所述标识信息对应的内存列表,并根据所述标识信息和所述内存列表,将所述JSON数据写入目标磁盘;根据所述JSON数据,对所述待递送内容进行视频预加载处理,获得预加载视频数据,并确定所述预加载视频数据对应的地址信息;其中,所述预加载视频数据用于对所述待递送内容进行视频数据的部分缓存;按照所述标识信息将所述地址信息存储至所述内存列表和所述目标磁盘,以完成所述JSON数据和所述预加载视频数据的缓存。
图4是本公开实施例提出的第二客户端组成结构示意图一,如图4所示,第二客户端3包括第二确定单元31、读取单元32、第二更新单元33、检测单元34、判断单元35、嵌入单元36、播放单元37以及转换单元38。
所述第二确定单元31,用于在接收开启指令之后,确定待递送内容对应的JSON数据的标识信息;
所述读取单元32,用于若所述标识信息对应的内存列表中存在预加载视频数据对应的地址信息,则从所述内存列表中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据;其中,所述预加载视频数据用于对所述待递送内容进行部分读取;
所述读取单元32,还用于若所述标识信息对应的内存列表中不存在所述预加载视频数据对应的地址信息,则从目标磁盘中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据。
进一步地,在本公开的实施例中,所述第二更新单元33,用于从目标磁盘中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据之后,根据所述标识信息和所述地址信息,更新所述内存列表;
所述检测单元34,用于确定待递送内容对应的JSON数据的标识信息之后,检测当前状态参数;
所述判断单元35,用于若所述当前状态参数满足预设展示条件,则判定进行所述预加载视频数据的读取流程;其中,所述预设展示条件用于判断是否展示所述预加载视频数据对应的待递送内容视频。
进一步地,在本公开的实施例中,所述嵌入单元36,用于根据所述地址信息读取所述预加载视频数据之后,将所述预加载视频数据嵌入至当前信息流中,获得待展示信息流;
所述播放单元37,用于响应所述开启指令,播放所述待展示信息流对应的目标视频。
所述转换单元38,用于根据所述地址信息读取所述预加载视频数据之后,对所述JSON数据进行结构转换处理,获得转换后的JSON数据;
所述嵌入单元36,还用于将所述转换后的JSON数据嵌入至所述当前信息流中。
图5是本公开实施例提出的第二客户端组成结构示意图二,如图5所示,第二客户端3还可以包括第二处理器39、存储有第二处理器39可执行指令的第二存储器310,进一步地,客户端2还可以包括第二通信接口311,和用于连接第二处理器39、第二存储器310以及第二通信接口311的第二总线312。
在本公开的实施例中,第二总线312用于连接第二通信接口311、第二处理器39以及第二存储器310以及这些器件之间的相互通信。
在本公开的实施例中,第二存储器310,用于存储指令和数据。
进一步地,在本公开的实施例中,上述第二处理器39,用于在接收开启指令之后,确定待递送内容对应的JSON数据的标识信息;若所述标识信息对应的内存列表中存在预加载视频数据对应的地址信息,则从所述内存列表中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据;其中,所述预加载视频数据用于对所述待递送内容进行部分读取;若所述标识信息对应的内存列表中不存在所述预加载视频数据对应的地址信息,则从目标磁盘中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据。
需要指出,上述单元的分类并不构成对客户端本身的限定,例如一些单元可以拆分为两个或以上的子单元,或者,一些单元可以合并为一个新的单元。
还需要指出,上述单元的名称在某种情况下并不构成对单元本身的限定。
基于同样的理由,客户端中未详尽描述的单元和/或模块不代表相应的单元和/或模块的缺省,凡是客户端所执行的操作都可以通过客户端中的相应的单元和/或模块实现。
本公开实施例提出的一种第一客户端和第二客户端,在缓存时,第一客户端获取待递送内容对应的JSON数据,并确定所述JSON数据对应的标识信息;按照所述标识信息对所述JSON数据进行分组存储,获得所述标识信息对应的内存列表,并根据所述标识信息和所述内存列表,将所述JSON数据写入目标磁盘;根据所述JSON数据,对所述待递送内容进行视频预加载处理,获得预加载视频数据,并确定所述预加载视频数据对应的地址信息;其中,所述预加载视频数据用于对所述待递送内容进行视频数据的部分缓存;按照所述标识信息将所述地址信息存储至所述内存列表和所述目标磁盘,以完成所述JSON数据和所述预加载视频数据的缓存。在读取时,第二客户端在接收开启指令之后,确定待递送内容对应的JSON数据的标识信息;若所述标识信息对应的内存列表中存在预加载视频数据对应的地址信息,则从所述内存列表中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据;其中,所述预加载视频数据用于对所述待递送内容进行部分读取;若所述标识信息对应的内存列表中不存在所述预加载视频数据对应的地址信息,则从目标磁盘中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据。也就是说,在本公开中,客户端既可以根据待递送内容对应的数据的标识信息将待递送内容对应的JSON数据和预加载视频数据异步缓存至内存列表和目标磁盘中,客户端也可以根据待递送内容对应的数据的标识信息从内存列表或目标磁盘中读取待递送内容对应的JSON数据和预加载视频数据。由此可见,本公开提出的内容的缓存和读取方法,可以基于待递送内容对应的标识信息,实现待递送内容对应的数据的分表存储和定向读取。从而可以提高客户端的启动速度,同时解决原生开屏广告读取延迟的问题,提升了原生开屏广告的流畅度。
在本公开的一实施例中,继续参见图6,图6是本公开实施例提出的内容的缓存方法的流程示意图,如图6所示,客户端缓存待递送内容的方法主要可以包括以下步骤:
步骤101、获取待递送内容对应的JSON数据,并确定JSON数据对应的标识信息。
在本公开的实施例中,客户端可以获取待递送内容对应的JSON数据,然后可以确定该JSON数据对应的标识信息。其中,标识信息用于对JSON数据进行分类存储。
需要说明的是,在本公开的实施例中,终端中的客户端可以指与服务器相对应的、为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的终端上,需要与服务端互相配合运行。
因特网发展以后,较常用的客户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。对于这一类应用程序,需要网络中有相应的服务器和服务程序来提供相应的服务,如数据库服务,电子邮件服务等等,这样在终端和服务器端,需要建立特定的通信连接,来保证应用程序的正常运行。
需要说明的是,在本公开的实施例中,服务器可以为客户端服务,服务的内容诸如向客户端提供资源、保存客户端数据等等。
具体地,在本申请的实施例中,待递送内容可以为原生开屏广告,待递送内容还可以为天气通知内容、突发新闻内容、寻人内容、灾情警告内容等等。
进一步地,在本公开的实施例中,客户端可以通过终端与服务器的通信连接,获取服务器下发的与待递送内容对应的JSON数据。具体地,原生开屏广告是在客户端应用启动时展示的、展示时间短暂的全屏化广告形式。由于在客户端应用刚刚开启时用户的注意力非常集中,因此开屏广告特别适合广告主进行品牌曝光宣传。
需要说明的是,在本公开的实施例中,JS对象简谱(JavaScript ObjectNotation,JSON)是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。JSON数据易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
进一步地,在本公开的实施例中,客户端在获取到服务器下发的待递送内容对应的JSON数据之后,可以先确定出JSON数据对应的标识信息。具体地,客户端可以读取JSON数据中的splash_id,然后基于splash_id确定出标识信息。
需要说明的是,在本公开的实施例中,客户端在基于splash_id获取标识信息时,可以将splash_id的id尾号作为相应地JSON数据的标识信息。例如,splash_id为100000001的数据对应的标识信息为1,splash_id为100000002的数据对应的标识信息为2。
步骤102、按照标识信息对JSON数据进行分组存储,获得标识信息对应的内存列表,并根据标识信息和内存列表,将JSON数据写入目标磁盘。
在本公开的实施例中,客户端在获取待递送内容对应的JSON数据,并确定JSON数据对应的标识信息之后,便可以按照标识信息对JSON数据进行分组并存储,从而可以获得标识信息对应的内存列表,然后可以根据标识信息和内存列表,将JSON数据写入目标磁盘。
需要说明的是,在本公开的实施例中,客户端在对待递送内容进行缓存时,具体可以为对待递送内容进行二级缓存,即内存缓存和磁盘缓存。也就是说,客户端在获取服务器下发的待递送内容对应的JSON数据之后,可以依次将JSON数据缓存至内存和磁盘中。
进一步地,在本公开的实施例中,客户端在按照标识信息对JSON数据进行分组存储时,可以将标识信息相同的JSON数据存储至相同的列表中,从而可以实现JSON数据的分组存储。例如,将标识信息为1的JSON数据全部缓存至内存列表1中,将标识信息为2的JSON数据全部缓存至内存列表2中。也就是说,在本公开中,客户端可以按照标识信息,将待递送内容对应的JSON数据存储至不同的内存列表中,从而完成对JSON数据的内存缓存。
需要说明的是,在本公开的实施例中,客户端在按照标识信息,将待递送内容对应的JSON数据存储至不同的内存列表中之后,便可以继续对待递送内容对应的JSON数据进行磁盘缓存,即按照标识信息和内存列表,将JSON数据写入至目标磁盘中。
进一步地,在本公开的实施例中,客户端在将JSON数据写入至目标磁盘中时,可以在建立内存列表之后,添加任务进一个队列,从而可以开启一个子线程异步地将对应标识信息的内存列表数据拷贝进行编码并写入目标磁盘.避免阻塞主线程。
步骤103、根据JSON数据,对待递送内容进行视频预加载处理,获得预加载视频数据,并确定预加载视频数据对应的地址信息;其中,预加载视频数据用于对待递送内容进行视频数据的部分缓存。
在本公开的实施例中,客户端在按照标识信息对JSON数据进行分组存储,获得标识信息对应的内存列表,并根据标识信息和内存列表,将JSON数据写入目标磁盘之后,便可以根据JSON数据,对待递送内容进行视频预加载处理,获得预加载视频数据,并确定预加载视频数据对应的地址信息。
需要说明的是,在本公开的实施例中,本公开实施例提出的内容的缓存方法,既可以包括对待递送内容对应的JSON数据的缓存,也可以包括对待递送内容对应的视频数据的缓存。
需要说明的是,在本公开的实施例中,客户端可以先根据JSON数据,对待递送内容进行视频预加载处理,从而可以获得加载后的预加载视频数据,其中,预加载视频数据并不是待递送内容对应的全部视频数据,而是待递送内容对应的全部视频数据中的部分视频数据。也就是说,在本公开中,预加载视频数据可以用于对待递送内容进行视频数据的部分缓存。
进一步地,在本公开的实施例中,客户端可以按照预设数据参数进行视频数据的加载,可以使获得的预加载视频数据满足一定的数据大小,例如,待递送内容对应的全部视频数据的大小为3M,服务器下发的预加载大小字段,即预设数据参数是800k,那么客户端可以按照预设数据参数请求待递送内容对应的前800k的视频数据到本地,从而可以保证用户展示开屏时前几秒能流畅的播放,后面的内容再去实时地请求,这样节省了用户的流量。
需要说明的是,在本公开的实施例中,客户端在完成预加载视频数据的获取之后,可以先确定出预加载视频数据对应的地址信息,从而便可以进一步根据地址信息进行内存列表和目标磁盘的更新。
步骤104、按照标识信息将地址信息存储至内存列表和目标磁盘,以完成JSON数据和预加载视频数据的缓存。
在本公开的实施例中,客户端在根据JSON数据,对待递送内容进行视频预加载处理,获得预加载视频数据,并确定预加载视频数据对应的地址信息之后,可以按照标识信息将地址信息存储至内存列表和目标磁盘,从而便可以完成JSON数据和预加载视频数据的缓存。
进一步地,在本公开的实施例中,客户端在对JSON数据进行缓存处理时,可以基于标识信息,依次将JSON数据存储至内存列表和目标磁盘中;相应地,客户端在视频数据进行缓存处理时,也可以基于标识信息,依次将视频缓存数据对应的地址信息存储至内存列表和目标磁盘中。
需要说明的是,在本公开的实施例中,客户端可以利用一个专门队列负责处理原生开屏广告的视频数据的加载。
进一步地,在本公开的实施例中,在完成预加载视频数据的获取并确定出预加载视频数据的地址信息之后,客户端可以会在对应的JSON数据里记录地址信息,也就是说,客户端可以根据标识信息将地址信息添加至对应的内存列表中,然后再根据地址信息更新目标磁盘。
需要说明的是,在本公开的实施例中,内容的缓存方式可以为包括内存缓存和磁盘缓存的二级缓存,待递送内容的缓存内容可以包括JSON数据和视频数据,因此,客户端在按照标识信息,依次将JSON数据和视频数据的地址信息存储至内存列表和目标磁盘之后,便可以实现内容的缓存。
本公开实施例提出的一种内容的缓存方法,在缓存时,客户端获取待递送内容对应的JSON数据,并确定JSON数据对应的标识信息;按照标识信息对JSON数据进行分组存储,获得标识信息对应的内存列表,并根据标识信息和内存列表,将JSON数据写入目标磁盘;根据JSON数据,对待递送内容进行视频预加载处理,获得预加载视频数据,并确定预加载视频数据对应的地址信息;其中,预加载视频数据用于对待递送内容进行视频数据的部分缓存;按照标识信息将地址信息存储至内存列表和目标磁盘,以完成JSON数据和预加载视频数据的缓存。也就是说,在本公开中,客户端既可以根据待递送内容对应的数据的标识信息将待递送内容对应的JSON数据和预加载视频数据异步缓存至内存列表和目标磁盘中,客户端也可以根据待递送内容对应的数据的标识信息从内存列表或目标磁盘中读取待递送内容对应的JSON数据和预加载视频数据。由此可见,本公开提出的内容的缓存和读取方法,可以基于待递送内容对应的标识信息,实现待递送内容对应的数据的分表存储和定向读取。从而可以提高客户端的启动速度,同时解决原生开屏广告读取延迟的问题,提升了原生开屏广告的流畅度。
基于上述实施例,在本公开的另一个实施例中,客户端在按照标识信息对JSON数据进行分组存储,获得标识信息对应的内存列表时,可以将标识信息相同的JSON数据存储至同一个列表中,从而便可以生成标识信息对应的内存列表。
需要说明的是,在本公开的实施例中,一个标识信息对应一个内存列表。具体地,JSON数据的标识信息可以为splash_id的id尾号,也可以为其他标识字符,本公开实施例不作具体限定。例如,如果将splash_id的id尾号作为相应的JSON数据的标识信息,那么,内存列表1中存储有splash_id为100000001、100000011、100001001等的标识信息为1的JSON数据,内存列表2中存储有splash_id为100000002、100000012、100001002等的标识信息为2的JSON数据。
在本公开的实施例中,进一步地,客户端在根据JSON数据,对待递送内容进行视频预加载处理,获得预加载视频数据时,可以基于JSON数据,按照预设数据参数,对待递送内容对应的全部视频数据中的部分视频数据进行预加载,从而便可以获得预加载视频数据。
需要说明的是,在本公开的实施例中,预设数据参数可以用于对进行预加载的视频数据的数据大小进行限定,例如,预设数据参数可以为字段大小上限值,因此,客户端按照预设数据参数进行视频数据的加载所获得的预加载视频数据可以满足一定的数据大小。其中,预设数据参数可以由服务器进行下发。具体地,例如,待递送内容对应的全部视频数据的大小为2M,服务器下发的预设数据参数是810k,那么客户端便可以按照预设数据参数请求待递送内容对应的前810k的视频数据到本地,从而可以保证用户展示开屏时前几秒能流畅的播放,后面的内容再去实时地请求,这样节省了用户的流量。
在本公开的实施例中,进一步地,客户端在按照标识信息将地址信息存储至内存列表和目标磁盘之后,客户端还可以遍历内存列表,对内存列表中的、未存储地址信息的JSON数据进行视频预加载处理,以获得待递送内容对应的全部视频数据。
需要说明的是,在本公开的实施例中,由于预加载视频数据为待递送内容对应的全部视频数据中的部分视频数据,因此,客户端在完成预加载视频数据的缓存,并将预加载视频数据对应的地址信息存储至内存列表之后,可以遍历所有内存列表,如果内存列表中有无对应的存储地址信息的JSON数据,则针对该JSON数据继续进行待递送内容的视频预加载处理,直到待递送内容对应的全部JSON数据都缓存有对应的视频数据,从而便可以获得待递送内容对应的全部视频数据。也就是说,在本公开中,客户端在完成预加载视频数据的缓存之后,可以尝试遍历内存中所有的数据,对没有缓存过视频的数据进行视频预加载任务,本地已经有缓存视频的就不再执行此任务。
在本公开的实施例中,进一步地,客户端在按照标识信息将地址信息存储至内存列表和目标磁盘之后,客户端还可以遍历内存列表,对内存列表中的已过期数据进行删除处理,从而可以获得更新后的内存列表,然后可以按照更新后的内存列表更新目标磁盘。
需要说明的是,在本公开的实施例中,客户端在完成预加载视频数据的缓存,并将预加载视频数据对应的地址信息存储至内存列表之后,可以遍历所有内存列表,如果内存列表中有过期的JSON数据,则将过期的JSON数据进行删除,从而可以完成对内存列表的更新,在对内存列表进行更新之后,客户端还以利用更新后的内存列表对目标磁盘进行更新,以删除目标磁盘中缓存的过期的JSON数据。也就是说,在本公开中,客户端在完成预加载视频数据的缓存之后,可以尝试遍历内存中所有的数据,对已经过期的数据进行删除处理,已更新内存缓存,然后再异步地更新磁盘缓存,从而可以完成待递送内容缓存的更新。
本公开实施例提出的一种内容的缓存方法,在缓存时,客户端获取待递送内容对应的JSON数据,并确定JSON数据对应的标识信息;按照标识信息对JSON数据进行分组存储,获得标识信息对应的内存列表,并根据标识信息和内存列表,将JSON数据写入目标磁盘;根据JSON数据,对待递送内容进行视频预加载处理,获得预加载视频数据,并确定预加载视频数据对应的地址信息;其中,预加载视频数据用于对待递送内容进行视频数据的部分缓存;按照标识信息将地址信息存储至内存列表和目标磁盘,以完成JSON数据和预加载视频数据的缓存。也就是说,在本公开中,客户端既可以根据待递送内容对应的数据的标识信息将待递送内容对应的JSON数据和预加载视频数据异步缓存至内存列表和目标磁盘中,客户端也可以根据待递送内容对应的数据的标识信息从内存列表或目标磁盘中读取待递送内容对应的JSON数据和预加载视频数据。由此可见,本公开提出的内容的缓存和读取方法,可以基于待递送内容对应的标识信息,实现待递送内容对应的数据的分表存储和定向读取。从而可以提高客户端的启动速度,同时解决原生开屏广告读取延迟的问题,提升了原生开屏广告的流畅度。
基于上述实施例,在本公开的再一实施例中,继续参见图7,图7是本公开实施例提出的内容的读取方法的流程示意图,如图7所示,客户端读取待递送内容的方法可以包括以下步骤:
步骤201、在接收开启指令之后,确定待递送内容对应的JSON数据的标识信息。
在本公开的实施例中,客户端在接收开启指令之后,可以先确定出待递送内容对应的JSON数据的标识信息。其中,客户端可以通过多种方式接收开启指令,例如,客户端可以通过终端接收到的用户的触控操作接收开启指令,或者,客户端可以通过终端预先设置的开启机制的触发接收开启指令。
需要说明的是,在本公开的实施例中,客户端在接收开启指令之后,便可以先确定出需要进行展示的待递送内容对应的JSON数据的标识信息。具体地,在本公开中,客户端在进行读取待递送内容时所使用的标识信息的定义策略,与客户端对待递送内容进行缓存时定义标识信息的方式是相同的。也就是说,虽然客户端可以通过多种方式确定待递送内容对应的JSON数据的标识信息,然而,客户端在进行内容的缓存和读取时,需要通过相同的方式确定JSON数据的标识信息。
进一步地,在本公开的实施例中,客户端可以先确定出待递送内容的JSON数据对应的标识信息。具体地,客户端可以读取JSON数据中的splash_id,然后基于splash_id确定出标识信息。
需要说明的是,在本公开的实施例中,客户端在基于splash_id获取标识信息时,可以将splash_id的id尾号作为相应地JSON数据的标识信息。例如,splash_id为100000001的数据对应的标识信息为1,splash_id为100000002的数据对应的标识信息为2。
步骤202、若标识信息对应的内存列表中存在预加载视频数据对应的地址信息,则从内存列表中读取地址信息,并根据地址信息读取预加载视频数据;其中,预加载视频数据用于对待递送内容进行部分读取。
在本公开的实施例中,客户端在确定待递送内容对应的JSON数据的标识信息之后,如果标识信息对应的内存列表中存在预加载视频数据对应的地址信息,则从内存列表中读取地址信息,并根据地址信息读取预加载视频数据。
需要说明的是,在本公开的实施例中,预加载视频数据可以用于对待递送内容进行部分读取。也就是说,在本公开的实施例中,预加载视频数据并不是待递送内容对应的全部视频数据,而是待递送内容对应的全部视频数据中的部分视频数据。即在本公开中,客户端可以通过预加载视频数据的读取,对待递送内容进行视频数据进行部分获取。
进一步地,在本公开的实施例中,客户端在确定待递送内容对应的JSON数据的标识信息之后,可以按照标识信息对相应地内存列表进行遍历,从而确定出内存列表中是否存在预加载视频数据对应的地址信息。
需要说明的是,在本公开的实施例中,客户端在对待递送内容进行缓存时,具体可以为对待递送内容进行二级缓存,即内存缓存和磁盘缓存。也就是说,客户端在获取服务器下发的待递送内容对应的JSON数据之后,可以依次将JSON数据缓存至内存和磁盘中。
需要说明的是,在本公开的实施例中,本公开实施例提出的内容的缓存方法,既可以包括对待递送内容对应的JSON数据的缓存,也可以包括对待递送内容对应的视频数据的缓存。
进一步地,在本公开的实施例中,客户端在按照标识信息对JSON数据进行分组存储时,将标识信息相同的JSON数据存储至相同的列表中,因此,客户端在进行内容的读取时,可以先根据标识信息确定对应的内存列表,然后对内存列表进行查询处理。例如,当JSON数据的标识信息为1时,对内存列表1中存储的数据进行查询;当JSON数据的标识信息为2时,对内存列表2中存储的数据进行查询。也就是说,在本公开中,客户端可以按照标识信息,从与标识信息对应的内存列表进行数据的读取,而不需要遍历待递送内容对应的全部数据。
需要说明的是,在本公开的实施例中,客户端在按照标识信息对相应地内存列表进行查询之后,如果确定出内存列表中存在预加载视频数据对应的地址信息,那么客户端便可以直接从内存列表中读取预加载视频数据对应的地址信息,然后便可以根据地址信息进行预加载视频数据的读取。
步骤203、若标识信息对应的内存列表中不存在预加载视频数据对应的地址信息,则从目标磁盘中读取地址信息,并根据地址信息读取预加载视频数据。
在本公开的实施例中,客户端在确定待递送内容对应的JSON数据的标识信息之后,如果标识信息对应的内存列表中不存在预加载视频数据对应的地址信息,则从目标磁盘中读取地址信息,并根据地址信息读取预加载视频数据。
进一步地,在本公开的实施例中,客户端在对JSON数据进行缓存处理时,可以基于标识信息,依次将JSON数据存储至内存列表和目标磁盘中;相应地,客户端在视频数据进行缓存处理时,也可以基于标识信息,依次将视频缓存数据对应的地址信息存储至内存列表和目标磁盘中。
需要说明的是,在本公开的实施例中,内容的缓存方式可以为包括内存缓存和磁盘缓存的二级缓存,待递送内容的缓存内容可以包括JSON数据和视频数据,因此,客户端在按照标识信息,依次将JSON数据和视频数据的地址信息存储至内存列表和目标磁盘之后,便可以实现内容的缓存。
进一步地,在本公开的实施例中,客户端在按照标识信息对相应地内存列表进行查询之后,如果确定出内存列表中不存在预加载视频数据对应的地址信息,那么客户端便无法直接从内存列表中读取预加载视频数据对应的地址信息,然而,正是由于客户端在对待递送内容进行缓存时,具体可以为对待递送内容进行存缓存和磁盘缓存的二级缓存,因此,客户端无法从内存列表中读取预加载视频数据对应的地址信息时,可以再从目标磁盘中读取该地址信息,然后便可以根据地址信息进行预加载视频数据的读取。
通过上述步骤201至步骤203的内容的读取方法可以知道,在本公开中,客户端在收到开启指令之后,客户端的开屏模块可以开始根据开屏模块的内部频控逻辑挑选出可以展示的待递送内容的splash_id列表,客户端查询端上标识信息对应的视频数据是否已经下载好并具备展示条件,此时优先按照标识信息读取对应编号的内存列表(开销较小),当内存列表中不存在预加载视频数据时,再尝试读取磁盘缓存中的列表数据(开销较大),从而可以获得预加载视频数据对应的地址信息,并读取预加载视频数据。
需要说明的是,在本公开的实施例中,客户端在从目标磁盘中读取与标识信息对应的地址信息之后,也可以按照该地址信息对与标识信息对应的内存列表进行更新,这样在下一次对该标识信息对应的预加载视频数据进行读取时,变不需要再进行目标磁盘的读取,从而可以节省开销。
本公开实施例提出的一种内容的读取方法,在读取时,客户端在接收开启指令之后,确定待递送内容对应的JSON数据的标识信息;若标识信息对应的内存列表中存在预加载视频数据对应的地址信息,则从内存列表中读取地址信息,并根据地址信息读取预加载视频数据;其中,预加载视频数据用于对待递送内容进行部分读取;若标识信息对应的内存列表中不存在预加载视频数据对应的地址信息,则从目标磁盘中读取地址信息,并根据地址信息读取预加载视频数据。也就是说,在本公开中,客户端既可以根据待递送内容对应的数据的标识信息将待递送内容对应的JSON数据和预加载视频数据异步缓存至内存列表和目标磁盘中,客户端也可以根据待递送内容对应的数据的标识信息从内存列表或目标磁盘中读取待递送内容对应的JSON数据和预加载视频数据。由此可见,本公开提出的内容的缓存和读取方法,可以基于待递送内容对应的标识信息,实现待递送内容对应的数据的分表存储和定向读取。从而可以提高客户端的启动速度,同时解决原生开屏广告读取延迟的问题,提升了原生开屏广告的流畅度。
基于上述实施例,在本公开的又一实施例中,客户端在确定待递送内容对应的JSON数据的标识信息之后,客户端读取待递送内容的方法还可以包括以下步骤:
步骤204、检测当前状态参数。
在本公开的实施例中,客户端可以在确定待递送内容对应的JSON数据的标识信息之后,可以先检测客户端的当前状态参数。
进一步地,在本公开的实施例中,客户端需要先对客户端的状态进行检测,获得当前状态参数,从而进一步根据当前状态参数确定是否可以进行待递送内容的展示。
也就是说,在本公开的实施例中,当前状态参数可以用于对客户端是否具备展示待递送内容的条件进行确定。
需要说明的是,在本公开的实施例中,当前状态参数可以包括但不限于数据加载状态、数据失效状态、展示时机状态以及信息流的插入状态等多种状态参数中的至少一个。
进一步地,在本公开的实施例中,当前状态参数中的数据加载状态可以表征客户端是否已经加载完成待递送内容对应的视频数据;当前状态参数中的数据失效状态可以对客户端缓存的数据是否过期或失效进行确定;当前状态参数中的展示时机状态可以对客户端是否处于展示时机进行确定;当前状态参数中的信息流的插入状态可以用于客户端确定信息流是否插入待递送内容。
步骤205、若当前状态参数满足预设展示条件,则判定进行预加载视频数据的读取流程;其中,预设展示条件用于判断是否展示预加载视频数据对应的待递送内容视频。
需要说明的是,在本公开的实施例中,客户端可以预先设置有是否可以展示待递送内容的判断条件,即预设展示条件。也就是说,在本公开的实施例中,预设展示条件用于客户端基于当前状态参数对是否展示预加载视频数据对应的待递送内容视频。
进一步地,在本公开的实施例中,客户端在检测获得当前状态参数之后,可以先根据当前状态参数和预设展示条件对是否可以进行待递送内容的展示进行判断,如果判定结果为可以进行待递送内容的展示,那么客户端便可以进行预加载视频数据的读取流程,即可以执行上述步骤202或203。例如,客户端检测获得的当前状态参数满足预加载视频数据已经加载成功、数据没有失效、客户端处于展示时机以及当前信息流允许待递送内容的插入等预设展示条件,那么客户端便可以进一步读取预加载视频。
在本公开的实施例中,进一步地,客户端在根据地址信息读取预加载视频数据之后,客户端读取待递送内容的方法还可以包括以下步骤:
步骤206、将预加载视频数据嵌入至当前信息流中,获得待展示信息流。
在本公开的实施例中,客户端在读取预加载视频数据之后,便可以将预加载视频数据嵌入至当前信息流中,从而便可以获得待展示信息流。
需要说明的是,在本公开的实施例中,客户端在确定可以进行待递送内容的展示,并读取对应的预加载视频数据之后,便可以将预加载视频数据插入至原有的待展示的当前信息流之中,获得待展示信息流。其中,待展示是信息流可以将待递送内容与当前信息流进行无缝平滑的拼接并展示。
进一步地,在本公开的实施例中,待递送内容的展示可以分为开屏阶段和信息流阶段。具体地,从开屏阶段无缝衔接过渡到信息流阶段的方法在于视觉切换,需要从显示上调整视频的显示层级来实现。
步骤207、响应开启指令,播放待展示信息流对应的目标视频。
在本公开的实施例中,客户端在将预加载视频数据嵌入至当前信息流中,获得待展示信息流之后,可以响应开启指令,播放待展示信息流对应的目标视频,从而便可以实现待递送内容的展示。
进一步地,在本公开的实施例中,由于待展示信息流是客户端将预加载视频数据嵌入至当前信息流中获得的,因此,待展示信息流对应的目标视频可以包括预加载视频数据对应的待递送内容视频,和当前信息流对应的自然信息流视频。
需要说明的是,在本公开的实施例中,待递送内容的展示可以分为开屏阶段和信息流阶段,即待递送内容可以被展示为待递送内容视频和自然信息流视频。
进一步地,在本公开的实施例中,开屏阶段,即待递送内容视频,可以为一个纯净的视频展示,图8为开屏阶段的示意图,如图8所示,在展示原生开屏广告的开屏阶段,客户端展示的是一个纯净的视频界面,在该视频界面中,左上角显示有客户端的标识“Q”,右上角有跳过按钮。
进一步地,在本公开的实施例中,信息流阶段,即自然信息流视频,其各个广告组件交互和普通信息流广告保持了一致。具体地,客户端在展示信息流阶段时,可以实时的更新自然信息流视频的评论数量和点赞数量,这是由于预加载的视频数据是很之前完成加载的。同时,客户端在展示信息流阶段时,还可以强制打开当前的隐私状态和评论开关等限制,从而可以防止投放时间开始时出现异常case。
需要说明的是,在本公开的实施例中,由于待展示信息流是客户端将预加载视频数据嵌入至当前信息流中获得的,即待递送内容已经在feed流中,因此,客户端基于播放待展示信息流对应的目标视频进行待递送内容的展示时,可以通过终端接收到的上滑操作或者下滑操作,实现待递送内容视频和自然信息流视频之间的切换。
也就是说,在播放待展示信息流对应的目标视频中的待递送内容视频时,如果客户端通过终端接收到用户的上滑操作,那么客户端可以将待递送内容视频切换为自然信息流视频继续展示;在播放待展示信息流对应的目标视频中的自然信息流视频时,如果客户端通过终端接收到用户的下滑操作,那么客户端可以将自然信息流视频切换为待递送内容视频继续展示。从而可以实现待递送内容视频和自然信息流视频之间的平滑过渡,即实现开屏阶段和信息流阶段无缝拼接。
在本公开的实施例中,进一步地,客户端在根据地址信息读取预加载视频数据之后,客户端可以先对JSON数据进行结构转换处理,获得转换后的JSON数据,然后将转换后的JSON数据嵌入至当前信息流中。
在本公开的实施例中,进一步地,客户端在播放待展示信息流对应的目标视频之前,还可以在接收开启指令之后,先获取预存模拟启动图像和/或预存模拟启动视频,然后便可以响应开启指令,显示预存模拟启动图像和/或预存模拟启动视频。
需要说明的是,在本公开的实施例中,客户端可以预先存储有预存模拟启动图像和/或预存模拟启动视频,其中,预存模拟启动图像和/或预存模拟启动视频可以用于避免播放卡顿的产生。
进一步地,在本公开的实施例中,为了避免播放卡顿造成的空feed的展示,客户端在收到开启指令并进行启动之后,需要通过预存模拟启动图像和/或预存模拟启动视频的展示,形成正在启动的假象。
需要说明的是,在本公开的实施例中,客户端在响应开启指令,显示预存模拟启动图像和/或预存模拟启动视频之后,一旦准备好目标视频的展示,客户端便可以在播放待展示信息流对应的目标视频时,将预存模拟启动图像和/或预存模拟启动视频移除,从而可以进入待递送内容的展示界面。
图9为预存模拟启动图像的示意图,如图9所示,客户端A在接收待开启指令之后,在启动时,先展示一个预存模拟启动图像,客户端A通过该存模拟启动图像的显示,向用户展示出客户端A还在启动中的状态。
需要说明的是,现有技术中,会把所有的本地缓存待递送内容的数据在load方法中读入内存,所以在统计上会影响启动耗时的统计,实际上这一步骤可以做成懒加载,在软件开发工具包(Software Development Kit,SDK)调用pick方法选取原生开屏数据的时候进行,也就是说,现有技术中数据读取在开屏SDK启动之前进行,而本公开则是在SDK启动之后进行。
进一步地,由于一次pick时其实不需要读取所有的缓存数据,因此本本公开提出了分表存储的缓存方法和定向读取的读取方法,也就是说,待递送内容对应的每个计划有一个splash_id,现有技术中所有的splash_id相关的数据都是存在一起的,而本公开中是分开存储,如将尾号为1的数据缓存在一个内存列表,将尾号为2的数据缓存在另一个内存列表,即可以将全部数据就拆成10个不同的内存列表进行缓存,当SDK向客户端询问123456789号待递送内容是否可以展示时,客户端就去定向读取与尾号为9对应的内存列表,并从该内存列表中查询123456789,从而可以减小了一次读取的性能开销。
由此可见,本公开实施例中提出的内容的缓存方法和读取方法,可以基于待递送内容对应的标识信息,实现待递送内容对应的数据的分表存储和定向读取。
本公开实施例提出的一种内容的读取方法,在读取时,客户端在接收开启指令之后,确定待递送内容对应的JSON数据的标识信息;若标识信息对应的内存列表中存在预加载视频数据对应的地址信息,则从内存列表中读取地址信息,并根据地址信息读取预加载视频数据;其中,预加载视频数据用于对待递送内容进行部分读取;若标识信息对应的内存列表中不存在预加载视频数据对应的地址信息,则从目标磁盘中读取地址信息,并根据地址信息读取预加载视频数据。也就是说,在本公开中,客户端既可以根据待递送内容对应的数据的标识信息将待递送内容对应的JSON数据和预加载视频数据异步缓存至内存列表和目标磁盘中,客户端也可以根据待递送内容对应的数据的标识信息从内存列表或目标磁盘中读取待递送内容对应的JSON数据和预加载视频数据。由此可见,本公开提出的内容的缓存和读取方法,可以基于待递送内容对应的标识信息,实现待递送内容对应的数据的分表存储和定向读取。从而可以提高客户端的启动速度,同时解决原生开屏广告读取延迟的问题,提升了原生开屏广告的流畅度。
本公开实施例提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上所述的内容的缓存和读取方法。
具体来讲,本公开实施例中的一种内容的缓存和读取方法对应的程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种内容的缓存方法对应的程序指令被一客户端读取或被执行时,包括如下步骤:
获取待递送内容对应的JSON数据,并确定所述JSON数据对应的标识信息;
按照所述标识信息对所述JSON数据进行分组存储,获得所述标识信息对应的内存列表,并根据所述标识信息和所述内存列表,将所述JSON数据写入目标磁盘;
根据所述JSON数据,对所述待递送内容进行视频预加载处理,获得预加载视频数据,并确定所述预加载视频数据对应的地址信息;其中,所述预加载视频数据用于对所述待递送内容进行视频数据的部分缓存;
按照所述标识信息将所述地址信息存储至所述内存列表和所述目标磁盘,以完成所述JSON数据和所述预加载视频数据的缓存。
当存储介质中的与一种内容的读取方法对应的程序指令被一客户端读取或被执行时,包括如下步骤:
在接收开启指令之后,确定待递送内容对应的JSON数据的标识信息;
若所述标识信息对应的内存列表中存在预加载视频数据对应的地址信息,则从所述内存列表中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据;其中,所述预加载视频数据用于对所述待递送内容进行部分读取;
若所述标识信息对应的内存列表中不存在所述预加载视频数据对应的地址信息,则从目标磁盘中读取所述地址信息,并根据所述地址信息读取所述预加载视频数据。
本领域内的技术人员应明白,本公开可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的实现流程示意图和/或方框图来描述的。应理解可由计算机程序指令实现流程示意图和/或方框图中的每一流程和/或方框、以及实现流程示意图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本公开的较佳实施例而已,并非用于限定本公开的保护范围。