1.一种移动设备客户端的数据缓存方法,其特征在于,包括:
步骤1:客户端程序启动后,首先发送一个数据请求到服务器以获取当前界面展示所需的最新数据,同时在第一级缓存区中查询最近一次更新的展示界面需要的历史实体数据,如果第一级缓存区中存储有所述历史实体数据,则跳到步骤3执行;所述第一级缓存区位于磁盘中;
步骤2:当服务器返回所述最新数据后,解析所述最新数据并将其转化为对应的实体数据,将实体数据存入第一级缓存区以更新其中的历史实体数据;
步骤3:检查第一级缓存区中的实体数据中是否含有图片地址信息,若存在则执行步骤
4,否则跳到步骤7执行;
步骤4:根据图片地址信息检查该图片是否已存在于第二级缓存区中,若存在则跳到步骤6执行,否则执行步骤5;所述第二级缓存区位于内存中;
步骤5:根据图片地址信息,检查该图片是否已存在于第三级缓存区中,若存在则将该图片返回给第二级缓存区,否则根据图片地址信息到服务器上下载该图片,当图片下载完成后再将图片返回给第二级缓存区并将下载好的图片存储在第三级缓存区中;所述第三级缓存区位于磁盘上;
步骤6:将当前实体数据中的图片地址信息替换为已获取的图片得到完整的实体数据;
步骤7:根据实体数据展示界面。
2.根据权利要求1所述的一种移动设备客户端的数据缓存方法,其特征在于,所述步骤
4进一步包括:根据图片地址信息为图片生成唯一的标示,并根据所述标示查找该图片是否已存在于第二级缓存区中,若存在则跳到步骤6执行,否则执行步骤5。
3.根据权利要求2所述的一种移动设备客户端的数据缓存方法,其特征在于,步骤5进一步包括:根据图片的标示,检查该图片是否已存在于第三级缓存区中,若存在则将该图片及其标示返回给第二级缓存区,否则根据图片地址信息到服务器上下载该图片,当图片下载完成后再将图片及其标示返回给第二级缓存区并将下载好的图片及其标示关联存储在第三级缓存区中。
4.根据权利要求1所述的一种移动设备客户端的数据缓存方法,其特征在于,还包括注册系统内存不足警告消息的步骤,以及当收到该警告消息时释放第二级缓存区的步骤。
5.根据权利要求1所述的一种移动设备客户端的数据缓存方法,其特征在于,所述步骤
1中,发送一个数据请求到服务器以获取当前界面展示所需的最新数据时,还同时向服务器发送请求服务器返回的数据量阈值。
6.一种移动设备客户端的数据缓存系统,其特征在于,包括:
启动单元,用于在客户端程序启动后,首先发送一个数据请求到服务器以获取当前界面展示所需的最新数据,同时在第一级缓存区中查询最近一次更新的展示界面需要的历史实体数据,如果第一级缓存区中存储有所述历史实体数据,则触发第一级缓存单元;所述第一级缓存区位于磁盘中;
实体数据更新单元,用于当服务器返回所述最新数据后,解析所述最新数据并将其转化为对应的实体数据,将实体数据存入第一级缓存区以更新其中的历史实体数据;
第一级缓存单元,用于检查第一级缓存区中的实体数据中是否含有图片地址信息,若存在则触发第二级缓存单元,否则根据实体数据展示界面;
第二级缓存单元,用于根据图片地址信息检查该图片是否已存在于第二级缓存区中,若存在则触发数据显示单元,否则触发第三级缓存单元;所述第二级缓存区位于内存中;
第三级缓存单元,用于根据图片地址信息,检查该图片是否已存在于第三级缓存区中,若存在则将该图片返回给第二级缓存区,否则根据图片地址信息到服务器上下载该图片,当图片下载完成后再将图片返回给第二级缓存区并将下载好的图片存储在第三级缓存区中;所述第三级缓存区位于磁盘上;
数据显示单元,用于将当前实体数据中的图片地址信息替换为已获取的图片得到完整的实体数据,并根据完整的实体数据展示界面。
7.根据权利要求6所述的一种移动设备客户端的数据缓存系统,其特征在于,所述第二级缓存单元进一步用于根据图片地址信息为图片生成唯一的标示,并根据所述标示查找该图片是否已存在于第二级缓存区中,若存在则触发数据显示单元,否则触发第三级缓存单元。
8.根据权利要求7所述的一种移动设备客户端的数据缓存系统,其特征在于,第三级缓存单元进一步用于根据图片的标示,检查该图片是否已存在于第三级缓存区中,若存在则将该图片及其标示返回给第二级缓存区,否则根据图片地址信息到服务器上下载该图片,当图片下载完成后再将图片及其标示返回给第二级缓存区并将下载好的图片及其标示关联存储在第三级缓存区中。
9.根据权利要求6所述的一种移动设备客户端的数据缓存系统,其特征在于,还包括消息注册单元,用于注册系统内存不足警告消息;以及内存释放单元,用于当收到该系统内存不足警告消息时释放第二级缓存区。
10.根据权利要求6所述的一种移动设备客户端的数据缓存系统,其特征在于,所述启动单元进一步用于在发送一个数据请求到服务器以获取当前界面展示所需的最新数据时,还同时向服务器发送请求服务器返回的数据量阈值。
一种移动设备客户端的数据缓存方法及系统\n技术领域\n[0001] 本发明涉及数据缓存技术,尤其是一种移动设备客户端的数据缓存方法。\n背景技术\n[0002] 文中技术术语:\n[0003] URL:统一资源定位符,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址;\n[0004] Hash算法:一种将任意长度的消息压缩到某一固定长度的消息摘要的函数;\n[0005] MD5算法:信息—摘要算法5;\n[0006] 线程:运行程序的调度单位。\n[0007] 当前移动设备的客户端几乎都存在网络请求,而当用户在无网或者网络极不稳定的情况下使用客户端软件,这时,传统的做法是提示用户当前网络不可用,界面上不再显示内容,而这样的体验对用户来说是很不友好的。\n[0008] 为了解决这个问题,出现了离线缓存技术,即在有网的情况下,客户端尽可能多下载一些数据缓存到移动设备的磁盘中,当用户处于无网或者网络请求还未返回的情况下,则可先从磁盘读取最近缓存的数据,显示在界面上。\n[0009] 现有的缓存方法未将界面的文本数据与图片数据进行分级缓存,而是一并存储在磁盘中。具体做法是:移动设备上的客户端与服务器约定数据请求所返回的数据大小及格式,若界面需显示图片,则本次返回的数据中包含所需图片的URL。待服务器数据返回后,客户端将数据保存到磁盘的文件中,再从返回的数据中解析出图片URL,客户端根据URL请求图片下载,下载完成后也保存到磁盘中,再显示在界面上,当其他地方再次需要这张图片时,直接从磁盘中读取即可。\n[0010] 这样的方法存在一个较大的缺陷,即是对磁盘的访问率较大,当网络状态不稳定时,容易出现界面加载卡顿的现象,用户体验仍然不佳。\n发明内容\n[0011] 针对上述问题,本发明提出了一种分级缓存数据的方法,旨在需要使用缓存数据时降低对磁盘的访问率。\n[0012] 本发明中的移动设备客户端的数据缓存方法,包括:\n[0013] 步骤1:客户端程序启动后,首先发送一个数据请求到服务器以获取当前界面展示所需的最新数据,同时在第一级缓存区中查询最近一次更新的展示界面需要的历史实体数据,如果第一级缓存区中存储有所述历史实体数据,则跳到步骤3执行;所述第一级缓存区位于磁盘中;\n[0014] 步骤2:当服务器返回所述最新数据后,解析所述最新数据并将其转化为对应的实体数据,将实体数据存入第一级缓存区以更新其中的历史实体数据;\n[0015] 步骤3:检查第一级缓存区中的实体数据中是否含有图片地址信息,若存在则执行步骤4,否则跳到步骤6执行;\n[0016] 步骤4:根据图片地址信息检查该图片是否已存在于第二级缓存区中,若存在则跳到步骤6执行,否则执行步骤5;所述第二级缓存区位于内存中;\n[0017] 步骤5:根据图片地址信息,检查该图片是否已存在于第三级缓存区中,若存在则将该图片返回给第二级缓存区,否则根据图片地址信息到服务器上下载该图片,当图片下载完成后再将图片返回给第二级缓存区并将下载好的图片存储在第三级缓存区中;所述第三级缓存区位于磁盘上;\n[0018] 步骤6:将当前实体数据中的图片地址信息替换为已获取的图片得到完整的实体数据,并根据完整的实体数据展示界面。\n[0019] 所述步骤4进一步包括:根据图片地址信息为图片生成唯一的标示,并根据所述标示查找该图片是否已存在于第二级缓存区中,若存在则跳到步骤6执行,否则执行步骤5。\n[0020] 步骤5进一步包括:根据图片的标示,检查该图片是否已存在于第三级缓存区中,若存在则将该图片及其标示返回给第二级缓存区,否则根据图片地址信息到服务器上下载该图片,当图片下载完成后再将图片及其标示返回给第二级缓存区并将下载好的图片及其标示关联存储在第三级缓存区中。\n[0021] 进一步,还包括注册系统内存不足警告消息的步骤,以及当收到该警告消息时释放第二级缓存区的步骤。\n[0022] 进一步,所述步骤1中,发送一个数据请求到服务器以获取当前界面展示所需的最新数据时,还同时向服务器发送请求服务器返回的数据量阈值。\n[0023] 本发明中的移动设备客户端的数据缓存系统,包括:\n[0024] 启动单元,用于在客户端程序启动后,首先发送一个数据请求到服务器以获取当前界面展示所需的最新数据,同时在第一级缓存区中查询最近一次更新的展示界面需要的历史实体数据,如果第一级缓存区中存储有所述历史实体数据,则触发第一级缓存单元;所述第一级缓存区位于磁盘中;\n[0025] 实体数据更新单元,用于当服务器返回所述最新数据后,解析所述最新数据并将其转化为对应的实体数据,将实体数据存入第一级缓存区以更新其中的历史实体数据;\n[0026] 第一级缓存单元,用于检查第一级缓存区中的实体数据中是否含有图片地址信息,若存在则触发第二级缓存单元,否则触发数据显示单元;\n[0027] 第二级缓存单元,用于根据图片地址信息检查该图片是否已存在于第二级缓存区中,若存在则触发数据显示单元,否则触发第三级缓存单元;所述第二级缓存区位于内存中;\n[0028] 第三级缓存单元,用于根据图片地址信息,检查该图片是否已存在于第三级缓存区中,若存在则将该图片返回给第二级缓存区,否则根据图片地址信息到服务器上下载该图片,当图片下载完成后再将图片返回给第二级缓存区并将下载好的图片存储在第三级缓存区中;所述第三级缓存区位于磁盘上;\n[0029] 数据显示单元,用于将当前实体数据中的图片地址信息替换为已获取的图片得到完整的实体数据,并根据完整的实体数据展示界面。\n[0030] 所述第二级缓存单元进一步用于根据图片地址信息为图片生成唯一的标示,并根据所述标示查找该图片是否已存在于第二级缓存区中,若存在则触发数据显示单元,否则触发第三级缓存单元。\n[0031] 所述第三级缓存单元进一步用于根据图片的标示,检查该图片是否已存在于第三级缓存区中,若存在则将该图片及其标示返回给第二级缓存区,否则根据图片地址信息到服务器上下载该图片,当图片下载完成后再将图片及其标示返回给第二级缓存区并将下载好的图片及其标示关联存储在第三级缓存区中。\n[0032] 进一步,还包括消息注册单元,用于注册系统内存不足警告消息;以及内存释放单元,用于当收到该系统内存不足警告消息时释放第二级缓存区。\n[0033] 所述启动单元进一步用于在发送一个数据请求到服务器以获取当前界面展示所需的最新数据时,还同时向服务器发送请求服务器返回的数据量阈值。\n[0034] 由于采用了上述方法,本发明的有益效果为:\n[0035] 1.当客户端程序启动时,本发明能够及时将最近一次更新的历史浏览数据显示到界面上,供用户阅读,等到服务器返回新的数据时再刷新界面内容,特别是在无网或者网络极不稳定的情况下,给用户提供了一定量的离线数据供其使用,用户体验更好。例如微博客户端,启动后快速将本地存储的最近一次更新的历史浏览数据显示到界面上,用户在等待最新的数据到来前可以先阅读历史浏览数据,而不是被迫面对没有内容的界面直到最新数据到来。事实证明,大部分情况下历史数据也有很多内容是用户当时没有仔细阅读或是没有阅读过的,因此极大提升了用户体验度。\n[0036] 2.本发明将文本数据与图片数据分级缓存,对图片数据又进一步分级存储及下载,使本系统结构更加清晰,同时提升了界面的流畅度。\n[0037] 3.本发明还对内存使用情况进行监控,在低内存时释放图片内存缓存,即第二级缓存区,有效防止了程序因内存不足而崩溃。\n[0038] 4.在下载图片和写入图片数据到磁盘时均采用多线程技术,最大限度提升了程序性能,防止界面阻塞。\n附图说明\n[0039] 本发明将通过例子并参照附图的方式说明,其中:\n[0040] 图1为本发明方法一个具体实施例的流程图。\n具体实施方式\n[0041] 本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。\n[0042] 本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。\n[0043] 第一个实施例\n[0044] 1.客户端程序启动后,首先发送一个数据请求到服务器以获取当前界面展示所需的最新数据,同时在第一级缓存区中查询最近一次更新的展示界面需要的历史实体数据(实体数据包括展示界面需要的文本数据及图片URL信息),如果第一级缓存区中存储有所述历史数据,则跳到步骤3并往下执行。\n[0045] 2.当服务器返回所述最新数据后,解析所述最新数据并将其转化为对应的实体数据,将实体数据存入第一级缓存区以更新其中的历史实体数据。所述第一级缓存区位于磁盘中。\n[0046] 3.检查第一级缓存区中的实体数据中是否含有图片数据相关信息,如图片的URL,若有则执行步骤4,否则跳到步骤6执行。\n[0047] 4.根据图片的URL检查该图片是否已存在于第二级缓存区中,若有则跳到步骤6执行,否则执行步骤5。所述第二级缓存区位于内存中。\n[0048] 5.根据图片的URL,检查该图片是否已存在于第三级缓存区中,若有则将该图片返回给第二级缓存区,否则根据图片的URL到服务器上下载该图片,当图片下载完成后再将图片返回给第二级缓存区并将下载好的图片存储在第三级缓存区中。所述第三级缓存区位于磁盘上。\n[0049] 6.将当前实体数据中的图片URL替换为已获取的图片得到完整的实体数据,并根据完整的实体数据展示界面。\n[0050] 参考图1,第二实施例\n[0051] 1.客户端程序启动后,首先发送一个数据请求到服务器以获取当前界面展示所需的最新数据,同时在第一级缓存区中查询最近一次更新的展示界面需要的历史实体数据(实体数据包括展示界面需要的文本数据及图片URL信息),如果第一级缓存区中存储有所述历史数据,则跳到步骤3并往下执行。\n[0052] 2.当服务器返回所述最新数据后,解析所述最新数据并将其转化为对应的实体数据,将实体数据存入第一级缓存区以更新其中的历史实体数据。所述第一级缓存区位于磁盘中。\n[0053] 3.检查第一级缓存区中的实体数据中是否含有图片数据相关信息,如图片的URL,若有则执行步骤4,否则跳到步骤6执行。\n[0054] 4.为图片生成唯一的标示,例如使用Hash或MD5算法处理图片的URL得到唯一标示该图片的键值KEY。用KEY在第二级缓存区中查找是否有与之对应的图片,若有则跳到步骤6执行,否则执行步骤5。所述第二级缓存区位于内存中。\n[0055] 5.根据图片KEY,检查该图片是否已存在于第三级缓存区中,若有则将该图片及其对应的KEY返回给第二级缓存区,否则根据图片的URL到服务器上下载该图片,具体做法是将图片的URL放入图片的下载线程池中下载,当图片下载完成后再将图片及其对应的KEY返回到第二级缓存区,同时创建写磁盘数据的线程,将下载好的图片及其KEY对应存储在第三级缓存区中。所述第三级缓存区位于磁盘上。\n[0056] 6.将当前实体数据中的图片URL替换为与之对应的图片得到完整的实体数据,并根据完整的实体数据展示界面。\n[0057] 为每个图片生成KEY值,便于图片的存储、查询管理。\n[0058] 第三实施例\n[0059] 在第二实施例的基础上还包括注册系统内存不足警告消息的步骤,当收到该警告消息时则释放第二级缓存区。优选的,在程序启动后首次执行步骤4时,就先进行消息注册。\n这里所说的系统是指移动终端上的操作系统。第二级缓存区主要用于存储图片,由于图片占用存储空间较大,当内存不足时,直接释放第二级缓存区能有效防止程序因内存不足而崩溃。\n[0060] 第四实施例\n[0061] 在前述各实施例的基础上,对步骤1进行变形:发送数据请求到服务器以获取当前界面展示所需的最新数据时,同时发送请求服务器返回的数据量阈值。例如客户端请求服务器返回的数据量为20条数据,服务器将按照此数据量阈值返回最新数据。这样做的好处时,客户端能够根据实际需要决定服务器一次返回的数据量,既能保证系统的流畅,又能充分利用系统资源。\n[0062] 本发明还提供了一种与上述方法步骤一一对应的软系统。\n[0063] 软系统第一实施例,包括:\n[0064] 启动模块,用于在客户端程序启动后,首先发送一个数据请求到服务器以获取当前界面展示所需的最新数据,同时在第一级缓存区中查询最近一次更新的展示界面需要的历史实体数据,如果第一级缓存区中存储有所述历史实体数据,则触发第一级缓存单元。\n[0065] 实体数据更新模块,用于当服务器返回所述最新数据后,解析所述最新数据并将其转化为对应的实体数据,将实体数据存入第一级缓存区以更新其中的历史实体数据。所述第一级缓存区位于磁盘中。\n[0066] 第一级缓存单元,用于检查第一级缓存区中的实体数据中是否含有图片数据相关信息,如图片的URL,若有则将图片的URL传给并触发第二级缓存单元,否则触发数据显示单元。\n[0067] 第二级缓存单元,用于根据图片的URL检查该图片是否已存在于第二级缓存区中,若有则触发数据显示单元,否则将图片的URL传给并触发第三级缓存单元。所述第二级缓存区位于内存中。\n[0068] 第三级缓存单元,用于根据图片的URL,检查该图片是否已存在于第三级缓存区中,若有则将该图片返回给第二级缓存区,否则根据图片的URL到服务器上下载该图片,当图片下载完成后再将图片返回给第二级缓存区并将下载好的图片存储在第三级缓存区中。\n所述第三级缓存区位于磁盘上。\n[0069] 数据显示单元,用于将当前实体数据中的图片URL替换为已获取的图片得到完整的实体数据,并根据完整的实体数据展示界面。\n[0070] 软系统第二实施例,包括:\n[0071] 启动单元,用于在客户端程序启动后,首先发送一个数据请求到服务器以获取当前界面展示所需的最新数据,同时在第一级缓存区中查询最近一次更新的展示界面需要的历史实体数据,如果第一级缓存区中存储有所述历史实体数据,则触发第一级缓存单元。\n[0072] 实体数据更新单元,用于当服务器返回所述最新数据后,解析所述最新数据并将其转化为对应的实体数据,将实体数据存入第一级缓存区以更新其中的历史实体数据。所述第一级缓存区位于磁盘中。\n[0073] 第一级缓存单元,用于检查第一级缓存区中的实体数据中是否含有图片数据相关信息,如图片的URL,若有则将图片的URL传给并触发第二级缓存单元,否则触发数据显示单元。\n[0074] 第二级缓存单元,用于为图片生成唯一的标示,例如使用Hash或MD5算法处理图片的URL得到唯一标示该图片的键值KEY。用KEY在第二级缓存区中查找是否有与之对应的图片,若有则触发数据显示单元,否则将图片的KEY及URL传给并触发第三级缓存单元。所述第二级缓存区位于内存中。\n[0075] 第三级缓存单元,用于根据图片KEY,检查该图片是否已存在于第三级缓存区中,若有则将该图片及其对应的KEY返回给第二级缓存区,否则根据图片的URL到服务器上下载该图片,具体做法是将图片的URL放入图片的下载线程池中下载,当图片下载完成后再将图片及其对应的KEY返回到第二级缓存区,同时创建写磁盘数据的线程,将下载好的图片及其KEY关联存储在第三级缓存区中。所述第三级缓存区位于磁盘上。\n[0076] 数据显示单元,用于将当前实体数据中的图片URL替换为与之对应的图片得到完整的实体数据,并根据完整的实体数据展示界面。\n[0077] 为每个图片生成KEY值,便于图片的存储、查询管理。\n[0078] 软系统第三实施例\n[0079] 在第二实施例的基础上还包括消息注册单元,用于注册系统内存不足警告消息,以及内存释放单元,用于当收到该警告消息时释放第二级缓存区。\n[0080] 软系统第四实施例\n[0081] 在前述各实施例的基础上,启动单元进一步用于发送数据请求到服务器以获取当前界面展示所需的最新数据时,同时发送请求服务器返回的数据量阈值。\n[0082] 本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。
法律信息
- 2020-02-04
专利权人的姓名或者名称、地址的变更
专利权人由成都品果科技有限公司变更为成都品果科技有限公司
地址由610041 四川省成都市高新区天府软件园C12-16楼变更为610015 四川省成都市中国(四川)自由贸易试验区成都高新区天府大道中段1268号1栋13层
- 2018-11-13
- 2015-07-01
实质审查的生效
IPC(主分类): H04L 29/06
专利申请号: 201510063259.5
申请日: 2015.02.06
- 2015-06-03
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2013-06-05
|
2011-11-23
| | |
2
| |
2014-12-24
|
2014-09-11
| | |
3
| |
2014-05-14
|
2013-12-26
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |