CN104735112B - 发送资源文件的方法、缓存资源文件的方法和装置 - Google Patents

发送资源文件的方法、缓存资源文件的方法和装置 Download PDF

Info

Publication number
CN104735112B
CN104735112B CN201310717513.XA CN201310717513A CN104735112B CN 104735112 B CN104735112 B CN 104735112B CN 201310717513 A CN201310717513 A CN 201310717513A CN 104735112 B CN104735112 B CN 104735112B
Authority
CN
China
Prior art keywords
resource file
client
server
version information
path
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.)
Active
Application number
CN201310717513.XA
Other languages
English (en)
Other versions
CN104735112A (zh
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.)
Alibaba Singapore Holdings Pte Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201310717513.XA priority Critical patent/CN104735112B/zh
Publication of CN104735112A publication Critical patent/CN104735112A/zh
Application granted granted Critical
Publication of CN104735112B publication Critical patent/CN104735112B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/085Retrieval of network configuration; Tracking network configuration history
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提供了一种发送资源文件的方法、缓存资源文件的方法和装置,包括:服务器从客户端发送的对象访问请求中解析出客户端本地缓存的资源文件列表;从客户端要访问对象的资源文件中,确定在资源文件列表中的版本信息与服务器本地维护的最新版本信息不一致的资源文件或者资源文件列表中不存在的资源文件为客户端需要加载的资源文件;将客户端需要加载的资源文件的内容输出给客户端。本发明避免了客户端采用额外的请求来确认本地缓存的资源是否有更新,从而节约了网络流量,并且要访问对象需要的资源数越多,效果越明显。

Description

