一种静态资源管理方法与流程

文档序号:17655956发布日期:2019-05-15 22:00阅读:276来源:国知局

本发明涉及一种静态资源管理方法。



背景技术:

随着互联网行业的发展,网页内容所提供的信息日渐丰富,网页上所展示的数据内容也随之越来越丰富。在网页开发过程中,通常需要链接一些静态资源(Static Resource),例如JavaScript脚本文件、层叠样式表(Cascading Style Sheets,CSS)资源或图片等。为了提高用户访问带有图片等资源的网页的速度,通常需要对图片等静态资源进行强缓存,以便用户可以直接读取浏览器的缓存中的静态资源。当链接的图片等资源对应的文件发生修改时,则需要通知浏览器更新修改后的文件。现有技术中通常通过在引用静态资源标识的位置添加文件的统一版本号来更新链接的文件,但是当文件发生修改后,使用统一的版本号,会带来大量无谓的刷新,比如修改了一千个资源中的一个,也需要更新全部的资源,使用不方便。



技术实现要素:

本发明的目的在于提供一种静态资源管理方法,以实现资源的精准刷新,且增加一个集合路径,大幅度减少了需要维护的文件版本号的数量。

为了实现上述目的,本发明采用的技术方案为:

一种静态资源管理方法,包括以下步骤:

S01:确定资源文件的目录路径,并确定需要合并控制的资源文件路径和深度;

S02:遍历资源文件目录,获取资源文件最后修改时间的时间戳或获取资源文件所在子目录的最后修改时间的时间戳,并和对应的文件路径或子目录路径关联;

S03:将时间戳转换为文件版本号,再通过文件版本号与上述对应的文件路径或子目录路径关联生成版本控制文件,并对版本控制文件进行存储;

S04:调用资源文件,将该调用资源文件的文件路径与版本控制文件进行匹配,并获取相应的版本号;

S05:将版本号更新到最终输出的html的资源路径内。

所述步骤S01中确定需要合并控制的资源文件路径和深度,是通过配置文件中指定的需要合并控制的子目录路径和层级深度来进行确定。

所述步骤S02中资源文件目录包括单个文件目录和合并文件目录。

所述步骤S02中遍历资源文件目录,若遍历匹配到合并文件目录,则停止匹配,获取资源文件所在的子目录修改时间的时间戳,若遍历匹配到单个文件目录,则获取单个文件目录相对应的资源文件的最后修改时间的时间戳。

所述步骤S03中将时间戳转换为文件版本号,其中,时间戳进行转换是将时间戳转换为32进制字符串或64进制字符串。

所述步骤S04中调用资源文件,将该调用资源文件的文件路径与版本控制文件进行匹配,并获取相应的版本号,进一步包括以下步骤:

S041:将该调用资源文件的完整文件路径与版本控制文件的文件路径进行匹配,若匹配成功,则获取该调用资源文件的版本号,若匹配不成功,则执行步骤S042;

S042:将该调用资源文件的子目录路径与版本控制文件的子目录路径进行匹配,若匹配成功,则获取该调用资源文件的版本号,若匹配不成功,则执行步骤S043;

S043:将该调用资源文件的子目录路径逐层往上,进行匹配需要调用的资源文件,直到根目录仍未匹配到,则将版本号置空。

本发明的一种静态资源管理方法,通过获取资源文件最后修改时间的时间戳或获取资源文件所在子目录最后修改时间的时间戳,将时间戳转换为相应的版本号,调用资源文件时,再获取相应的版本号,使得资源文件被修改时,其获取的版本号也随之变化,实现资源的刷新,不会受浏览器缓存机制的影响,且通过合并控制资源文件路径和深度,增加一个集合路径,对指定的集合目录,不再生成每个文件的版本号,而是生成一个公用的版本号,大幅度减少了需要维护的文件版本号的数量。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明方法流程图。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

如图1所示,本发明提供一种静态资源管理方法,包括以下步骤:

S01:确定资源文件的目录路径,并确定需要合并控制的资源文件路径和深度;

