CN111475180A - 更新客户端缓存的方法和*** - Google Patents

更新客户端缓存的方法和*** Download PDF

Info

Publication number
CN111475180A
CN111475180A CN201910068527.0A CN201910068527A CN111475180A CN 111475180 A CN111475180 A CN 111475180A CN 201910068527 A CN201910068527 A CN 201910068527A CN 111475180 A CN111475180 A CN 111475180A
Authority
CN
China
Prior art keywords
cache
resource file
management module
cache management
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910068527.0A
Other languages
English (en)
Inventor
卢晶晶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201910068527.0A priority Critical patent/CN111475180A/zh
Publication of CN111475180A publication Critical patent/CN111475180A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种更新客户端缓存的方法和***,涉及计算机技术领域。该方法的一具体实施方式包括:浏览器根据页面访问请求为未注册缓存管理模块的页面注册并安装缓存管理模块;缓存管理模块根据页面访问请求从缓存中查找请求的资源文件,并执行资源文件以将更新校验请求发送给服务器,更新校验请求包括资源文件的版本标识;服务器根据版本标识验证资源文件是否已更新,并将验证结果返回给缓存管理模块;缓存管理模块根据验证结果进行判断,若资源文件已更新,则通过更新缓存管理模块以向服务器请求最新的资源文件,并更新缓存中的资源文件。该实施方式无需修改资源文件的文件名,也无需对资源文件设置很短的缓存时间,即可实现缓存的及时更新。

Description