发送资源文件的方法、缓存资源文件的方法和装置
【技术领域】
本发明涉及网络技术领域,特别涉及一种发送资源文件的方法、缓存资源文件的方法和装置。
【背景技术】
在JSP(Java Server Pages)页面中有很多资源都是静态的,很少发生改变,如引入的js、css文件,如果每次加载页面都要到服务器去请求这些静态资源会造成一定的浪费,如果浏览器将这些静态资源进行缓存,在下次加载页面时,如果该页面中的静态资源在浏览器中已经缓存,则无需重复请求和下载,直接利用浏览器缓存的静态资源即可,一方面加载速度更快,用户体验更好,另一方面也更节约网络资源。
现有的缓存机制中,浏览器在第一次访问并加载页面时,获取所有的静态资源文件,当再次需要已缓存的静态资源文件时,需要浏览器额外发送请求向服务器确认已缓存的静态资源文件是否有更新,如果有,服务器会再次将更新的静态资源文件返回给浏览器,如果没有更新,则服务器告知浏览器可以使用缓存中的该静态资源文件。
然而,现有技术中的该缓存机制浏览器在资源加载时会额外发送请求确认本地缓存的静态资源是否有更新,且页面需要的静态资源数越多,额外发送的请求也会越多,这就造成了网络流量上的浪费。
【发明内容】
有鉴于此,本发明提供了一种发送资源文件的方法、缓存资源文件的方法和装置,以便于节约网络流量。
具体技术方案如下:
本发明提供了一种发送资源文件的方法,该方法包括:
S1、服务器从客户端发送的对象访问请求中解析出客户端本地缓存的资源文件列表;
S2、从客户端要访问对象的资源文件中,确定在所述资源文件列表中的版本信息与所述服务器本地维护的最新版本信息不一致的资源文件或者所述资源文件列表中不存在的资源文件为所述客户端需要加载的资源文件;
S3、将所述客户端需要加载的资源文件的内容输出给所述客户端。
根据本发明一优选实施方式,所述步骤S2中还包括:从客户端要访问对象的资源文件中,确定在所述资源文件列表中的版本信息与服务器本地维护的最新版本信息一致的资源文件为所述客户端可采用的本地缓存的资源文件;
所述步骤S3中还包括:告知所述客户端可采用的本地缓存的资源文件。
根据本发明一优选实施方式,在所述步骤S1之前还包括:
判断所述对象访问请求中是否携带调试标志位,如果否,则继续执行所述步骤S1;如果是,则将所述客户端要访问对象中的资源文件以可调式形式输出给所述客户端,结束流程。
根据本发明一优选实施方式,所述资源文件列表包括客户端本地缓存的资源文件的路径和版本信息;
在所述服务器的内存池中维护了所述服务器抓取到的资源文件的路径和最新版本信息;
在所述步骤S2中利用所述客户端要访问对象的资源文件的路径,确定在所述资源文件列表中的版本信息与所述服务器本地维护的最新版本信息。
根据本发明一优选实施方式,所述服务器在内存池中维护所述服务器抓取到的资源文件的路径和最新版本信息的过程包括:
A1、周期性地抓取资源文件的路径和资源文件的最新版本信息并存储于map中;
A2、遍历所述map中的每一个资源文件的路径;
A3、判断当前遍历到的资源文件的路径是否在服务器的内存池中找到对应的版本信息,如果是,执行步骤A4;否则执行步骤A5;
A4、判断当前遍历到的资源文件的路径在所述map中对应的最新版本信息是否与在所述服务器的内存池中对应的版本信息一致,如果是,针对map中下一个资源文件转至步骤A3;否则执行步骤A5;
A5、利用当前遍历到的资源文件的路径在所述map中对应的最新版本信息更新当前遍历到的资源文件的路径在服务器的内存池中对应的版本信息,针对map中下一个资源文件转至步骤A3。
根据本发明一优选实施方式,在所述步骤A5中还包括:利用当前遍历到的资源文件的路径和最新的版本信息拼接出当前遍历到的资源文件的URL,根据该URL获取该资源文件的内容并存储于所述服务器的内存池。
根据本发明一优选实施方式,在获取该资源文件的内容时,进一步判断该资源文件是否为js,如果是,则分析该资源文件所依赖的所有资源文件的路径并存储于所述服务器的内存池。
本发明还提供了一种缓存资源文件的方法,该方法包括:
客户端在向服务器发送的对象访问请求中携带客户端本地缓存的资源文件列表,所述资源文件列表中包含客户端本地缓存的资源文件的版本信息;
获取并缓存所述服务器输出的所述客户端需要加载的资源文件的内容,并标识版本信息。
根据本发明一优选实施方式,该方法还包括:
客户端确定所述服务器所告知的要访问对象可采用的客户端本地缓存的资源文件。
根据本发明一优选实施方式,若所述对象访问请求中携带调试标志位,则所述客户端接收所述服务器以可调式形式输出的要访问对象中的资源文件。
本发明还提供了一种发送资源文件的装置,该装置设置于服务器端,该装置包括:
解析单元,用于从客户端发送的对象访问请求中解析出客户端本地缓存的资源文件列表;
识别单元,用于从客户端要访问对象的资源文件中,确定在所述资源文件列表中的版本信息与所述服务器本地维护的最新版本信息不一致的资源文件或者所述资源文件列表中不存在的资源文件为所述客户端需要加载的资源文件;
输出单元,用于将所述客户端需要加载的资源文件的内容输出给所述客户端。
根据本发明一优选实施方式,所述识别单元,还用于从客户端要访问对象的资源文件中,确定在所述资源文件列表中的版本信息与服务器本地维护的最新版本信息一致的资源文件为所述客户端可采用的本地缓存的资源文件;
所述输出单元,还用于告知所述客户端可采用的本地缓存的资源文件。
根据本发明一优选实施方式,该装置还包括:判断单元,用于判断所述对象访问请求中是否携带调试标志位,如果否,则触发所述解析单元执行所述解析的操作;如果是,则触发所述输出单元;
所述输出单元,还用于受到所述判断单元的触发后,将所述客户端要访问对象中的资源文件以可调式形式输出给所述客户端。
根据本发明一优选实施方式,所述资源文件列表包括客户端本地缓存的资源文件的路径和版本信息;
该装置还包括:内存池维护单元,用于在所述服务器的内存池中维护所述服务器抓取到的资源文件的路径和最新版本信息;
所述识别单元利用所述客户端要访问对象的资源文件的路径,确定在所述资源文件列表中的版本信息与所述服务器本地维护的最新版本信息。
根据本发明一优选实施方式,所述内存池维护单元具体包括:
抓取子单元,用于周期性地抓取资源文件的路径和资源文件的最新版本信息并存储于map中;
遍历子单元,用于遍历所述map中的每一个资源文件的路径;
第一判断子单元,用于判断当前遍历到的资源文件的路径是否在服务器的内存池中找到对应的版本信息,如果是,触发第二判断子单元,否则触发实例化子单元;
第二判断子单元,用于受到触发后,判断当前遍历到的资源文件的路径在所述map中对应的最新版本信息是否与在所述服务器的内存池中对应的版本信息一致,如果是,触发所述遍历子单元遍历下一个资源文件,否则触发实例化子单元;
实例化子单元,用于受到触发后,利用当前遍历到的资源文件的路径在所述map中对应的最新版本信息更新当前遍历到的资源文件的路径在服务器的内存池中对应的版本信息,触发所述遍历子单元遍历下一个资源文件。
根据本发明一优选实施方式,所述实例化子单元,还用于利用当前遍历到的资源文件的路径和最新的版本信息拼接出当前遍历到的资源文件的URL,根据该URL获取该资源文件的内容并存储于所述服务器的内存池。
根据本发明一优选实施方式,所述实例化子单元在获取该资源文件的内容时,还用于判断该资源文件是否为js,如果是,则分析该资源文件所依赖的所有资源文件的路径并存储于所述服务器的内存池。
本发明还提供了一种缓存资源文件的装置,该装置设置于客户端,该装置包括:
列表发送单元,用于在向服务器发送的对象访问请求中携带资源文件列表,所述资源文件列表中包含客户端本地缓存的资源文件的版本信息;
获取单元,用于获取所述服务器采用内联形式输出的所述客户端需要加载的资源文件的内容;
资源缓存单元,用于缓存所述服务器输出的所述客户端需要加载的资源文件的内容,并标识版本信息。
根据本发明一优选实施方式,所述获取单元,还用于确定所述服务器所告知的要访问对象可采用的客户端本地缓存的资源文件。
根据本发明一优选实施方式,若所述对象访问请求中携带调试标志位,则所述获取单元还用于接收所述服务器以可调式形式输出的要访问对象中的资源文件。
由以上技术方案可以看出,客户端在对象访问请求中携带客户端本地缓存的资源文件列表,由服务器对该资源文件列表中的版本信息和服务器本地维护的各资源文件的最新版本信息进行比对来确定客户端要访问对象的资源文件是否发生更新,从而确定客户端需要加载的资源文件,避免了客户端采用额外的请求来确认本地缓存的资源文件是否有更新,从而节约了网络流量,并且对象需要的资源数越多,效果越明显。
【附图说明】
图1为本发明实施例一提供的发送静态资源的方法流程图;
图2为本发明实施例一提供的服务器端对静态资源文件的最新版本信息的维护流程图;
图3为本发明实施例二提供的发送静态资源的装置结构图;
图4为本发明实施例二提供的内存池维护单元的结构图;
图5为本发明实施例三提供的缓存静态资源的装置结构图。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明的核心思想在于,不再由客户端额外请求需要加载的资源文件是否更新,而是客户端在请求访问对象时将客户端本地缓存的资源文件列表发送给服务器,服务器根据服务器本地维护的资源文件的最新版本信息确定客户端需要加载的资源文件。
本发明下述各实施例中均以浏览器访问页面时,浏览器端与服务器端对静态资源文件的缓存和发送方式为例进行描述,但需要说明的是,本发明并不限于浏览器这种客户端,还可以是其他类型的客户端,也不限于是页面访问,也可以是其他类型对象的访问,也不限于是静态资源文件,也可以是其他类型的资源文件。下面首先通过实施例一对本发明提供的方法进行详细描述。
实施例一、
图1为本发明实施例一提供的发送静态资源的方法流程图,本发明所涉及的静态资源文件可以包括但不限于js文件、css文件、图片等。如图1所示,该方法主要包括以下步骤:
步骤101:接收浏览器发送的页面访问请求。
通常浏览器要访问页面时,会向服务器发送页面访问请求。
步骤102:判断页面访问请求中是否携带debug(调试)标志位,如果是,执行步骤103;否则,执行步骤104。
为了实现对页面的调试功能,可以通过在页面访问请求的cookie中携带debug标志位,告知服务器本次页面访问是对线上出现的问题进行排查和调试。如果不考虑该调试功能,也可以不执行步骤102,在步骤101之后直接执行步骤104。
步骤103:将浏览器要访问页面中的静态资源文件以外联形式输出给浏览器,结束流程。
浏览器要访问页面中的静态资源文件可以通过velocity模板来确定,velocity模板是一个基于java的模板引擎,它允许任何人仅仅使用简单的模板语言来引用java代码定义的对象。
所谓采用外联形式输出静态资源文件是指在网页的<script>代码中通过插入src属性指定文件路径,假设要外联形式输出静态资源文件a.js,则<script src=“a.js”></script>,采用外联形式使得该代码能够与网页内容分离,方便进行调试,是一种可调式形式的页面内容输出方式。采用内联形式输出静态资源文件是指在网页中直接插入<script>代码,内联形式实现比较方便,但通常该代码只能在本网页中使用。
步骤104:从页面访问请求中解析出浏览器本地缓存的静态资源文件列表,并确定用户要访问页面的静态资源文件在该静态资源文件列表中的版本信息。
当浏览器在本地缓存了静态资源文件时,会在cookie中标注所缓存的静态资源文件的路径和版本信息。本步骤中,页面访问请求的cookie中携带有浏览器本地缓存的静态资源文件列表,包括静态资源文件的路径和静态资源文件的版本信息。
步骤105:从服务器本地维护的静态资源文件的最新版本信息中确定浏览器要访问页面中静态资源文件的最新版本信息。
在本发明实施例中,服务器本地维护了静态资源文件的最新版本信息,该维护方式是采用周期性抓取静态资源文件的版本信息的方式。在服务器的内存池中,保存了静态资源文件的路径信息以及对应的静态资源文件的最新版本信息。根据用户要访问页面中静态资源文件的路径信息到内存池中进行查询,就可以查询到对应的版本信息。对于服务器端对静态资源文件的最新版本信息的维护过程可以如图2中所示,服务器周期性地执行以下步骤:
步骤201:抓取静态资源文件的路径和静态资源文件的版本信息,存储于map中。
在静态资源服务器中存在静态资源的版本数据(version data),执行本发明实施例所述流程的服务器可以周期性地从静态资源服务器中抓取静态资源文件的路径和静态资源文件的版本信息,并以map的形式存储于java端。图2中所示流程周期性执行,即周期性地抓取静态资源文件的路径和版本信息,是为了保证服务器内存池中的静态资源文件的版本信息为最新版本信息。
步骤202:遍历map中的每一个静态资源文件的路径。
步骤203:判断当前遍历到的静态资源文件的路径是否在服务器的内存池中找到对应的版本信息,如果是,执行步骤204;否则执行步骤205。
步骤204:判断当前遍历到的静态资源文件的路径在map中对应的版本信息是否与在服务器的内存池中对应的版本信息一致,如果是,针对map中下一个静态资源文件转至步骤203,直至遍历完map中所有静态资源文件的路径;否则执行步骤205。
如果一致,则说明服务器的内存池中维护的该静态资源文件的版本信息为最新版本信息,无需进行更新。
步骤205:利用在map中对应的版本信息更新在服务器的内存池中对应的版本信息,针对map中下一个静态资源文件转至步骤203,直至遍历完map中所有静态资源文件的路径。
在服务器的内存池中,静态资源文件的路径和版本信息可以存储为一个表项(item),为了方便后续服务器向浏览器发送静态资源文件的内容,在item中还可以包括静态资源文件的内容。当静态资源文件的版本信息发生更新时,也就意味着静态资源文件的内容发生了更新,因此,在本步骤中,可以采用对当前遍历到的静态资源文件的路径所在的item进行实例化的方式,即由静态资源文件的路径和最新的版本信息可以拼接出静态资源文件的URL,根据该拼接出的URL就能够获取到该静态资源文件的内容。
在获取到该静态资源文件的内容时,可以进一步判断该静态资源文件是否为js,如果是,可以进一步对该静态资源文件进行依赖分析,即分析该静态资源文件所依赖的所有静态资源文件的路径,并存放在该item中,目的是为了方便浏览器进行静态资源文件的加载。当然,如果具体的使用场景中并没有采用依赖机制,则也可以不进行依赖分析。
继续参见图1。
步骤106:将步骤104确定的版本信息和步骤105确定的最新版本信息进行比较,确定版本信息不一致的静态资源文件或者浏览器本地未存储的静态资源文件为浏览器需要加载的静态资源文件,版本信息一致的静态资源文件为浏览器可采用的本地缓存的静态资源文件。
如果浏览器本地缓存的静态资源文件的版本信息与服务器本地维护的静态资源文件的最新版本信息一致,则说明浏览器本地缓存的静态资源文件是最新版本,则浏览器无需重复加载,采用本地存储的静态资源文件即可。如果浏览器要访问页面中的静态资源文件中有浏览器本地未存储的,则该静态资源文件需要浏览器进行加载;或者如果浏览器本地缓存的静态资源文件与服务器本地维护的静态资源文件的最新版本信息不一致,那么说明浏览器本地缓存的静态资源文件已过期,不是最新版本,则浏览器需要加载该静态资源文件。
步骤107:服务器将浏览器需要加载的静态资源文件的内容采用内联形式输出给浏览器,并告知浏览器可采用的本地缓存的静态资源文件。
例如,可以采用
<script data-ls=”save”id=”J_[path].[version]”>alert(1);</script>
其中,data-ls用来告诉浏览器js需要加载并缓存静态资源文件的内容,该静态文件内容就是标签内的字符串作为value(值),path(路径)和version(版本)作为key(键)存放于LocalStorage(本地存储)中。浏览器接收到该内联形式输出的静态资源文件的内容后,在cookie中标注该静态资源文件的路径和版本信息,以便下次页面访问请求时加入浏览器本地缓存的静态资源文件列表。
对于浏览器可以采用本地存储的静态资源文件,服务器可以在页面源码中输出一段调用缓存文件的js代码,让浏览器调用缓存中的该静态资源文件。例如<script>ls.load(J_[path].[version])</script>。
在此举一个实例:
假设用户通过浏览器第一次访问a.html,a.html中的静态资源文件为a.js和b.js,版本号均为1。由于浏览器是第一次访问,在浏览器本地尚未缓存任何静态资源文件,因此发送资源访问请求时,浏览器本地缓存的静态资源文件列表为空。服务器确定浏览器本地未存储a.js和b.js,才采用内联形式输出a.js和b.js给浏览器,浏览器在本地缓存该a.js和b.js,并在cookie中标注a.js和b.js的路径和版本号。
用户通过浏览器再访问aa.html,aa.html中的静态资源文件为b.js和c.js,版本号也均为1。发送资源访问请求时,携带的浏览器本地缓存的静态资源文件列表中包含a.js和b.js的路径和版本号。服务器经过与内存池中的版本信息进行对比,确定浏览器本地缓存的b.js的版本号为最新,但未缓存c.js,因此将c.js采用内联形式输出给浏览器,例如<script id=”J_c.1”data-ls=”save”>alert(1);</script>,并告知浏览器可采用本地存储的b.js,即<script>ls.load(J_b.1)</script>。浏览器在本地缓存c.js,并在cookie中标注c.js的路径和版本号。
可见,浏览器端无需额外发送请求来确定本地缓存的静态资源文件是否为更新,就能够直接从服务器获取到最新的静态资源文件,而对于未更新的静态资源文件则不会重复加载。
以上是对本发明所提供的方法进行的详细描述,下面通过实施例二和实施例三分别对本发明所提供的发送静态资源的装置和缓存静态资源的装置进行详细描述。
实施例二、
图3为本发明实施例二提供的发送静态资源的装置结构图,该装置设置于服务器端,如图3中所示,该装置主要包括:解析单元10、识别单元20和输出单元30,还可以进一步包括判断单元40和内存池维护单元50。
通常浏览器要访问页面时,会向服务器发送页面访问请求,解析单元10从浏览器发送的页面访问请求中解析出浏览器本地缓存的静态资源文件列表。当浏览器在本地缓存了静态资源文件时,会在cookie中标注所缓存的静态资源文件的路径和版本信息,因此页面访问请求的cookie中携带有浏览器本地缓存的静态资源文件列表,包括静态资源文件的路径和静态资源文件的版本信息。
识别单元20从浏览器要访问页面的静态资源文件中,确定在静态资源文件列表中的版本信息与服务器本地维护的最新版本信息不一致的静态资源文件或者静态资源文件列表中不存在的静态资源文件为浏览器需要加载的静态资源文件。其中浏览器要访问页面中的静态资源文件可以通过velocity模板来确定。输出单元30将浏览器需要加载的静态资源文件的内容采用内联形式输出给浏览器。
另外,识别单元20从浏览器要访问页面的静态资源文件中,确定在静态资源文件列表中的版本信息与服务器本地维护的最新版本信息一致的静态资源文件为浏览器可采用的本地缓存的静态资源文件。输出单元30告知浏览器可采用的本地缓存的静态资源文件。
如果浏览器本地缓存的静态资源文件的版本信息与服务器本地维护的静态资源文件的最新版本信息一致,则说明浏览器本地缓存的静态资源文件是最新版本,则浏览器无需重复加载,采用本地存储的静态资源文件即可。如果浏览器要访问页面中的静态资源文件中有浏览器本地未存储的,则该静态资源文件需要浏览器进行加载;或者如果浏览器本地缓存的静态资源文件与服务器本地维护的静态资源文件的最新版本信息不一致,那么说明浏览器本地缓存的静态资源文件已过期,不是最新版本,则浏览器需要加载该静态资源文件。
除此之外,该装置还包括:判断单元40。判断单元40判断页面访问请求中是否携带调试标志位,如果否,则触发解析单元10执行上述解析的操作;如果是,则触发输出单元30。输出单元30受到判断单元40的触发后,将浏览器要访问页面中的静态资源文件以外联形式输出给浏览器。
所谓采用外联形式输出静态资源文件是指在网页的<script>代码中通过插入src属性指定文件路径,假设要外联形式输出静态资源文件a.js,则<script src=“a.js”></script>,采用外联形式使得该代码能够与网页内容分离,方便进行调试。采用内联形式输出静态资源文件是指在网页中直接插入<script>代码,内联形式实现比较方便,但该代码只能在本网页中使用。
具体地,上述的静态资源文件列表包括浏览器本地缓存的静态资源文件的路径和版本信息。内存池维护单元50在服务器的内存池中维护服务器抓取到的静态资源文件的路径和最新版本信息。相应地,识别单元20利用浏览器要访问页面的静态资源文件的路径,确定在静态资源文件列表中的版本信息与服务器本地维护的最新版本信息。
具体地,内存池维护单元50的结构可以如图4所示,主要包括:抓取子单元51、遍历子单元52、第一判断子单元53、第二判断子单元54和实例化子单元55。
抓取子单元51周期性地抓取静态资源文件的路径和静态资源文件的最新版本信息并存储于map中。在静态资源服务器中存在静态资源的版本数据(version data),抓取子单元51可以周期性地从静态资源服务器中抓取静态资源文件的路径和静态资源文件的最新版本信息,并以map的形式存储于java端。
遍历子单元52遍历map中的每一个静态资源文件的路径。第一判断子单元53判断当前遍历到的静态资源文件的路径是否在服务器的内存池中找到对应的版本信息,如果是,触发第二判断子单元54,否则触发实例化子单元55。
第二判断子单元54受到触发后,判断当前遍历到的静态资源文件的路径在map中对应的最新版本信息是否与在服务器的内存池中对应的版本信息一致,如果是,触发遍历子单元52遍历下一个静态资源文件,否则触发实例化子单元55。
实例化子单元55受到触发后,利用当前遍历到的静态资源文件的路径在map中对应的最新版本信息更新当前遍历到的静态资源文件的路径在服务器的内存池中对应的版本信息,触发遍历子单元52遍历下一个静态资源文件。
在服务器的内存池中,静态资源文件的路径和版本信息可以存储为一个item,为了方便后续服务器向浏览器发送静态资源文件的内容,在item中还可以包括静态资源文件的内容。当静态资源文件的版本信息发生更新时,也就意味着静态资源文件的内容发生了更新,在此可以采用对当前遍历到的静态资源文件的路径所在的item进行实例化的方式,相应地,实例化子单元55还可以利用当前遍历到的静态资源文件的路径和最新的版本信息拼接出当前遍历到的静态资源文件的URL,根据该URL获取该静态资源文件的内容并存储于服务器的内存池,具体存可以存储于item中。
更进一步地,实例化子单元55在获取该静态资源文件的内容时,还用于判断该静态资源文件是否为js,如果是,则分析该静态资源文件所依赖的所有静态资源文件的路径并存储于服务器的内存池。如果具体的使用场景中并没有采用依赖机制,则也可以不进行依赖分析。
实施例三、
图5为本发明实施例三提供的缓存静态资源的装置结构图,该装置设置于浏览器端,如图5中所示,该装置包括:列表发送单元60、获取单元70和资源缓存单元80。
浏览器要访问页面时,需要向实施例二中所述的服务器发送页面访问请求,列表发送单元60负责在向服务器发送的页面访问请求中携带静态资源文件列表,静态资源文件列表中包含浏览器本地缓存的静态资源文件的版本信息。具体地,静态资源文件列表中包含浏览器本地缓存的静态资源文件的路径和版本信息。
在服务器端,服务器从浏览器发送的页面访问请求中解析出浏览器本地缓存的静态资源文件列表;从浏览器要访问页面的静态资源文件中,确定在静态资源文件列表中的版本信息与服务器本地维护的最新版本信息不一致的静态资源文件或者静态资源文件列表中不存在的静态资源文件为该浏览器需要加载的静态资源文件;从浏览器要访问页面的静态资源文件中,确定在静态资源文件列表中的版本信息与服务器本地维护的最新版本信息一致的静态资源文件为浏览器可采用本地缓存的静态资源文件;然后将浏览器需要加载的静态资源文件的内容采用内联形式输出给浏览器,并告知浏览器可采用本地缓存的静态资源文件。
此时该装置中的获取单元70获取服务器采用内联形式输出的浏览器需要加载的静态资源文件的内容。资源缓存单元80缓存服务器采用内联形式输出的浏览器需要加载的静态资源文件的内容,并标识版本信息,以便下次发送页面访问请求时,将该静态资源文件的版本信息加入静态资源文件列表。并且获取单元70确定服务器所告知的要访问页面可采用的浏览器本地缓存的静态资源文件。
这样浏览器在加载要访问的页面时,对于本地没有缓存的静态资源文件或者版本已经发生更新的静态资源文件,服务器已经采用内联形式输出给了浏览器,浏览器可以直接加载,对于本地已经缓存的版本未更新的静态资源文件,浏览器可以根据服务器的告知直接采用本地缓存的静态资源文件,既保证加载了最新的静态资源文件,也不浪费内存,也没有浪费额外的请求。
以上是不考虑页面访问请求中的调试功能,或者是页面访问请求中不携带调试标志位时的情况。若页面访问请求中携带调试标志位,则浏览器会将要访问页面中静态资源文件以外联形式输出给浏览器,以便浏览器进行调试,因此,本装置中的获取单元70还用于接收服务器以外联形式输出的要访问页面中的静态资源文件。
由以上描述可以看出,本发明实施例中提供的方法和装置可以具备以下优点:
1)浏览器在页面访问请求中携带浏览器本地缓存的静态资源文件列表,由服务器对该静态资源文件列表中的版本信息和服务器本地维护的各静态资源的最新版本信息进行比对来确定浏览器要访问页面的静态资源文件是否发生更新,从而确定浏览器需要加载的静态资源文件,避免了浏览器采用额外的请求来确认本地缓存的静态资源是否有更新,从而节约了网络流量,并且页面需要的静态资源数越多,效果越明显。
2)服务器通过周期性抓取静态资源文件的最新版本信息并进行维护,能够保证浏览器在加载页面时缓存的静态资源文件能够得到及时的更新。
3)浏览器在加载页面时,只需要加载并替换本地没有缓存的或者版本发生更新的静态资源文件,不浪费内存。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (20)

