业务平台EasyBPM(易实管理软件)有一个性能是模板打印的性能。就是能够应用一个docx格局的模板,输入一个docx格局的单据的文档。

打印的逻辑是先从服务端获取模板,如果没有对应的模板,就提醒先上传模板:

遇到的问题是,依照提醒上传模板之后,再次打印仍然会报没有模板。

缓存的问题

通过思考发现,可能的起因是因为应用了缓存。 后端应用Node + Express进行动态资源的公布。 通过Express公布的资源,默认会开启缓存。

所以当第一次去获取模板资源的时候,因为此时没有对应的模板,此时会跳转到404页面,返回给前端,前端解析404页面发现不是模板文件,就会提醒没有模板文件。

之后上传了模板文件到后端的动态资源目录,再次去获取模板资源的时候,因为此时曾经缓存的后果是404文件,所以前端获取的仍然是404页面,而不是模板文件,因而会持续提醒没有模板文件。

如果去掉缓存

要解决这个问题,就须要去掉模板文件的缓存性能。 一般来说,在申请的header下面能够能够设置不应用缓存。

然而一个简略的形式是,给url地址加上工夫戳,比方如下代码:

 var getTemplateFunction = function () {        return `./print/${page.model.id}打印模板.docx?time=${new Date().getTime()}`; };

在前面加上"?time=${new Date().getTime()}" 之后,因为每次申请的url地址都不在一样,这个时候就不会应用缓存,而是总是获取最新的文件。 这样就能够轻松解决了这个缓存的问题。

实际也是如此,加上工夫戳之后,上述问题就不在复现了。

缓存

无关缓存的原理和相干常识 ,强缓存,协商缓存,Cache Control, Expires,from disk cache和from memory cache,ETag和If-None-Match,Last-Modified和If-Modified-Since等等,能够百度之,网上相干的介绍很多,此处不在赘述。

总结

其实想强调一点,底层认知还是很重要的,如果遇到这个问题,你至多要晓得缓存相干的常识,才可能想到有可能是缓存导致的问题。 如果你都不晓得缓存相干原理和常识,预计就很难想到了。

EasyBPM(易施业务流程治理平台),是一个低代码业务平台。 能够自定义物业表单,定义业务流程,审批流程,报表,权限等等。 通过该平台能够组建CRM,进销存,OA, 资产治理等业务管理平台。有趣味的能够关注。

更多优良内容,欢送关注公众号 “易施管理软件EasyBPM” 。