当前位置: 首页 > 专利查询>彭志勇专利>正文

基于serviceworker的文件缓存方法和加载方法技术

技术编号:37854815 阅读:7 留言:0更新日期:2023-06-14 22:47
本发明专利技术公开了一种基于serviceworker的文件缓存方法,包括:web程序接收当前文件组访问请求并解析,以获取当前文件组访问请求中包含的当前被访问文件组的组ID;web程序于localstorage中对当前被访问文件组的组ID进行检索,若localstorage中不存在当前被访问文件组的组ID,则web程序将当前被访问文件组的组ID加入localstorage中,并通知serviceworker将与当前被访问文件组的组ID匹配的一组文件数据下载存入缓存数据库中;其中,缓存过程中web程序于页面显示并更新该组文件的缓存进度。本发明专利技术实现文件的按需缓存,缓存的文件位置也能突破serviceworker本身的限制,并且缓存过程有进度显示,用户体验更好。用户体验更好。用户体验更好。

【技术实现步骤摘要】
基于serviceworker的文件缓存方法和加载方法


[0001]本专利技术涉及计算机
更具体地说,本专利技术涉及一种基于serviceworker的文件缓存方法和加载方法。

技术介绍

[0002]通常来说,一次影像设备(包括CT、MRI、PET/CT等)扫描产生的所有影像文件统称为一个检查(本专利中称之为一组文件),这一个检查包含的所有影像文件一般从几百个到几千个不等。目前,在采用web方式调阅DICOM的影像文件时,需要提前将当前调阅所涉及的所有影像文件先全部下载到浏览器所在的个人终端,从而在后续访问时可以快速的在本地浏览器缓存中调取,无需再从网络服务器下载。
[0003]一般情况下,浏览器的缓存机制有3种,分别为http缓存、appcache缓存和serviceworker缓存。http缓存是指通过http header指定让浏览器将加载文件缓存于浏览器缓存空间中,但是这种方式的缓存效果(是否缓存,缓存多少和大小)不可控,且必须要在浏览器的UI线程中通过图像加载/Ajax/Fetch等API手动发出请求;appcache缓存目前不被最新的浏览器支持;原始的serviceworker缓存也存在一些问题和限制,如:serviceworker中的Cache.addAll()接口提供了让后台同时加载多个文件的能力,但是只提供影像文件完全加载后的调阅,无法提供更细化的加载进度提示;serviceworker中的fetch event拦截的请求范围有限,当影像文件的访问路径和web程序的访问路径不相同时,fetch event无法拦截请求。

技术实现思路