更新客户端缓存的方法和***
技术领域
本发明涉及计算机技术领域,尤其涉及一种更新客户端缓存的方法和***。
背景技术
浏览器缓存是指浏览器利用HTTP(HyperText Transfer Protocol,超文本传输协议)协议的缓存机制,把已请求过的资源文件(如:JavaScript脚本文件、CSS层叠样式表文件和图片文件等)存储到客户端本地,下一次请求到来时,浏览器可以直接从客户端本地加载符合缓存条件的资源。
缓存带来的问题之一是如何更新缓存。对于常用的两种缓存策略来说,强制缓存存在的问题是在缓存未过期期间,如果服务器上的资源有更新,就无法及时通知客户端,浏览器的缓存就不能及时更新;协商缓存每次都向服务器获取更新信息,能及时更新缓存,但是频繁请求降低了资源加载速度,牺牲了性能。为了实现既保证缓存的及时更新,又最大限度地提升网络性能,现在普遍采用非覆盖式发布的方式来更新缓存。对于HTML页面文件采用协商缓存策略,保证和服务器通信,及时更新;对于页面里的静态资源文件(如:JavaScript脚本文件、CSS层叠样式表文件和图片文件等)使用强制缓存。当静态资源文件发布更新时,对文件重命名,以一个新文件发布到线上(不覆盖旧版文件),并修改HTML页面引用的资源路径。这样用户在请求页面时,如果引用的静态资源有更新,就会请求新资源,及时更新缓存,从而使开发者能够为静态资源设置较长时间的强制缓存。
但是,在实现本发明过程中,发明人发现现有技术中至少还存在如下问题:
1、通过更改文件名的方式实现缓存更新并非适合所有文件:
(1)一些第三方的静态资源文件,被众多开发者引用,通过修改文件名来更新无法保证所有开发者知晓,这是很不方便的。通常第三方脚本的缓存策略是采用强制缓存并设置较短的过期时间以便能及时更新缓存。但是这种方式也无法保证服务器文件更新后,客户端下次请求的一定是最新资源;
(2)对于博客类网站,用户一般无法修改页面源码,也就无法通过更新资源文件名的方式更新缓存;
2、若静态资源文件更新频繁,HTML页面文件也必须频繁发布。现在的主流开发方式是前后端分离,HTML页面和静态文件通常部署在不同服务器上,每次更新双方都需要部署,增加了部署成本。
发明内容
有鉴于此,本发明实施例提供一种更新客户端缓存的方法和***,能够在客户端进行缓存文件的管理和更新,无需修改资源文件的文件名,也无需对资源文件设置很短的缓存时间,即可实现缓存的及时更新,从而保证每次浏览器获取的用户请求页面的资源文件均为最新版本。
为实现上述目的,根据本发明实施例的一个方面,提供了一种更新客户端缓存的方法。
一种更新客户端缓存的方法,包括:浏览器根据页面访问请求为未注册缓存管理模块的页面注册并安装缓存管理模块;所述缓存管理模块根据所述页面访问请求从缓存中查找请求的资源文件,并执行所述资源文件以将更新校验请求发送给服务器,所述更新校验请求包括所述资源文件的版本标识;所述服务器根据所述版本标识验证所述资源文件是否已更新,并将验证结果返回给所述缓存管理模块;所述缓存管理模块根据所述验证结果进行判断,若所述资源文件已更新,则通过更新所述缓存管理模块以向所述服务器请求最新的资源文件,并更新所述缓存中的资源文件。
可选地,还包括:通过设置所述更新校验请求的缓存策略为永不缓存,以使每次执行所述资源文件时都会发送所述更新校验请求。
可选地,还包括:若所述缓存管理模块从所述缓存中未查找到所述资源文件,则直接向所述服务器请求获取所述资源文件。
可选地,通过更新所述缓存管理模块以向所述服务器请求最新的资源文件包括:通过更改所述缓存的版本标识来触发所述浏览器对所述缓存管理模块进行更新,以使更新后的缓存管理模块直接向所述服务器请求最新的资源文件。
可选地,还包括:通过设置所述缓存管理模块在安装过程中的请求的缓存策略为永不缓存,以使所述安装过程中的请求直接发送给所述服务器。
可选地,所述缓存管理模块为服务工作线程Service Worker。
根据本发明实施例的另一方面,提供了一种更新客户端缓存的***。
一种更新客户端缓存的***,包括:浏览器、缓存管理模块和服务器,其中,所述浏览器用于根据页面访问请求为未注册缓存管理模块的页面注册并安装缓存管理模块;所述缓存管理模块用于根据所述页面访问请求从缓存中查找请求的资源文件,并执行所述资源文件以将更新校验请求发送给服务器,所述更新校验请求包括所述资源文件的版本标识;以及在接收到所述服务器返回的验证结果后,根据所述验证结果进行判断,若所述资源文件已更新,则通过更新所述缓存管理模块以向所述服务器请求最新的资源文件,并更新所述缓存中的资源文件;所述服务器用于根据所述版本标识验证所述资源文件是否已更新,并将验证结果返回给所述缓存管理模块。
可选地,通过设置所述更新校验请求的缓存策略为永不缓存,以使每次执行所述资源文件时都会发送所述更新校验请求。
可选地,若所述缓存管理模块从所述缓存中未查找到所述资源文件,则直接向所述服务器请求获取所述资源文件。
可选地,所述缓存管理模块还用于:通过更改所述缓存的版本标识来触发所述浏览器对所述缓存管理模块进行更新,以使更新后的缓存管理模块直接向所述服务器请求最新的资源文件。
可选地,通过设置所述缓存管理模块在安装过程中的请求的缓存策略为永不缓存,以使所述安装过程中的请求直接发送给所述服务器。
可选地,所述缓存管理模块为服务工作线程Service Worker。
根据本发明实施例的又一方面,提供了一种更新客户端缓存的电子设备。
一种更新客户端缓存的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例所提供的更新客户端缓存的方法。
根据本发明实施例的再一方面,提供了一种计算机可读介质。
一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例所提供的更新客户端缓存的方法。
上述发明中的一个实施例具有如下优点或有益效果:通过引入缓存管理模块在客户端对缓存进行控制和更新,在需要缓存的资源文件中记录版本标识,并当每次执行资源文件时均发送一个更新验证请求以将版本标识告知服务器,服务器将收到的版本标识与最新资源文件的版本标识进行对比,判断是否有更新,并通知缓存管理模块;若缓存管理模块收到更新信息,则通过更新缓存管理模块来向服务器请求最新的资源文件,实现了在客户端进行缓存文件的管理和更新,无需修改资源文件的文件名,也无需对资源文件设置很短的缓存时间,即可实现缓存的及时更新,从而保证每次浏览器获取的用户请求页面的资源文件均为最新版本。另外,本发明通过对缓存名称进行版本控制,还可以避免因为ServiceWorker安装文件被缓存而导致资源更新不及时的问题。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的更新客户端缓存的方法的主要步骤示意图;
图2是根据本发明实施例的更新客户端缓存的***的主要组成部分示意图;
图3是本发明实施例的客户端缓存更新方法的实现流程示意图;
图4是本发明实施例可以应用于其中的示例性***架构图;
图5是适于用来实现本发明实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
为了解决现有技术中存在的问题,本发明提供了一种在客户端进行缓存文件更新的方法及***,无需修改文件名,也无需对文件设置很短的缓存时间,即可实现缓存的及时更新。由于浏览器缓存一般指的是HTTP缓存,为了进行区分,本发明中客户端的浏览器中的缓存称为客户端缓存,简称为“缓存”。
在本发明具体实施方式的介绍中,所出现的名词释义如下:
静态资源文件:客户端发送请求到web(World Wide Web的简称,万维网)服务器,web服务器从文件***获取到相应的文件,直接返回给客户端,客户端解析并渲染显示出来,这样的文件一般叫做静态资源,通常指JS(JavaScript的简称)、CSS(Cascading StyleSheets,层叠样式表)、图片等非服务器动态运行生成的文件;
Service Worker:服务工作线程,是浏览器在后***立于网页运行的脚本,提供了那些不需要与web页面交互的功能在网页背后悄悄执行的能力。它是一种JavaScript工作线程,是一种可编程网络代理,开发者能够控制页面所发送网络请求的处理方式。ServiceWorker首先具备的功能是拦截和处理网络请求的功能,包括可编程的消息缓存管理能力。
本发明的原理是:通过引入缓存管理模块Service Worker在客户端对缓存进行控制和更新,在需要缓存的静态资源文件中记录版本标识,并当每次执行该静态资源文件时均发送一个更新验证请求以将版本标识告知服务器,服务器将收到的版本标识与最新资源文件的版本标识进行对比,判断是否有更新,并通知缓存管理模块Service Worker。若缓存管理模块Service Worker收到更新信息,则通过更改缓存管理模块Service Worker的缓存版本号来触发浏览器对Service Worker的更新,并通过更新后的缓存管理模块ServiceWorker请求最新的资源文件。根据本发明的技术方案,既实现了及时的缓存更新,又无需修改资源文件的文件名。
为了实现本发明的技术方案,可预先在需要缓存的静态资源文件中增加版本标识,并设置当这些静态资源文件被执行时,会向服务器发送一个更新验证请求,以验证客户端本地缓存的静态资源文件是否为最新版本。其中,版本标识例如是版本号或者时间戳等可以标识静态资源文件的当前版本的任何数据。另外,还可预先设置各资源的缓存策略:(1)将用于获取文件更新信息的更新验证请求设置为直接发送给服务端,不缓存;(2)将静态资源文件设置为缓存优先,如果缓存里没有查找到结果,再发送给服务端。
根据本发明的技术方案,缓存管理模块例如是服务工作线程Service Worker。当用户请求访问页面时,浏览器通过调用navigator.serviceWorker.register()方法为该页面注册Service Worker。具体地,通过执行页面里部署的注册Service Worker的代码,可以告知浏览器Service Worker脚本的具***置。
在为页面注册Service Worker之后,浏览器从放置Service Worker脚本的具***置处找到Service Worker脚本文件,将其加载到浏览器中并执行以安装Service Worker。在install(安装)回调事件处理函数中,Service Worker可以请求需要缓存的资源(例如:JS文件等),打开缓存,设置缓存名称,设置缓存策略等等。其中,在设置缓存名称时,可以将缓存的当前的版本标识(例如:版本号、时间戳等)作为缓存名称,并用变量version保存。当缓存发生变更时,可以通过修改缓存的版本标识来标识缓存的变更,从而使浏览器及时发现Service Worker已被修改,并对Service Worker进行更新,重新安装Service Worker。通过对缓存名称进行版本控制,可以避免因为Service Worker安装文件被缓存而导致资源更新不及时的问题。
同时,为了避免在Service Worker安装过程中用户发来的其他页面访问请求的静态资源文件从浏览器缓存(即HTTP缓存)中进行加载,可以设置在Service Worker安装过程中的请求的缓存策略为永不缓存,例如可设置请求参数{cache:'no-cache'}来保证请求必须向服务端验证。例如:通过设置new Request('/script.js',{cache:'no-cache'}),以使得“/script.js”这个静态资源文件的获取请求直接向服务端验证。
最后,在Service Worker安装完成后,通过Service Worker的fetch(抓取)事件拦截网络请求,并根据预先设置的对请求的响应规则对拦截到的每个请求进行响应。预先设置的对请求的响应规则例如:若该请求为页面访问请求,则根据页面访问请求优先从缓存中查找请求的资源文件;若该请求为服务器返回的资源文件的版本标识,则根据版本标识进行判断,若资源文件未更新(版本标识相同),则将缓存的资源文件发送给浏览器,若资源文件已更新(版本标识不同),则通过修改缓存名称(或缓存的版本标识,或缓存的资源列表中资源文件的版本标识)来更新Service Worker,以请求从服务器获取最新的资源文件。
图1是根据本发明实施例的更新客户端缓存的方法的主要步骤示意图。如图1所示,本发明实施例的更新客户端缓存的方法主要包括如下的步骤S101至步骤S104。
步骤S101:浏览器根据页面访问请求为未注册缓存管理模块的页面注册并安装缓存管理模块;
步骤S102:缓存管理模块根据页面访问请求从缓存中查找请求的资源文件,并执行资源文件以将更新校验请求发送给服务器,更新校验请求包括资源文件的版本标识;
步骤S103:服务器根据版本标识验证资源文件是否已更新,并将验证结果返回给缓存管理模块;
步骤S104:缓存管理模块根据验证结果进行判断,若资源文件已更新,则通过更新缓存管理模块以向服务器请求最新的资源文件,并更新缓存中的资源文件。
根据本发明的实施例,通过设置更新校验请求的缓存策略为永不缓存,以使每次执行该资源文件时都会发送更新校验请求。如此,即可保证每次浏览器获取的用户请求页面的静态资源文件均为最新版本。
根据本发明的一个实施例,若缓存管理模块从缓存中未查找到资源文件,则直接向服务器请求获取资源文件。若缓存中未查找到资源文件,即说明该文件并未被缓存或者缓存已过期,因此,需要向服务器请求最新的文件,从而使每次浏览器显示的页面中包含的文件均是最新版本的文件。
根据本发明的另一个实施例,通过更新缓存管理模块以向服务器请求最新的资源文件在具体执行时可以包括:通过更改缓存的版本标识来触发浏览器对缓存管理模块进行更新,以使更新后的缓存管理模块直接向服务器请求最新的资源文件。通过对缓存名称进行版本控制,可以避免因为Service Worker安装文件被缓存而导致资源更新不及时的问题。
根据本发明的有一个实施例,通过设置缓存管理模块在安装过程中的请求的缓存策略为永不缓存,以使安装过程中的请求直接发送给服务器。如此,即可避免在缓存管理模块安装过程中,当用户发来其他页面访问请求时,从浏览器缓存(即:HTTP缓存)中进行资源文件的加载而带来的显示给用户的页面文件不一定是最新版本的问题,从而保证了无论何时显示给用户的页面文件的准确性。
在本发明的实施例中,缓存管理模块为服务工作线程Service Worker。
图2是根据本发明实施例的更新客户端缓存的***的主要组成部分示意图。如图2所示,本发明实施例的更新客户端缓存的***200主要包括浏览器201、缓存管理模块202和服务器203。其中,浏览器201和缓存管理模块202位于客户端,服务器203位于服务端。
浏览器201用于根据页面访问请求为未注册缓存管理模块的页面注册并安装缓存管理模块;
缓存管理模块202用于根据页面访问请求从缓存中查找请求的资源文件,并执行资源文件以将更新校验请求发送给服务器,更新校验请求包括资源文件的版本标识;以及在接收到服务器返回的验证结果后,根据验证结果进行判断,若资源文件已更新,则通过更新缓存管理模块以向服务器请求最新的资源文件,并更新缓存中的资源文件;
服务器203用于根据版本标识验证资源文件是否已更新,并将验证结果返回给缓存管理模块。
根据本发明的一个实施例,通过设置更新校验请求的缓存策略为永不缓存,以使每次执行资源文件时都会发送更新校验请求。
根据本发明的另一个实施例,若缓存管理模块从缓存中未查找到资源文件,则直接向服务器请求获取资源文件。
根据本发明的又一个实施例,缓存管理模块202还可以用于:
通过更改缓存的版本标识来触发浏览器对缓存管理模块进行更新,以使更新后的缓存管理模块直接向服务器请求最新的资源文件。
根据本发明的另一个实施例,通过设置缓存管理模块在安装过程中的请求的缓存策略为永不缓存,以使安装过程中的请求直接发送给服务器。
在本发明的实施例汇总,缓存管理模块为服务工作线程Service Worker。
图3是本发明实施例的客户端缓存更新方法的实现流程示意图。如图3所示,本发明实施例的客户端缓存更新方法主要包括以下实现步骤:
步骤S1:用户在浏览器中请求打开页面;
步骤S2:浏览器判断该页面是否已注册Service Worker。若已注册,则执行步骤S6,否则执行步骤S3;
步骤S3:浏览器为页面注册Service Worker,具体可通过执行页面里的注册Service Worker的代码,获取Service Worker脚本的存放位置;
步骤S4:浏览器下载Service Worker脚本文件并执行;
步骤S5:安装Service Worker,并通过安装回调事件处理函数向服务端请求并缓存需要的静态资源文件;
步骤S6:Service Worker安装完成后,判断缓存中是否有用户请求的静态资源文件。若有,则执行步骤S8,否则,执行步骤S7;
步骤S7:从服务器请求最新的静态资源文件,然后执行步骤S8;
步骤S8:Service Worker执行对应的静态资源文件并发送更新验证请求;
步骤S9:Service Worker的fetch方法拦截服务端返回的验证结果;
步骤S10:Service Worker根据验证结果判断静态资源文件是否更新。若未更新,则执行步骤S11,否则执行步骤S12;
步骤S11:将Service Worker安装阶段缓存的静态资源文件返回给浏览器;
步骤S12:更改Service Worker的缓存版本号,以触发浏览器执行步骤S5。
根据本发明实施例的技术方案,通过引入缓存管理模块在客户端对缓存进行控制和更新,在需要缓存的资源文件中记录版本标识,并当每次执行资源文件时均发送一个更新验证请求以将版本标识告知服务器,服务器将收到的版本标识与最新资源文件的版本标识进行对比,判断是否有更新,并通知缓存管理模块;若缓存管理模块收到更新信息,则通过更新缓存管理模块来向服务器请求最新的资源文件,实现了在客户端进行缓存文件的管理和更新,无需修改资源文件的文件名,也无需对资源文件设置很短的缓存时间,即可实现缓存的及时更新,从而保证每次浏览器获取的用户请求页面的资源文件均为最新版本。另外,本发明通过对缓存名称进行版本控制,还可以避免因为Service Worker安装文件被缓存而导致资源更新不及时的问题。
图4示出了可以应用本发明实施例的更新客户端缓存的方法或更新客户端缓存的***的示例性***架构400。
如图4所示,***架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的更新客户端缓存的方法一般由服务器405执行,相应地,更新客户端缓存的***一般设置于服务器405中。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图5,其示出了适于用来实现本发明实施例的终端设备或服务器的计算机***500的结构示意图。图5示出的终端设备或服务器仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机***500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有***500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:浏览器根据页面访问请求为未注册缓存管理模块的页面注册并安装缓存管理模块;所述缓存管理模块根据所述页面访问请求从缓存中查找请求的资源文件,并执行所述资源文件以将更新校验请求发送给服务器,所述更新校验请求包括所述资源文件的版本标识;所述服务器根据所述版本标识验证所述资源文件是否已更新,并将验证结果返回给所述缓存管理模块;所述缓存管理模块根据所述验证结果进行判断,若所述资源文件已更新,则通过更新所述缓存管理模块以向所述服务器请求最新的资源文件,并更新所述缓存中的资源文件。
根据本发明实施例的技术方案,通过引入缓存管理模块在客户端对缓存进行控制和更新,在需要缓存的资源文件中记录版本标识,并当每次执行资源文件时均发送一个更新验证请求以将版本标识告知服务器,服务器将收到的版本标识与最新资源文件的版本标识进行对比,判断是否有更新,并通知缓存管理模块;若缓存管理模块收到更新信息,则通过更新缓存管理模块来向服务器请求最新的资源文件,实现了在客户端进行缓存文件的管理和更新,无需修改资源文件的文件名,也无需对资源文件设置很短的缓存时间,即可实现缓存的及时更新,从而保证每次浏览器获取的用户请求页面的资源文件均为最新版本。另外,本发明通过对缓存名称进行版本控制,还可以避免因为Service Worker安装文件被缓存而导致资源更新不及时的问题。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (14)