1.一种发送资源文件的方法,其特征在于,该方法包括:
S1、服务器从客户端发送的对象访问请求中解析出客户端本地缓存的资源文件列表;
S2、从客户端要访问对象的资源文件中,确定在所述资源文件列表中的版本信息与所述服务器本地维护的最新版本信息不一致的资源文件或者所述资源文件列表中不存在的资源文件为所述客户端需要加载的资源文件;
S3、将所述客户端需要加载的资源文件的内容输出给所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述步骤S2中还包括:从客户端要访问对象的资源文件中,确定在所述资源文件列表中的版本信息与服务器本地维护的最新版本信息一致的资源文件为所述客户端可采用的本地缓存的资源文件;
所述步骤S3中还包括:告知所述客户端可采用的本地缓存的资源文件。
3.根据权利要求1或2所述的方法,其特征在于,在所述步骤S1之前还包括:
判断所述对象访问请求中是否携带调试标志位,如果否,则继续执行所述步骤S1;如果是,则将所述客户端要访问对象中的资源文件以可调式形式输出给所述客户端,结束流程。
4.根据权利要求1或2所述的方法,其特征在于,所述资源文件列表包括客户端本地缓存的资源文件的路径和版本信息;
在所述服务器的内存池中维护了所述服务器抓取到的资源文件的路径和最新版本信息;
在所述步骤S2中利用所述客户端要访问对象的资源文件的路径,确定在所述资源文件列表中的版本信息与所述服务器本地维护的最新版本信息。
5.根据权利要求4所述的方法,其特征在于,所述服务器在内存池中维护所述服务器抓取到的资源文件的路径和最新版本信息的过程包括:
A1、周期性地抓取资源文件的路径和资源文件的最新版本信息并存储于map中;
A2、遍历所述map中的每一个资源文件的路径;
A3、判断当前遍历到的资源文件的路径是否在服务器的内存池中找到对应的版本信息,如果是,执行步骤A4;否则执行步骤A5;
A4、判断当前遍历到的资源文件的路径在所述map中对应的最新版本信息是否与在所述服务器的内存池中对应的版本信息一致,如果是,针对map中下一个资源文件转至步骤A3;否则执行步骤A5;
A5、利用当前遍历到的资源文件的路径在所述map中对应的最新版本信息更新当前遍历到的资源文件的路径在服务器的内存池中对应的版本信息,针对map中下一个资源文件转至步骤A3。
6.根据权利要求5所述的方法,其特征在于,在所述步骤A5中还包括:利用当前遍历到的资源文件的路径和最新的版本信息拼接出当前遍历到的资源文件的URL,根据该URL获取该资源文件的内容并存储于所述服务器的内存池。
7.根据权利要求5所述的方法,其特征在于,在获取该资源文件的内容时,进一步判断该资源文件是否为js,如果是,则分析该资源文件所依赖的所有资源文件的路径并存储于所述服务器的内存池。
8.一种缓存资源文件的方法,其特征在于,该方法包括:
客户端在向服务器发送的对象访问请求中携带客户端本地缓存的资源文件列表,所述资源文件列表中包含客户端本地缓存的资源文件的版本信息,以便所述服务器从客户端要访问对象的资源文件中,确定在所述资源文件列表中的版本信息与所述服务器本地维护的最新版本信息不一致的资源文件或者所述资源文件列表中不存在的资源文件为所述客户端需要加载的资源文件;
获取并缓存所述服务器输出的所述客户端需要加载的资源文件的内容,并标识版本信息。
9.根据权利要求8所述的方法,其特征在于,该方法还包括:
客户端确定所述服务器所告知的要访问对象可采用的客户端本地缓存的资源文件。
10.根据权利要求8或9所述的方法,其特征在于,若所述对象访问请求中携带调试标志位,则所述客户端接收所述服务器以可调式形式输出的要访问对象中的资源文件。
11.一种发送资源文件的装置,该装置设置于服务器端,其特征在于,该装置包括:
解析单元,用于从客户端发送的对象访问请求中解析出客户端本地缓存的资源文件列表;
识别单元,用于从客户端要访问对象的资源文件中,确定在所述资源文件列表中的版本信息与所述服务器本地维护的最新版本信息不一致的资源文件或者所述资源文件列表中不存在的资源文件为所述客户端需要加载的资源文件;
输出单元,用于将所述客户端需要加载的资源文件的内容输出给所述客户端。
12.根据权利要求11所述的装置,其特征在于,所述识别单元,还用于从客户端要访问对象的资源文件中,确定在所述资源文件列表中的版本信息与服务器本地维护的最新版本信息一致的资源文件为所述客户端可采用的本地缓存的资源文件;
所述输出单元,还用于告知所述客户端可采用的本地缓存的资源文件。
13.根据权利要求11或12所述的装置,其特征在于,该装置还包括:判断单元,用于判断所述对象访问请求中是否携带调试标志位,如果否,则触发所述解析单元执行所述解析的操作;如果是,则触发所述输出单元;
所述输出单元,还用于受到所述判断单元的触发后,将所述客户端要访问对象中的资源文件以可调式形式输出给所述客户端。
14.根据权利要求11或12所述的装置,其特征在于,所述资源文件列表包括客户端本地缓存的资源文件的路径和版本信息;
该装置还包括:内存池维护单元,用于在所述服务器的内存池中维护所述服务器抓取到的资源文件的路径和最新版本信息;
所述识别单元利用所述客户端要访问对象的资源文件的路径,确定在所述资源文件列表中的版本信息与所述服务器本地维护的最新版本信息。
15.根据权利要求14所述的装置,其特征在于,所述内存池维护单元具体包括:
抓取子单元,用于周期性地抓取资源文件的路径和资源文件的最新版本信息并存储于map中;
遍历子单元,用于遍历所述map中的每一个资源文件的路径;
第一判断子单元,用于判断当前遍历到的资源文件的路径是否在服务器的内存池中找到对应的版本信息,如果是,触发第二判断子单元,否则触发实例化子单元;
第二判断子单元,用于受到触发后,判断当前遍历到的资源文件的路径在所述map中对应的最新版本信息是否与在所述服务器的内存池中对应的版本信息一致,如果是,触发所述遍历子单元遍历下一个资源文件,否则触发实例化子单元;
实例化子单元,用于受到触发后,利用当前遍历到的资源文件的路径在所述map中对应的最新版本信息更新当前遍历到的资源文件的路径在服务器的内存池中对应的版本信息,触发所述遍历子单元遍历下一个资源文件。
16.根据权利要求15所述的装置,其特征在于,所述实例化子单元,还用于利用当前遍历到的资源文件的路径和最新的版本信息拼接出当前遍历到的资源文件的URL,根据该URL获取该资源文件的内容并存储于所述服务器的内存池。
17.根据权利要求16所述的装置,其特征在于,所述实例化子单元在获取该资源文件的内容时,还用于判断该资源文件是否为js,如果是,则分析该资源文件所依赖的所有资源文件的路径并存储于所述服务器的内存池。
18.一种缓存资源文件的装置,该装置设置于客户端,其特征在于,该装置包括:
列表发送单元,用于在向服务器发送的对象访问请求中携带资源文件列表,所述资源文件列表中包含客户端本地缓存的资源文件的版本信息,以便所述服务器从客户端要访问对象的资源文件中,确定在所述资源文件列表中的版本信息与所述服务器本地维护的最新版本信息不一致的资源文件或者所述资源文件列表中不存在的资源文件为所述客户端需要加载的资源文件;
获取单元,用于获取所述服务器输出的所述客户端需要加载的资源文件的内容;
资源缓存单元,用于缓存所述服务器输出的所述客户端需要加载的资源文件的内容,并标识版本信息。
19.根据权利要求18所述的装置,其特征在于,所述获取单元,还用于确定所述服务器所告知的要访问对象可采用的客户端本地缓存的资源文件。
20.根据权利要求18或19所述的装置,其特征在于,若所述对象访问请求中携带调试标志位,则所述获取单元还用于接收所述服务器以可调式形式输出的要访问对象中的资源文件。
CN201310717513.XA 2013-12-23 2013-12-23 发送资源文件的方法、缓存资源文件的方法和装置 Active CN104735112B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310717513.XA CN104735112B (zh) 2013-12-23 2013-12-23 发送资源文件的方法、缓存资源文件的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310717513.XA CN104735112B (zh) 2013-12-23 2013-12-23 发送资源文件的方法、缓存资源文件的方法和装置