S02:遍历资源文件目录,获取资源文件最后修改时间的时间戳或获取资源文件所在子目录的最后修改时间的时间戳,并和对应的文件路径或子目录路径关联;

S03:将时间戳转换为文件版本号,再通过文件版本号与上述对应的文件路径或子目录路径关联生成版本控制文件,并对版本控制文件进行存储;

S04:调用资源文件,将该调用资源文件的文件路径与版本控制文件进行匹配,并获取相应的版本号;

S05:将版本号更新到最终输出的html的资源路径内。

所述步骤S01中确定需要合并控制的资源文件路径和深度,是通过配置文件中指定的需要合并控制的子目录路径和层级深度来进行确定。

所述步骤S02中资源文件目录包括单个文件目录和合并文件目录。

所述步骤S02中遍历资源文件目录,若遍历匹配到合并文件目录,则停止匹配,获取资源文件所在的子目录修改时间的时间戳,若遍历匹配到单个文件目录,则获取单个文件目录相对应的资源文件的最后修改时间的时间戳。

为了减小版本号的长度,所述步骤S03中将时间戳转换为文件版本号,其中,时间戳进行转换是将时间戳转换为32进制字符串或64进制字符串。

所述步骤S04中调用资源文件,将该调用资源文件的文件路径与版本控制文件进行匹配,并获取相应的版本号,进一步包括以下步骤:

S041:将该调用资源文件的完整文件路径与版本控制文件的文件路径进行匹配,若匹配成功,则获取该调用资源文件的版本号,若匹配不成功,则执行步骤S042;

S042:将该调用资源文件的子目录路径与版本控制文件的子目录路径进行匹配,若匹配成功,则获取该调用资源文件的版本号,若匹配不成功,则执行步骤S043;

S043:将该调用资源文件的子目录路径逐层往上,进行匹配需要调用的资源文件,直到根目录仍未匹配到,则将版本号置空。

以下举实施例,进行详细说明:

资源文件目录如下(包括单个文件目录和合并文件目录):

单个文件目录:assets/base/{global.js,style.css};

合并文件目录:

assets/lib/{jquery/{a.js,b.js},bootstrap/{c.css,d.css}};

wrap配置lib=1,即展开深度为1;

生成版本控制文件,版本控制文件是一组键值对,键为文件路径或子目录路径,值为版本号,由于assets/base不在wrap配置中,所以将生成如下版本控制文件:

assets/base/global.js=>modify_time(global.js)

assets/base/style.css=>modify_time(style.css)

其中assets/base/global.js为文件路径,modify_time(global.js)为版本号,同样的,assets/base/style.css为文件路径,modify_time(style.css)为版本号。

而lib在wrap配置中,且展开深度为1,所以向下展开一层,所以将生成如下版本控制文件:

assets/lib/jquery=>modify_time(jquery)

assets/lib/bootstrap=>modify_time(bootstrap)

此时,assets/lib/jquery为子目录路径,modify_time(jquery)为版本号;同样的assets/lib/bootstrap为子目录路径,modify_time(bootstrap)版本号。

当需要调用资源文件global.js时,由于其完整文件路径“assets/base/global.js”在版本控制文件中能匹配,所以直接获取版本号modify_time(global.js);当需要引用juery/a.js时,由于其完整文件路径“assets/lib/jquery/a.js”在版本控制文件中不存在,所以第一次匹配失败,进而使用其子目录路径“assets/lib/jquery”进行匹配,第二次匹配成功,获取对应版本号modify_time(jquery)。

本发明的一种静态资源管理方法,通过获取资源文件最后修改时间的时间戳或获取资源文件所在子目录最后修改时间的时间戳,将时间戳转换为相应的版本号,调用资源文件时,再获取相应的版本号,使得资源文件被修改时,其获取的版本号也随之变化,实现资源的刷新,不会受浏览器缓存机制的影响,且通过合并控制资源文件路径和深度,增加一个集合路径,对指定的集合目录,不再生成每个文件的版本号,而是生成一个公用的版本号,大幅度减少了需要维护的文件版本号的数量。

上述说明示出并描述了本发明的优选实施例,如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1