前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyBPM打印模板的缓存问题

EasyBPM打印模板的缓存问题

作者头像
用户3158888
发布2022-03-22 14:08:04
7960
发布2022-03-22 14:08:04
举报

业务平台EasyBPM(易实管理软件)有一个功能是模板打印的功能。就是可以使用一个docx格式的模板,输出一个docx格式的单据的文档。

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

模板提示
模板提示

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

缓存的问题

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

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

之后上传了模板文件到后端的静态资源目录,再次去获取模板资源的时候,由于此时已经缓存的结果是404文件,所以前端获取的依然是404页面,而不是模板文件,因此会继续提示没有模板文件。

如果去掉缓存

要解决这个问题,就需要去掉模板文件的缓存功能。 一般来说,在请求的header上面可以可以设置不使用缓存。

但是一个简单的方式是,给url地址加上时间戳,比如如下代码:

代码语言:javascript
复制
 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, 资产管理等业务管理平台。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 缓存的问题
  • 如果去掉缓存
  • 缓存
  • 总结
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档