[0004]本专利技术的一个目的是提供一种基于serviceworker的文件缓存方法和加载方法,以实现文件的按需缓存,并且缓存过程有进度显示,用户体验更好。
[0005]为了实现根据本专利技术的这些目的和其它优点,提供了一种基于serviceworker的文件缓存方法,其包括:
[0006]web程序接收当前文件组访问请求并解析,以获取当前文件组访问请求中包含的当前被访问文件组的组ID,所述组ID为web程序预先对由相互关联的一组文件形成的文件组赋予的唯一编号;
[0007]web程序于localstorage中对当前被访问文件组的组ID进行检索,localstorage中保存有历史被访问文件组的组ID,若localstorage中不存在当前被访问文件组的组ID,则web程序将当前被访问文件组的组ID加入localstorage中,并通知serviceworker将与当前被访问文件组的组ID匹配的一组文件数据下载存入缓存数据库中,缓存数据库中保存有与历史被访问文件组的组ID匹配的文件数据,若localstorage中存在当前被访问文件组的组ID,则web程序不予处理;
[0008]其中,web程序通知serviceworker缓存与当前被访问文件组的组ID匹配的一组文件数据前,先将该组文件中每一文件的URL进行预处理,web程序再将该组文件分为若干单
元,每次将一个单元包含的各个文件经预处理后的URL发送给serviceworker,以使serviceworker基于该单元包含的文件经预处理后的URL缓存该单元包含的文件的文件数据,并在该单元包含的文件的文件数据缓存完成后,给web程序反馈单元数据缓存完成信息,web程序再基于该单元数据缓存完成信息于页面显示并更新该组文件的缓存进度。
[0009]优选的是,若localstorage中不存在当前被访问文件组的组ID,则web程序根据预设的localstorage中组ID存储上限判断是否需要清除历史被访问文件组的组ID,若需要,则当web程序清除localstorage中历史被访问文件组的组ID后再将当前被访问文件组的组ID加入localstorage中,serviceworker同时清除缓存数据库中与当前localstorage中保存的组ID不匹配的文件数据。
[0010]优选的是,每一单元缓存完成后,serviceworker向web程序反馈单元数据缓存完成信息,web程序于页面显示并更新缓存进度,在serviceworker与web程序交互期间,serviceworker维持同组文件数据中其他单元包含的文件的文件数据的缓存操作。
[0011]优选的是,serviceworker基于该单元包含的文件经预处理后的URL缓存该单元包含的文件的文件数据时,将文件经预处理后的URL作为文件的key。
[0012]优选的是,web程序将与当前被访问文件组的组ID匹配的一组文件数据中每一文件的URL进行预处理的方法包括:将与当前被访问文件组的组ID匹配的一组文件数据中每一文件的访问路径后追加上该文件组的组ID。
[0013]本专利技术还提供一种基于serviceworker的文件加载方法,其包括:
[0014]应用上述的文件缓存方法缓存与当前被访问文件组的组ID匹配的一组文件数据;
[0015]web程序获取当前被访问文件组中任一文件的当前文件访问请求,并对当前文件访问请求的URL进行预处理再通过fetch API发出,以使当前文件访问请求被serviceworker拦截,进而serviceworker对URL经过预处理后的当前文件访问请求进行解析,获得当前被访问文件的key,根据当前被访问文件的key于缓存数据库中提取当前文件访问请求需求的文件数据;
[0016]web程序接收serviceworker发送的当前文件访问请求需求的文件数据并显示。
[0017]优选的是,web程序对当前文件访问请求的URL进行预处理的方法包括:
[0018]将serviceworker的拦截路径作为URL前缀,所述serviceworker的拦截路径为web程序的访问路径;
[0019]将当前被访问文件的组ID追加到被访问文件的访问路径上,再进行加密,然后附于所述URL前缀后;
[0020]加上第一特殊标识作为URL后缀,所述第一特殊标识用于使serviceworker识别当前文件访问请求的URL为需要拦截的对象。
[0021]优选的是,若当web程序响应于当前文件访问请求时,还接收到其他文件访问请求,所述其他文件访问请求包含的被访问文件的组ID与当前文件访问请求包含的被访问文件的组ID不同,对于其他文件访问请求,web程序采用与当前文件访问请求的URL预处理相同的方法给予其他文件访问请求的URL以预处理,再追加第二特殊标识,所述第二特殊标识用于在缓存数据库中未保存与其他文件访问请求需求的文件数据时,使serviceworker解析其拦截的经预处理的其他文件访问请求的URL,获得其他被访问文件的访问路径和组ID后,仅下载其他被访问文件的文件数据并发送给web程序而不存入缓存数据库中。
[0022]本专利技术至少包括以下有益效果:1、实现文件的按需缓存,并且缓存过程有进度显示,用户体验更好;2、当文件的访问路径和web程本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于serviceworker的文件缓存方法,其特征在于,包括:web程序接收当前文件组访问请求并解析,以获取当前文件组访问请求中包含的当前被访问文件组的组ID,所述组ID为web程序预先对由相互关联的一组文件形成的文件组赋予的唯一编号;web程序于localstorage中对当前被访问文件组的组ID进行检索,localstorage中保存有历史被访问文件组的组ID,若localstorage中不存在当前被访问文件组的组ID,则web程序将当前被访问文件组的组ID加入localstorage中,并通知serviceworker将与当前被访问文件组的组ID匹配的一组文件数据下载存入缓存数据库中,缓存数据库中保存有与历史被访问文件组的组ID匹配的文件数据,若localstorage中存在当前被访问文件组的组ID,则web程序不予处理;其中,web程序通知serviceworker缓存与当前被访问文件组的组ID匹配的一组文件数据前,先将该组文件中每一文件的URL进行预处理,web程序再将该组文件分为若干单元,每次将一个单元包含的各个文件经预处理后的URL发送给serviceworker,以使serviceworker基于该单元包含的文件经预处理后的URL缓存该单元包含的文件的文件数据,并在该单元包含的文件的文件数据缓存完成后,给web程序反馈单元数据缓存完成信息,web程序再基于单元数据缓存完成信息于页面显示并更新该组文件的缓存进度。2.如权利要求1所述的基于serviceworker的文件缓存方法,其特征在于,若localstorage中不存在当前被访问文件组的组ID,则web程序根据预设的localstorage中组ID存储上限判断是否需要清除历史被访问文件组的组ID,若需要,则当web程序清除localstorage中历史被访问文件组的组ID后再将当前被访问文件组的组ID加入localstorage中,serviceworker同时清除缓存数据库中与当前localstorage中保存的组ID不匹配的文件数据。3.如权利要求1所述的基于serviceworker的文件缓存方法,其特征在于,每一单元缓存完成后,serviceworker向web程序反馈单元数据缓存完成信息,web程序于页面显示并更新缓存进度,在serviceworker与web程序交互期间,serviceworker维持同组文件数据中其他单元包含的文件的文件数据的缓存操作。4.如权利要求1所述的基于serviceworker的文件缓存方法,其特征...

【专利技术属性】
技术研发人员:彭志勇刘志鹏
申请(专利权)人:彭志勇
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1