CN115454495A - 一种基于机器学习的页面缓存方法、装置、设备及介质 - Google Patents
一种基于机器学习的页面缓存方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115454495A CN115454495A CN202211300354.9A CN202211300354A CN115454495A CN 115454495 A CN115454495 A CN 115454495A CN 202211300354 A CN202211300354 A CN 202211300354A CN 115454495 A CN115454495 A CN 115454495A
- Authority
- CN
- China
- Prior art keywords
- source code
- version
- page
- change
- file
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及人工智能及数字医疗领域,公开了一种基于机器学习的页面缓存方法、装置、设备及介质,通过获取页面源代码对应历史版本的变更信息,以当前版本的源代码下一次变更的时间间隔为预测目标,页面源代码对应历史版本的变更信息为训练数据,通过极端梯度提升XGBoost算法进行模型训练,以获得预测模型,根据预测结果,对页面的客户端缓存进行配置。该实施方式可实现Web页面资源文件缓存的智能化、精细化设置,提升Web页面的缓存效率,解决Web页面更新不及时,频繁重新请求加载资源导致服务器流量过大、处理负载增加的技术问题。
Description
技术领域
本申请涉及人工智能及数字医疗领域,尤其是涉及到一种基于机器学习的页面缓存方法、装置、设备及介质。
背景技术
在行业新需求及国家政策的推动下,SaaS成为了医疗信息化的最佳选择,SaaS作为一种基于云的应用软件,灵活易拓展,统一开发部署,且无需投入硬件设备成本,能满足不同主体在不同场景中的特定信息化需求,实现医疗机构、医护人员与患者的互联协同,提升B端运营效率与服务水平,全面打造智慧医疗,促进医疗资源合理配置。用户在使用医疗信息化服务时,高度依赖浏览器作为入口,医疗的服务内容均承载于Web页面之上,由于信息化***、服务内容业务的不断升级,Web页面需要不断更新,医疗服务的Web页面的资源文件包括需要实时更新的资源文件和不经常更新的资源文件,浏览器在每次打开Web页面时,都需要从服务器下载需要实时更新的资源文件,而对于不经常更新的资源文件,则可以将它们存储至浏览器缓存,供浏览器下次打开页面时使用,这样就可以加速页面的加载。
现有技术中,为了使浏览器缓存中保持最新的数据,在加载浏览器缓存中的资源文件前,需对浏览器缓存进行更新。具体地,浏览器先向服务器端询问页面需缓存的资源文件是否被修改过,如果没有修改过,则直接加载本地浏览器缓存中的资源文件,显示页面,否则,重新从服务器端下载该页面所有需缓存的资源文件至浏览器缓存中,然后再加载浏览器缓存中的资源文件,显示页面,现有技术中至少存在如下技术问题:
Web应用缓存的有效性及更新机制的设置大多是依据开发者的经验进行,有时会因设置不够准确,容易造成部分文件的缓存过期时间设置过短,增加了服务端处理请求的负担,浪费不必要的网络资源,同时也增加页面加载的时间,降低用户体验;部分文件的缓存过期时间设置时间过长,导致页面内容有更新,但是用户访问到的是浏览器缓存中的内容,而不是最新的版本,导致一些样式显示的异常,甚至导致页面上某些功能不可用,降低了新增医疗服务的可用性和体验感。
发明内容
有鉴于此,本申请提供了一种基于机器学习的页面缓存方法、装置、设备及介质,能够实现Web页面资源文件缓存的智能化、精细化设置,提升Web页面的缓存效率,解决Web页面更新不及时,频繁重新请求加载资源导致服务器流量过大、处理负载增加的技术问题。
根据本申请的第一方面,提供了一种基于机器学习的页面缓存方法,包括:
获取页面源代码对应历史版本的变更信息,其中,所述历史版本的变更信息包括:历史版本的源代码对应的文件类型、历史版本的源代码的行数、历史版本的源代码的新增变更标识、历史版本的源代码的变更版本数量、历史版本的源代码每次变更相对于第一次上线的时间间隔、历史版本的源代码每次变更相对于下一次变更的时间间隔;
以当前版本的源代码下一次变更的时间间隔为预测目标,页面源代码对应历史版本的变更信息为训练数据,通过极端梯度提升XGBoost算法进行模型训练,以获得预测模型;
获取页面源代码对应当前版本的版本信息,并利用所述预测模型对当前版本的源代码对应文件的下一次变更时间间隔进行预测,其中,所述版本信息包括:当前版本的源代码对应的文件类型、当前版本的源代码的行数、当前版本的源代码的新增变更标识、当前版本的源代码的变更版本数量、当前版本的源代码变更相对于第一次上线的时间间隔;
根据预测结果,对页面的客户端缓存进行配置。
根据本申请的第二方面,提供了一种基于机器学习的页面缓存装置,包括:
数据获取模块,用于获取页面源代码对应历史版本的变更信息,其中,所述历史版本的变更信息包括:历史版本的源代码对应的文件类型、历史版本的源代码的行数、历史版本的源代码的新增变更标识、历史版本的源代码的变更版本数量、历史版本的源代码每次变更相对于第一次上线的时间间隔、历史版本的源代码每次变更相对于下一次变更的时间间隔;
模型训练模块,用于以当前版本的源代码下一次变更的时间间隔为预测目标,数据获取模块采集的页面源代码对应历史版本的变更信息为训练数据,通过极端梯度提升XGBoost算法进行模型训练,以获得预测模型;
时间预测模块,用于获取页面源代码对应当前版本的版本信息,并利用所述模型训练模块训练出的预测模型对当前版本的源代码对应文件的下一次变更时间间隔进行预测,其中,所述版本信息包括:当前版本的源代码对应的文件类型、当前版本的源代码的行数、当前版本的源代码的新增变更标识、当前版本的源代码的变更版本数量、当前版本的源代码变更相对于第一次上线的时间间隔;
缓存配置模块,用于根据所述时间预测模块的预测结果,对页面的客户端缓存进行配置。
根据本申请的第三方面,提供了一种计算机设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述基于机器学习的页面缓存方法的步骤。
根据本申请的第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述基于机器学习的页面缓存方法的步骤。
借由上述技术方案,本申请提供的一种基于机器学习的页面缓存方法、装置、设备及介质,首先,获取页面源代码对应历史版本的变更信息,接着以当前版本的源代码下一次变更的时间间隔为预测目标,页面源代码对应历史版本的变更信息为训练数据,通过极端梯度提升XGBoost算法进行模型训练,以获得预测模型,获取页面源代码对应当前版本的版本信息,并利用所述预测模型对当前版本的源代码对应文件的下一次变更时间间隔进行预测,根据预测结果,对页面的客户端缓存进行配置。该实施方式可实现Web页面资源文件缓存的智能化、精细化设置,提升Web页面的缓存效率,解决Web页面更新不及时,频繁重新请求加载资源导致服务器流量过大、处理负载增加的技术问题。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,并可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特列举本申请的具体实施方式。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了本申请实施例中提供的一种基于机器学习的页面缓存方法应用场景的示意图;
图2示出了本申请实施例中提供的一种基于机器学习的页面缓存方法流程示意图;
图3示出了本申请实施例中提供的用于模型训练的数据样本示意图;
图4示出了图1中步骤202-1的流程示意图;
图5示出了图1中步骤202-2的流程示意图;
图6示出了本申请实施例中提供的客户端访问Web应用的交互流程示意图;
图7示出了本申请实施例中提供的一种基于机器学习的页面缓存装置的结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明实施例提供的一种基于机器学***板电脑和便携式可穿戴设备。服务端可以用独立的服务器或者是多个服务器组成的服务器集群来实现。下面通过具体的实施例对本发明进行详细描述。
在本实施例中提供了一种基于机器学习的页面缓存方法,如图2所示,该方法包括:
步骤201、获取页面源代码对应历史版本的变更信息;
其中,步骤201获取源代码对应历史版本的变更信息的方式有多种,历史版本的变更信息的变更信息通常存储于版本控制或源代码管理***中,而版本控制***可以包括Subversion、Git、Darcs、Mercurial等。例如:源代码对应历史版本的变更信息时,可以通过Git版本控制管理软件的相关日志,运行Python或Shell脚本从Git版本库中获取页面源代码对应历史版本的变更信息,并通过脚本程序对采集的数据进行数据清洗、变量计算、单位转换,然后写入数据库中。应用本方法过程中,可开始进行一次全量数据采集,采集对应历史版本的变更信息,后续可在每次开发者代码push上线之时触发服务器运行一次脚本获取版本的变更信息,并存入数据库中,以维持数据的不断更新,支持后期进行自动机器学习,解决数据漂移问题。
需要理解的是,本实施例中指的历史版本的变更信息包括历史版本的源代码对应的文件类型、历史版本的源代码的行数、历史版本的源代码的新增变更标识、历史版本的源代码的变更版本数量、历史版本的源代码每次变更相对于第一次上线的时间间隔、历史版本的源代码每次变更相对于下一次变更的时间间隔。另外,历史版本的源代码对应的文件类型通常指前端的源代码文件JS、CSS、HTML,对于前端框架而言也可以指框架的源代码文件例如Vue(对应Vue框架的源文件)、Ts(对应Typescript)、Jsx(对应React框架的JSX文件)、Sass、less等。历史版本的源代码的新增变更标识用于标记源代码文件“是否新增”或“是否变更”,对于每一个文件:若前一个版本没有该文件,则该文件为一个新增文件,“是否新增”的值为1,“是否变更”的值为1,对应的新增变更标识为“11”;若前一个版本有相同文件(文件相对路径和文件名称均相同),“是否新增”的值为0,再比较该版本文件MD5哈希值和前一个版本的文件MD5哈希值,如果值相同则认为该文件没有变更,“是否变更”的值为0,反之则为1,对应的新增变更标识为“01”。历史版本的源代码的变更版本数量通过计算出各文件在该版本中是该文件的第几个修改版本,历史版本的源代码每次变更相对于第一次上线的时间间隔对应该文件距离首次上线多少天发生修改(这里需要特别说明,这里的首次上线不同于Web应用的上线时间,而是指该文件第一次增加并上线应用的时间),历史版本的源代码每次变更相对于下一次变更的时间间隔对应文件距离下一次修改的时间间隔,特别地,如果某一个历史版本中,某一文件在该历史版本之后没有再修改过,计算上假定其最新的版本即待预测的版本存在修改,对应的新增变更标识为“01”)。在此基础上,还可以增加获取其它维度的数据变量,例如:历史版本号、历史版本日期、源代码文件列表(历史版本的源代码对应的文件相对路径及文件名称),这些维度的数据可以源代码文件的MD5哈希值作为索引存储于服务器的数据库中,文件的MD5哈希值唯一标识一个文件,当文件内容发生变更时,MD5哈希值相应会发生变化。
为了更加清楚的描述本实施例中采集的样本数据,如图3示出的表格列出了部分数据的样例,该数据表存储于数据库(例如MySQL、Postgresql、Mongodb等)中,其中,序号列仅作为本实施例中有助于解释的标识作用,实际数据表中以文件MD5值为索引进行存储,数据列从右至左依次为文件MD5、版本号、版本日期、件列表、文件类型、代码行数、新增变更标识、距离首次上线发生修改间隔天数、当前版本数量、下一次变更时间间隔。例如:序号1的代码util.js的变更历史为2022年1月24日对V1.0版本进行了修改,该修改距离首次上线时间(2021年12月19)的间隔天数为35天,该代码当前版本未V1.1,共计有(V1.0、V1.01、V1.02、V1.1,图中未示出)四个版本,代码行数为1345行,距离序号2标识的下次变更V1.2的时间2022年5月24日的时间间隔为120天,这120天即为本实施例中需要进行预测的时间间隔,如图2中表示的本实施例的当前代码变更日期为2022年8月24日,其版本为V1.2版,各项指标的数据为序号3中的数据,需要在本实施例中通过机器学习算法预测未来下一次变更时间间隔,以此作为依据对页面缓存规则进行设置。
步骤202、以当前版本的源代码下一次变更的时间间隔为预测目标,页面源代码对应历史版本的变更信息为训练数据,通过极端梯度提升XGBoost算法进行模型训练,以获得预测模型;
其中,步骤202以历史版本的源代码对应的文件类型、历史版本的源代码的行数、历史版本的源代码的新增变更标识、历史版本的源代码的变更版本数量、历史版本的源代码每次变更相对于第一次上线的时间间隔为自变量(X变量),历史版本的源代码每次变更相对于下一次变更的时间间隔为因变量(Y变量)即待预测值。
可选地,步骤202主要为利用XGBoost算法对数据训练建模,具体可以包括:
步骤202-1、将当前版本的源代码下一次变更的时间间隔为因变量,页面源代码对应历史版本的变更信息为自变量进行回归训练,并将数据划分为训练集和测试集;
其中,步骤202-1主要为提高模型的效果,方便对模型进行交叉验证,将数据划分为训练集和测试集,例如将数据集中的60%作为训练集,40%作为测试集,为防止过拟合,使用交叉验证,以防止模型过拟合,如图4所示,包括如下步骤:
步骤202-11、将当前版本的源代码下一次变更的时间间隔为因变量,页面源代码对应历史版本的变更信息为自变量进行回归训练;
其中,本步骤中也可以加入数据预处理的过程,首先标准化处理数据,清理数据集中的异常值,纠正错误数据,通过平滑噪声、数据规约等方式使得数据更加适用于模型训练。
步骤202-12、采用K折交叉验证方式,对数据集进行划分处理,以划分出训练集和测试集。
其中,K折就是分成K份数据来进行。K=5就是5折交叉验证,K=7就是7折交叉验证,K=10就是10折。
步骤202-2、将页面源代码对应历史版本的变更信息作为建模特征值,根据建模特征值进行建模训练,使用组合调参方式进行参数调整,以得到输出平方误差最小的模型作为预测模型。
其中,当XGBoost算法用于回归时,使用的是XGBRegressor方法。在回归树被创建后,可以得到每个属性的重要性得分。重要性得分衡量了特征在决策树构建中的价值,一个属性被用来在模型中构建决策树越多,其重要性就越高。步骤202-2中可以根据变量重要性的情况适应性地删减部分变量不加入模型训练,进一步减小模型复杂度。如图5所示,包括如下步骤:
步骤202-21、对页面源代码对应历史版本的变更信息进行降维处理;
其中,需要特别说明的是本实施例中虽然用于建模的自变量包括:历史版本的源代码对应的文件类型、历史版本的源代码的行数、历史版本的源代码的新增变更标识、历史版本的源代码的变更版本数量、历史版本的源代码每次变更相对于第一次上线的时间间隔,但是实际应用过程中需要尽可能降低用于建模的特征个数即减少用于建模的特征变量个数,这样有利于提高预测模型的泛化能力,降低模型复杂度。XGBoost算法对特征重要性排序根据结构分数的增益情况计算而得,根据结构分数的增益选择哪个特征作为分割点,而某个特征的重要性就是它在所有树中出现的次数之和。也即是说一个属性越多地被用来在模型中构建决策树,它的重要性就相对越高,例如通过重要性排序剔除靠后的两个特征值不加入模型训练,实现降维的效果。
步骤202-22、根据降维处理后的特征值进行建模训练;
步骤202-23、使用组合调参方式进行参数调整,以得到输出平方误差最小的模型作为预测模型。
建模过程中最为重要的是参数调优,其直接影响最终预测模型的效果,本步骤中对于XGBoost涉及优化的参数可以有max_depth、min_child_weight、gamma、seed、objective,其中,max_depth表示树的最大深度,能够避免过拟合,限制树***的程度,值越大,模型越容易产生局部最优情况,典型值3-10;min_child_weight确定最小叶节点样本权重和,值较大能够避免局部特殊样本的学***方误差mean_squared_error值作为调参结果,用来评价模型的优劣即输出平方误差最小的模型作为预测模型。
步骤203、获取页面源代码对应当前版本的版本信息,并利用所述预测模型对当前版本的源代码对应文件的下一次变更时间间隔进行预测;
其中,获取当前版本中各个文件的各指标数据(如图3中的指标数据),应用训练好的模型,给出当前版本的源代码对应文件的下一次变更时间间隔的预测值(相当于图3表中“本次待预测”的指标)。
步骤204、根据预测结果,对页面的客户端缓存进行配置。
步骤204-1、对预测的当前版本的源代码对应文件的下一次变更时间间隔进行降序排列,并从上至下分为第一部分和第二部分;
其中,步骤204-1中根据预测的下一次变更间隔进行降序排列,并分割出第一部分(频繁、近期变更概率较高的文件)和第二部分(变更相对不频繁、近期变更概率较低的文件),例如:排序前80%的判定为频繁、近期变更概率较高的文件,排序后的20%判定为变更相对不频繁、近期变更概率较低的文件。
步骤204-2、获取页面源代码对应当前版本的新增文件及变更文件;
步骤204-3、对第一部分对应的源代码的页面文件、当前版本的新增文件及变更文件设置客户端缓存模式为协商缓存,对第二部分对应的源代码的页面文件设置客户端缓存模式为强缓存。
其中,如图6所示为客户端访问Web应用的交互流程,其中示出了本实施例与现有的Web应用的交互流程结合的应用方式,Web服务器对响应头进行设置的步骤,步骤204-3具体可以包括:
步骤204-31、通过Web服务器配置,对第一部分对应的源代码的页面文件、当前版本的新增文件及当前版本的变更文件的请求响应头设置Last-Modified和ETag属性;
步骤204-32、通过Web服务器配置,对第二部分对应的源代码的页面文件的请求响应头设置Expires和Cache-Control属性,过期时间设置为模型预测的下一次变更时间间隔。
本实施例中分别对不同类型的文件设置验证型缓存或非验证性缓存,第一部分对应的源代码(当期版本新增、当期版本有变更的的文件、变更相对频繁、近期变更概率较高的文件)设置验证型缓存,对于第二部分对应的源代码(变更相对频繁、近期变更概率较高的文件)设置非验证型缓存,其中,验证性缓存主要由Last-modified和Etag这两个消息头控制,Last-modified在响应头里,服务器告诉浏览器,资源的最后修改时间,ETag响应头是资源的特定版本的标识符,它和Last-modified类似,都是为了实现资源的验证性缓存。非验证性缓存主要以Cache-Control、expires、pragma这三个消息头控制,根据过期时间来判断是否使用缓存,如果在有效期内,直接从浏览器缓存中读取文件,不发起http请求。
针对不同的Web服务器类型(Tomcat、Nginx、Apache、Caddy、Tengine),通过Web服务器配置文件对请求响应头的设置可以有多种方式,例如:对于Nginx服务器修改nginx.conf配置文件,使用location进行正则匹配文件名称,针对特定的文件进行不同的缓存设置,例如以下代码片段:
这里需要特别说明的是实际应用过程中,前端的开发代码通常是经过编译才进行上线发布的,其中源代码需要经过精简、混淆、压缩、编译或者还有其他的操作,其中可能会改变原有源代码的结构,而训练结果给出来的是源代码文件与缓存配置的对应关系,如果经过编译源代码进行了合并或变更了名称将导致本实施例无法利用于真实场景中,因此,需要特别对前端源代码的上线发布进行专门的设置,例如:webpack已有的机制支持一处变更,尽可能的减少编译文件的更新,通过如下方式实现将文件hash值与预测出的下一次变更时间间隔进行对应,相应地,编译配置过程中可以采用如下方式:
第一种:文件名的hash值可以采用contenthash的方式,根据文件内容生成不同的hash,只有当文件内容发生变化时hash值才会重新生成。
第二种:对于CSS文件,使用MiniCssExtractPlugin插件将CSS抽取为一个单独的CSS文件,这样确保CSS更新的时候,才会更新对应的hash值,即使引用CSS的JS文件发生变更,只要CSS文件内容不变,它的hash值就不会变。
第三种:webpack支持抽取公共代码抽离,公共代码不修改,打包生成的hash值就不会改变。
以上三种方式可以单独使用也可以综合使用。
本发明实施例提供的基于机器学习的页面缓存方法,首先,获取页面源代码对应历史版本的变更信息,接着以当前版本的源代码下一次变更的时间间隔为预测目标,页面源代码对应历史版本的变更信息为训练数据,通过极端梯度提升XGBoost算法进行模型训练,以获得预测模型,获取页面源代码对应当前版本的版本信息,并利用所述预测模型对当前版本的源代码对应文件的下一次变更时间间隔进行预测,根据预测结果,对页面的客户端缓存进行配置。该方法基于收集到的代码变更的历史版本数据,利用机器学习算法预测文件的更新周期。避免了将某些更新不频繁的资源缓存过期时间设置过短的情况,从而减轻服务端处理请求的负担,减轻不必要的网络资源占用,减少带宽流量,减少页面加载资源的时间,提高用户体验;避免了将某些更新频繁的资源的缓存过期时间设置过长的情况,减少用户不能访问到最新的资源信息,进而导致的样式的显示异常或是功能不可用的情况。基于数据建模、规则统一配置,避免了人工基于经验的手工配置,减少了工作量,提高了工作效率。
进一步地,作为图2方法的具体实现,本申请实施例中提供了一种基于机器学习的页面缓存装置,如图7所示,该装置包括:
数据获取模块710,用于获取页面源代码对应历史版本的变更信息,其中,历史版本的变更信息包括:历史版本的源代码对应的文件类型、历史版本的源代码的行数、历史版本的源代码的新增变更标识、历史版本的源代码的变更版本数量、历史版本的源代码每次变更相对于第一次上线的时间间隔、历史版本的源代码每次变更相对于下一次变更的时间间隔;
模型训练模块720,用于以当前版本的源代码下一次变更的时间间隔为预测目标,数据获取模块采集的页面源代码对应历史版本的变更信息为训练数据,通过极端梯度提升XGBoost算法进行模型训练,以获得预测模型;
时间预测模块730,用于获取页面源代码对应当前版本的版本信息,并利用模型训练模块训练出的预测模型对当前版本的源代码对应文件的下一次变更时间间隔进行预测,其中,版本信息包括:当前版本的源代码对应的文件类型、当前版本的源代码的行数、当前版本的源代码的新增变更标识、当前版本的源代码的变更版本数量、当前版本的源代码变更相对于第一次上线的时间间隔;
缓存配置模块740,用于根据时间预测模块的预测结果,对页面的客户端缓存进行配置。
可选地,模型训练模块720,包括:
预处理单元721,用于将当前版本的源代码下一次变更的时间间隔为因变量,页面源代码对应历史版本的变更信息为自变量进行回归训练,并将数据划分为训练集和测试集;
训练执行单元722,用于将页面源代码对应历史版本的变更信息作为建模特征值,根据建模特征值进行建模训练,使用组合调参方式进行参数调整,以得到输出平方误差最小的模型作为预测模型。
可选地,数据获取模块710具体用于运行脚本程序从Git版本库中获取页面源代码对应历史版本的变更信息。
可选地,缓存配置模块740,包括:
排序处理单元741,用于对预测的当前版本的源代码对应文件的下一次变更时间间隔进行降序排列,并从上至下分为第一部分和第二部分;
查找处理单元742,用于获取页面源代码对应当前版本的新增文件及变更文件;
配置处理单元743,用于对排序处理单元排序结果的第一部分对应的源代码的页面文件、查找处理单元查找出的当前版本的新增文件及变更文件设置客户端缓存模式为协商缓存,对排序处理单元排序结果的第二部分对应的源代码的页面文件设置客户端缓存模式为强缓存。
其中,配置处理单元743具体用于通过Web服务器配置,对第一部分对应的源代码的页面文件、当前版本的新增文件及变更文件的请求响应头设置Last-Modified和ETag属性;通过Web服务器配置,对第二部分对应的源代码的页面文件的请求响应头设置Expires和Cache-Control属性,过期时间设置为模型预测的下一次变更时间间隔。
本发明实施例提供了一种基于机器学习的页面缓存装置,首先获取页面源代码对应历史版本的变更信息,接着以当前版本的源代码下一次变更的时间间隔为预测目标,页面源代码对应历史版本的变更信息为训练数据,通过极端梯度提升XGBoost算法进行模型训练,以获得预测模型,获取页面源代码对应当前版本的版本信息,并利用所述预测模型对当前版本的源代码对应文件的下一次变更时间间隔进行预测,根据预测结果,对页面的客户端缓存进行配置。该方法基于收集到的代码变更的历史版本数据,利用机器学习算法预测文件的更新周期。避免了将某些更新不频繁的资源缓存过期时间设置过短的情况,从而减轻服务端处理请求的负担,减轻不必要的网络资源占用,减少带宽流量,减少页面加载资源的时间,提高用户体验;避免了将某些更新频繁的资源的缓存过期时间设置过长的情况,减少用户不能访问到最新的资源信息,进而导致的样式的显示异常或是功能不可用的情况。基于数据建模、规则统一配置,避免了人工基于经验的手工配置,减少了工作量,提高了工作效率。
本申请实施例中提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
获取页面源代码对应历史版本的变更信息,其中,所述历史版本的变更信息包括:历史版本的源代码对应的文件类型、历史版本的源代码的行数、历史版本的源代码的新增变更标识、历史版本的源代码的变更版本数量、历史版本的源代码每次变更相对于第一次上线的时间间隔、历史版本的源代码每次变更相对于下一次变更的时间间隔;
以当前版本的源代码下一次变更的时间间隔为预测目标,页面源代码对应历史版本的变更信息为训练数据,通过极端梯度提升XGBoost算法进行模型训练,以获得预测模型;
获取页面源代码对应当前版本的版本信息,并利用所述预测模型对当前版本的源代码对应文件的下一次变更时间间隔进行预测,其中,所述版本信息包括:当前版本的源代码对应的文件类型、当前版本的源代码的行数、当前版本的源代码的新增变更标识、当前版本的源代码的变更版本数量、当前版本的源代码变更相对于第一次上线的时间间隔;
根据预测结果,对页面的客户端缓存进行配置。
本申请实施例中提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取页面源代码对应历史版本的变更信息,其中,所述历史版本的变更信息包括:历史版本的源代码对应的文件类型、历史版本的源代码的行数、历史版本的源代码的新增变更标识、历史版本的源代码的变更版本数量、历史版本的源代码每次变更相对于第一次上线的时间间隔、历史版本的源代码每次变更相对于下一次变更的时间间隔;
以当前版本的源代码下一次变更的时间间隔为预测目标,页面源代码对应历史版本的变更信息为训练数据,通过极端梯度提升XGBoost算法进行模型训练,以获得预测模型;
获取页面源代码对应当前版本的版本信息,并利用所述预测模型对当前版本的源代码对应文件的下一次变更时间间隔进行预测,其中,所述版本信息包括:当前版本的源代码对应的文件类型、当前版本的源代码的行数、当前版本的源代码的新增变更标识、当前版本的源代码的变更版本数量、当前版本的源代码变更相对于第一次上线的时间间隔;
根据预测结果,对页面的客户端缓存进行配置。
需要说明的是,上述关于计算机可读存储介质或计算机设备所能实现的功能或步骤,可对应参阅前述方法实施例中,服务端侧以及客户端侧的相关描述,为避免重复,这里不再一一描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于机器学习的页面缓存方法,其特征在于,包括:
获取页面源代码对应历史版本的变更信息,其中,所述历史版本的变更信息包括:历史版本的源代码对应的文件类型、历史版本的源代码的行数、历史版本的源代码的新增变更标识、历史版本的源代码的变更版本数量、历史版本的源代码每次变更相对于第一次上线的时间间隔、历史版本的源代码每次变更相对于下一次变更的时间间隔;
以当前版本的源代码下一次变更的时间间隔为预测目标,页面源代码对应历史版本的变更信息为训练数据,通过极端梯度提升XGBoost算法进行模型训练,以获得预测模型;
获取页面源代码对应当前版本的版本信息,并利用所述预测模型对当前版本的源代码对应文件的下一次变更时间间隔进行预测,其中,所述版本信息包括:当前版本的源代码对应的文件类型、当前版本的源代码的行数、当前版本的源代码的新增变更标识、当前版本的源代码的变更版本数量、当前版本的源代码变更相对于第一次上线的时间间隔;
根据预测结果,对页面的客户端缓存进行配置。
2.根据权利要求1所述的方法,其特征在于,所述以当前版本的源代码下一次变更的时间间隔为预测目标,页面源代码对应历史版本的变更信息为训练数据,通过极端梯度提升XGBoost算法进行模型训练,以获得预测模型的步骤,包括:
将当前版本的源代码下一次变更的时间间隔为因变量,页面源代码对应历史版本的变更信息为自变量进行回归训练,并将数据划分为训练集和测试集;
将页面源代码对应历史版本的变更信息作为建模特征值,根据所述建模特征值进行建模训练,使用组合调参方式进行参数调整,以得到输出平方误差最小的模型作为预测模型。
3.根据权利要求2所述的方法,其特征在于,所述将当前版本的源代码下一次变更的时间间隔为因变量,页面源代码对应历史版本的变更信息为自变量进行回归训练,并将数据划分为训练集和测试集的步骤,包括:
将当前版本的源代码下一次变更的时间间隔为因变量,页面源代码对应历史版本的变更信息为自变量进行回归训练;
采用K折交叉验证方式,对数据集进行划分处理,以划分出训练集和测试集。
4.根据权利要求2所述的方法,其特征在于,所述将页面源代码对应历史版本的变更信息作为建模特征值,根据所述建模特征值进行建模训练,使用组合调参方式进行参数调整,以得到输出平方误差最小的模型作为预测模型的步骤,包括:
对页面源代码对应历史版本的变更信息进行降维处理;
根据降维处理后的特征值进行建模训练;
使用组合调参方式进行参数调整,以得到输出平方误差最小的模型作为预测模型。
5.根据权利要求1所述的方法,其特征在于,所述获取页面源代码对应历史版本的变更信息的步骤,包括:
通过运行脚本程序从Git版本库中获取页面源代码对应历史版本的变更信息。
6.根据权利要求1所述的方法,其特征在于,所述根据预测结果,对页面的客户端缓存进行配置的步骤,包括:
对预测的当前版本的源代码对应文件的下一次变更时间间隔进行降序排列,并从上至下分为第一部分和第二部分;
获取页面源代码对应当前版本的新增文件及变更文件;
对所述第一部分对应的源代码的页面文件、当前版本的新增文件及变更文件设置客户端缓存模式为协商缓存,对所述第二部分对应的源代码的页面文件设置客户端缓存模式为强缓存。
7.根据权利要求6所述的方法,其特征在于,所述对所述第一部分对应的源代码的页面文件、当前版本的新增文件及变更文件设置客户端缓存模式为协商缓存,对所述第二部分对应的源代码的页面文件设置客户端缓存模式为强缓存的步骤,具体包括:
通过Web服务器配置,对所述第一部分对应的源代码的页面文件、当前版本的新增文件及变更文件的请求响应头设置Last-Modified和ETag属性;
通过Web服务器配置,对所述第二部分对应的源代码的页面文件的请求响应头设置Expires和Cache-Control属性,过期时间设置为模型预测的下一次变更时间间隔。
8.一种基于机器学习的页面缓存装置,其特征在于,包括:
数据获取模块,用于获取页面源代码对应历史版本的变更信息,其中,所述历史版本的变更信息包括:历史版本的源代码对应的文件类型、历史版本的源代码的行数、历史版本的源代码的新增变更标识、历史版本的源代码的变更版本数量、历史版本的源代码每次变更相对于第一次上线的时间间隔、历史版本的源代码每次变更相对于下一次变更的时间间隔;
模型训练模块,用于以当前版本的源代码下一次变更的时间间隔为预测目标,数据获取模块采集的页面源代码对应历史版本的变更信息为训练数据,通过极端梯度提升XGBoost算法进行模型训练,以获得预测模型;
时间预测模块,用于获取页面源代码对应当前版本的版本信息,并利用所述模型训练模块训练出的预测模型对当前版本的源代码对应文件的下一次变更时间间隔进行预测,其中,所述版本信息包括:当前版本的源代码对应的文件类型、当前版本的源代码的行数、当前版本的源代码的新增变更标识、当前版本的源代码的变更版本数量、当前版本的源代码变更相对于第一次上线的时间间隔;
缓存配置模块,用于根据所述时间预测模块的预测结果,对页面的客户端缓存进行配置。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述基于机器学习的页面缓存方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述基于机器学习的页面缓存方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211300354.9A CN115454495A (zh) | 2022-10-24 | 2022-10-24 | 一种基于机器学习的页面缓存方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211300354.9A CN115454495A (zh) | 2022-10-24 | 2022-10-24 | 一种基于机器学习的页面缓存方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115454495A true CN115454495A (zh) | 2022-12-09 |
Family
ID=84311709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211300354.9A Pending CN115454495A (zh) | 2022-10-24 | 2022-10-24 | 一种基于机器学习的页面缓存方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115454495A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115982504A (zh) * | 2023-02-22 | 2023-04-18 | 鲁班(北京)电子商务科技有限公司 | 一种通用的前端工程化缓存优化部署方法及*** |
-
2022
- 2022-10-24 CN CN202211300354.9A patent/CN115454495A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115982504A (zh) * | 2023-02-22 | 2023-04-18 | 鲁班(北京)电子商务科技有限公司 | 一种通用的前端工程化缓存优化部署方法及*** |
CN115982504B (zh) * | 2023-02-22 | 2023-06-30 | 鲁班(北京)电子商务科技有限公司 | 一种通用的前端工程化缓存优化部署方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180260621A1 (en) | Picture recognition method and apparatus, computer device and computer- readable medium | |
US20090112975A1 (en) | Pre-fetching in distributed computing environments | |
CN111045721B (zh) | 动态修改Nginx配置参数的方法、装置及存储介质 | |
US11216752B1 (en) | Optimizing machine learning models | |
CN115454495A (zh) | 一种基于机器学习的页面缓存方法、装置、设备及介质 | |
WO2021126427A1 (en) | Management of indexed data to improve content retrieval processing | |
CN111722873A (zh) | 代码重构方法、装置、设备及介质 | |
CN112181423B (zh) | 基于配置文件的项目构建方法、装置、计算机设备及介质 | |
CN112860706A (zh) | 一种业务的处理方法、装置、设备及存储介质 | |
CN114172908B (zh) | 一种端云协同处理方法及设备 | |
WO2024139703A1 (zh) | 对象识别模型的更新方法、装置、电子设备、存储介质及计算机程序产品 | |
CN117519835A (zh) | 一种页面的动态懒加载方法、装置、设备及存储介质 | |
EP4281968A1 (en) | Active learning via a surrogate machine learning model using knowledge distillation | |
CN113094077B (zh) | 一种***差分升级方法、装置、智能终端及存储介质 | |
US20230334325A1 (en) | Model Training Method and Apparatus, Storage Medium, and Device | |
EP4145361A1 (en) | Augmentation of machine learning pipeline corpus for synthesizing new machine learning pipelines | |
US20220358375A1 (en) | Inference of machine learning models | |
CN110196724B (zh) | 文件加载方法、终端、服务器、计算机设备及存储介质 | |
CN111381974A (zh) | 一种优化大规模高并发场景下Drools响应时间的方法 | |
CN118012438B (zh) | 客户端体验处置方法、装置、介质及设备 | |
CN117176807B (zh) | 一种使用请求指纹合并网络请求的方法和装置 | |
US20230064674A1 (en) | Iterative training of computer model for machine learning | |
CN118034660B (zh) | 针对大语言模型融合算子的图编译方法、装置及存储介质 | |
US20230229735A1 (en) | Training and implementing machine-learning models utilizing model container workflows | |
CN113011555B (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 |