1.一种更新客户端缓存的方法,其特征在于,包括:
浏览器根据页面访问请求为未注册缓存管理模块的页面注册并安装缓存管理模块;
所述缓存管理模块根据所述页面访问请求从缓存中查找请求的资源文件,并执行所述资源文件以将更新校验请求发送给服务器,所述更新校验请求包括所述资源文件的版本标识;
所述服务器根据所述版本标识验证所述资源文件是否已更新,并将验证结果返回给所述缓存管理模块;
所述缓存管理模块根据所述验证结果进行判断,若所述资源文件已更新,则通过更新所述缓存管理模块以向所述服务器请求最新的资源文件,并更新所述缓存中的资源文件。
2.根据权利要求1所述的方法,其特征在于,还包括:通过设置所述更新校验请求的缓存策略为永不缓存,以使每次执行所述资源文件时都会发送所述更新校验请求。
3.根据权利要求1所述的方法,其特征在于,还包括:若所述缓存管理模块从所述缓存中未查找到所述资源文件,则直接向所述服务器请求获取所述资源文件。
4.根据权利要求1所述的方法,其特征在于,通过更新所述缓存管理模块以向所述服务器请求最新的资源文件包括:
通过更改所述缓存的版本标识来触发所述浏览器对所述缓存管理模块进行更新,以使更新后的缓存管理模块直接向所述服务器请求最新的资源文件。
5.根据权利要求1所述的方法,其特征在于,还包括:通过设置所述缓存管理模块在安装过程中的请求的缓存策略为永不缓存,以使所述安装过程中的请求直接发送给所述服务器。
6.根据权利要求1所述的方法,其特征在于,所述缓存管理模块为服务工作线程Service Worker。
7.一种更新客户端缓存的***,其特征在于,包括:浏览器、缓存管理模块和服务器,其中,
所述浏览器用于根据页面访问请求为未注册缓存管理模块的页面注册并安装缓存管理模块;
所述缓存管理模块用于根据所述页面访问请求从缓存中查找请求的资源文件,并执行所述资源文件以将更新校验请求发送给服务器,所述更新校验请求包括所述资源文件的版本标识;以及在接收到所述服务器返回的验证结果后,根据所述验证结果进行判断,若所述资源文件已更新,则通过更新所述缓存管理模块以向所述服务器请求最新的资源文件,并更新所述缓存中的资源文件;
所述服务器用于根据所述版本标识验证所述资源文件是否已更新,并将验证结果返回给所述缓存管理模块。
8.根据权利要求7所述的***,其特征在于,通过设置所述更新校验请求的缓存策略为永不缓存,以使每次执行所述资源文件时都会发送所述更新校验请求。
9.根据权利要求7所述的***,其特征在于,若所述缓存管理模块从所述缓存中未查找到所述资源文件,则直接向所述服务器请求获取所述资源文件。
10.根据权利要求7所述的***,其特征在于,所述缓存管理模块还用于:
通过更改所述缓存的版本标识来触发所述浏览器对所述缓存管理模块进行更新,以使更新后的缓存管理模块直接向所述服务器请求最新的资源文件。
11.根据权利要求7所述的***,其特征在于,通过设置所述缓存管理模块在安装过程中的请求的缓存策略为永不缓存,以使所述安装过程中的请求直接发送给所述服务器。
12.根据权利要求7所述的***,其特征在于,所述缓存管理模块为服务工作线程Service Worker。
13.一种更新客户端缓存的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
CN201910068527.0A 2019-01-24 2019-01-24 更新客户端缓存的方法和*** Pending CN111475180A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910068527.0A CN111475180A (zh) 2019-01-24 2019-01-24 更新客户端缓存的方法和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910068527.0A CN111475180A (zh) 2019-01-24 2019-01-24 更新客户端缓存的方法和***