Publications (2)

Publication Number Publication Date
CN104735112A CN104735112A (zh) 2015-06-24
CN104735112B true CN104735112B (zh) 2018-08-03

Family

ID=53458545

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310717513.XA Active CN104735112B (zh) 2013-12-23 2013-12-23 发送资源文件的方法、缓存资源文件的方法和装置

Country Status (1)

Country Link
CN (1) CN104735112B (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105068806B (zh) * 2015-08-07 2018-07-17 北京思特奇信息技术股份有限公司 一种浏览器缓存控制方法及系统
CN105653448B (zh) * 2015-12-25 2019-04-30 深圳中兴网信科技有限公司 应用调试方法、应用调试装置和终端
CN107103001B (zh) * 2016-02-22 2021-03-02 创新先进技术有限公司 基于浏览器获取目标前端资源文件的方法、装置和系统
CN107291759B (zh) * 2016-04-01 2020-08-11 腾讯科技(深圳)有限公司 浏览器页面资源的处理方法和装置
CN107346309A (zh) * 2016-05-04 2017-11-14 北京京东尚科信息技术有限公司 一种网络应用中静态资源的处理方法及装置
CN107346305B (zh) * 2016-05-04 2021-01-26 北京京东尚科信息技术有限公司 基于Velocity块指令的局部缓存方法和装置
CN106021522A (zh) * 2016-05-25 2016-10-12 武汉斗鱼网络科技有限公司 一种客户端符号系统更新方法及装置
CN107704465B (zh) * 2016-08-08 2021-11-16 腾讯科技(深圳)有限公司 静态资源更新方法以及静态资源管理系统
CN106446097B (zh) * 2016-09-13 2020-02-07 苏州浪潮智能科技有限公司 一种文件读取方法及系统
CN106502688B (zh) * 2016-11-01 2019-07-26 网易(杭州)网络有限公司 资源发布的处理方法及装置
CN107025122B (zh) * 2017-04-06 2020-12-22 广州市品高软件股份有限公司 一种轻应用接入方法及系统
CN107087029A (zh) * 2017-04-25 2017-08-22 广州市诚毅科技软件开发有限公司 一种关于web前端资源文件版本统一管理与发布的方法
CN108932332A (zh) * 2018-07-05 2018-12-04 麒麟合盛网络技术股份有限公司 静态资源的加载方法及装置
CN110858147B (zh) * 2018-08-24 2023-12-29 深圳市优必选科技有限公司 Mcu信息获取方法及终端设备
CN109543127B (zh) * 2018-11-26 2020-12-11 杭州安恒信息技术股份有限公司 一种页面刷新方法、装置、设备及可读存储介质
CN109729165A (zh) * 2018-12-28 2019-05-07 国云科技股份有限公司 一种采用本地缓存策略实现文件下载的系统及方法
CN109634925B (zh) * 2019-02-20 2024-06-14 平安科技(深圳)有限公司 资源文件下载方法、装置、计算机设备和存储介质
CN110298002A (zh) * 2019-05-31 2019-10-01 福建新大陆软件工程有限公司 客户端web资源管理方法及设备
CN111431767B (zh) * 2020-03-26 2023-03-07 深圳壹账通智能科技有限公司 多浏览器资源同步方法、装置、计算机设备和存储介质
CN112286545B (zh) * 2020-09-21 2023-05-05 长沙市到家悠享网络科技有限公司 数据更新方法、装置、设备和存储介质
CN112256316A (zh) * 2020-11-13 2021-01-22 北京玩蟹科技有限公司 客户端应用更新方法及客户端
CN112667937A (zh) * 2020-12-29 2021-04-16 中国平安人寿保险股份有限公司 处理缓存数据方法及其相关产品
CN113377722A (zh) * 2021-07-02 2021-09-10 厦门雅基软件有限公司 一种资源数据读取方法、装置和存储介质
CN114637528B (zh) * 2022-05-07 2022-08-30 太平金融科技服务(上海)有限公司深圳分公司 资源更新方法、装置、计算机设备、存储介质和程序产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101795392A (zh) * 2009-12-25 2010-08-04 深圳市同洲电子股份有限公司 下载应用数据的方法、数字电视接收终端及系统
CN102109989A (zh) * 2009-12-29 2011-06-29 阿里巴巴集团控股有限公司 一种控制浏览器缓存的方法、装置和系统
CN102480397A (zh) * 2010-11-26 2012-05-30 金蝶软件(中国)有限公司 访问互联网页面的方法及设备
CN103139279A (zh) * 2011-12-05 2013-06-05 阿里巴巴集团控股有限公司 文件访问方法和系统
CN103257973A (zh) * 2012-02-20 2013-08-21 腾讯科技(深圳)有限公司 浏览器缓存更新方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567339A (zh) * 2010-12-09 2012-07-11 腾讯科技(深圳)有限公司 一种获取起始页的方法、装置和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101795392A (zh) * 2009-12-25 2010-08-04 深圳市同洲电子股份有限公司 下载应用数据的方法、数字电视接收终端及系统
CN102109989A (zh) * 2009-12-29 2011-06-29 阿里巴巴集团控股有限公司 一种控制浏览器缓存的方法、装置和系统
CN102480397A (zh) * 2010-11-26 2012-05-30 金蝶软件(中国)有限公司 访问互联网页面的方法及设备
CN103139279A (zh) * 2011-12-05 2013-06-05 阿里巴巴集团控股有限公司 文件访问方法和系统
CN103257973A (zh) * 2012-02-20 2013-08-21 腾讯科技(深圳)有限公司 浏览器缓存更新方法和系统

Also Published As

Publication number Publication date
CN104735112A (zh) 2015-06-24

Similar Documents

Publication Publication Date Title
CN104735112B (zh) 发送资源文件的方法、缓存资源文件的方法和装置
RU2453911C2 (ru) Автономное выполнение веб-приложений
US8745341B2 (en) Web server cache pre-fetching
WO2017071189A1 (zh) 网页的访问方法、装置、设备及非易失性计算机存储介质
US9154522B2 (en) Network security identification method, security detection server, and client and system therefor
CN102375882A (zh) 一种快速访问网页的方法、装置及一种浏览器
US8380812B2 (en) Source identification for multipart content validation
US10705949B2 (en) Evaluation of library test suites using mutation testing
CN103716319B (zh) 一种Web访问优化的装置和方法
WO2012034537A1 (zh) 一种在线应用系统及其实现方法
KR102009020B1 (ko) 검색 엔진으로 웹 사이트 인증 데이터를 제공하기 위한 방법 및 장치
CN106845270B (zh) 一种无痕浏览方法及装置
CN105279156B (zh) 网络信息通信方法及网络信息浏览装置
CN110532455A (zh) 一种基于Chrome浏览器的网页图片获取方法和系统
WO2022055585A1 (en) Smart distributed tracing context injection
WO2012119496A1 (zh) 预读方法和装置
CN108259198B (zh) 一种域名缓存命中率的预判方法、装置及设备
CN109492146A (zh) 一种防web爬虫的方法和装置
CN112667589B (zh) 一种日志管理方法、装置及系统
CN113760568A (zh) 数据处理的方法和装置
CN108737458B (zh) 一种用于控制流量的方法及装置
CA3100493A1 (en) Webpage integrity monitoring
CN109145220A (zh) 数据处理方法、装置及电子设备
CN110224973B (zh) 基于编程游戏的多服务端并行实现方法、电子设备及介质
US11599636B1 (en) Systems and methods for managing and providing software packages which have undergone malware and/or vulnerability analysis

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240325

Address after: Singapore

Patentee after: Alibaba Singapore Holdings Ltd.

Country or region after: Singapore

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Patentee before: ALIBABA GROUP HOLDING Ltd.

Country or region before: Cayman Islands

TR01 Transfer of patent right