Publications (1)

Publication Number Publication Date
CN111475180A true CN111475180A (zh) 2020-07-31

Family

ID=71743549

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910068527.0A Pending CN111475180A (zh) 2019-01-24 2019-01-24 更新客户端缓存的方法和***

Country Status (1)

Country Link
CN (1) CN111475180A (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112637262A (zh) * 2020-11-18 2021-04-09 网宿科技股份有限公司 一种内容推送方法和装置
CN112925539A (zh) * 2021-02-19 2021-06-08 天津车之家数据信息技术有限公司 一种应用更新方法,计算设备及存储介质
CN112926002A (zh) * 2021-03-10 2021-06-08 工银科技有限公司 一种服务请求的处理方法及装置
CN113360464A (zh) * 2021-06-10 2021-09-07 山东云缦智能科技有限公司 基于Nginx实现OSS的缓存同步方法
CN113392078A (zh) * 2021-06-04 2021-09-14 上海浦东发展银行股份有限公司 作业变化状态监控方法、装置、计算机设备和存储介质
CN113407876A (zh) * 2021-06-18 2021-09-17 杭州安恒信息技术股份有限公司 一种网页刷新方法、网页刷新***及相关装置
CN113641932A (zh) * 2021-06-23 2021-11-12 福建野小兽健康科技有限公司 一种基于h5的页面更新方法及***
CN113672268A (zh) * 2021-06-18 2021-11-19 杭州玳数科技有限公司 前端资源的静默更新方法、装置和计算机设备
CN113779458A (zh) * 2021-07-27 2021-12-10 北京房江湖科技有限公司 应用加速加载的方法及装置、电子设备及存储介质
CN114584543A (zh) * 2022-02-16 2022-06-03 百安居信息技术(上海)有限公司 一种基于web的资源快速访问方法、***、介质及设备
CN114936192A (zh) * 2022-07-19 2022-08-23 成都新橙北斗智联有限公司 一种文件动态压缩混淆和双向缓存方法及***
CN115242775A (zh) * 2022-07-04 2022-10-25 ***股份有限公司 资源文件获取方法、装置、设备、介质及产品
CN116244538A (zh) * 2023-01-31 2023-06-09 彭志勇 基于serviceworker的文件缓存方法和加载方法

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112637262A (zh) * 2020-11-18 2021-04-09 网宿科技股份有限公司 一种内容推送方法和装置
CN112925539B (zh) * 2021-02-19 2022-12-06 天津车之家数据信息技术有限公司 一种应用更新方法,计算设备及存储介质
CN112925539A (zh) * 2021-02-19 2021-06-08 天津车之家数据信息技术有限公司 一种应用更新方法,计算设备及存储介质
CN112926002A (zh) * 2021-03-10 2021-06-08 工银科技有限公司 一种服务请求的处理方法及装置
CN113392078A (zh) * 2021-06-04 2021-09-14 上海浦东发展银行股份有限公司 作业变化状态监控方法、装置、计算机设备和存储介质
CN113360464A (zh) * 2021-06-10 2021-09-07 山东云缦智能科技有限公司 基于Nginx实现OSS的缓存同步方法
CN113407876A (zh) * 2021-06-18 2021-09-17 杭州安恒信息技术股份有限公司 一种网页刷新方法、网页刷新***及相关装置
CN113672268A (zh) * 2021-06-18 2021-11-19 杭州玳数科技有限公司 前端资源的静默更新方法、装置和计算机设备
CN113641932A (zh) * 2021-06-23 2021-11-12 福建野小兽健康科技有限公司 一种基于h5的页面更新方法及***
CN113779458A (zh) * 2021-07-27 2021-12-10 北京房江湖科技有限公司 应用加速加载的方法及装置、电子设备及存储介质
CN113779458B (zh) * 2021-07-27 2024-02-27 贝壳找房(北京)科技有限公司 应用加速加载的方法及装置、电子设备及存储介质
CN114584543A (zh) * 2022-02-16 2022-06-03 百安居信息技术(上海)有限公司 一种基于web的资源快速访问方法、***、介质及设备
CN115242775A (zh) * 2022-07-04 2022-10-25 ***股份有限公司 资源文件获取方法、装置、设备、介质及产品
CN114936192A (zh) * 2022-07-19 2022-08-23 成都新橙北斗智联有限公司 一种文件动态压缩混淆和双向缓存方法及***
CN114936192B (zh) * 2022-07-19 2022-10-28 成都新橙北斗智联有限公司 一种文件动态压缩混淆和双向缓存方法及***
CN116244538A (zh) * 2023-01-31 2023-06-09 彭志勇 基于serviceworker的文件缓存方法和加载方法
CN116244538B (zh) * 2023-01-31 2023-11-21 彭志勇 基于serviceworker的文件缓存方法和加载方法

Similar Documents

Publication Publication Date Title
CN111475180A (zh) 更新客户端缓存的方法和***
RU2673403C2 (ru) Способ доступа к веб-узлам, устройство и система веб-узла
US9182975B2 (en) Automatic application updates
US8667480B1 (en) Automatically updating browser extensions, and applications thereof
CN107844324B (zh) 客户端页面跳转处理方法和装置
CN112269959B (zh) 展示内容的控制方法、装置、可读介质和电子设备
CN110365745B (zh) 数据处理***、方法、装置、服务器和计算机可读介质
CN111427701A (zh) 一种工作流引擎***和业务处理方法
CN107644075B (zh) 收集页面信息的方法和装置
CN107809470B (zh) 应用程序自动化部署的方法和装置
CN113364887B (zh) 一种基于ftp的文件下载方法、代理服务器和***
CN112748962B (zh) 应用加载方法、装置、电子设备和计算机可读介质
CN109981546B (zh) 获取应用模块间的远程调用关系的方法和装置
CN111783005B (zh) 显示网页的方法、装置和***、计算机***和介质
CN113360815A (zh) 一种请求重试方法和装置
CN110851194A (zh) 一种用于获取实现新接口的代码的方法和装置
CN114115941A (zh) 资源发送方法、页面渲染方法、装置、电子设备和介质
CN114117280A (zh) 页面静态资源使用方法、装置、终端设备及存储介质
CN112181470B (zh) 一种部署补丁的方法和装置
CN109547552B (zh) Api请求处理方法、装置、存储介质及电子设备
CN113296829A (zh) 处理业务的方法、装置、设备和计算机可读介质
CN113742617A (zh) 一种缓存更新的方法和装置
US20140164556A1 (en) Method and system for live loading of a toolbar
CN112579447A (zh) 一种浏览器测试方法和装置
CN113132447A (zh) 反向代理的方法和***

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination