请问下 post 过来的数据大造成速度慢有什么解决方法吗

我现在在做一个表单,表单要填写的数据挺多的,然后能又要上传图片,最少四张,最多八张,然后上传图片的时候我是先将图片转换成base64,然后前端显示,再把base64放到input里面,跟着表单提交,图片小的话base64长度就不大,速度还行,一单图片稍微大一点,比如几百K的时候,base64就会变得很长,然后最多又是八张图片,8张图片的base64一共长度就非常的巨大,然后我看了下post过去的数据长度有200多万,造成提交的时候速度非常的慢。请问下有什么解决方案吗?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 12
xuding

在处理类似问题时候。
我喜欢把图片/文件/视频的上传 和 表单的提交分为两个独立问题来处理。
这样的好处是可以单独优化他们的速度。

图片/文件/视频的上传: 使用可断点续传
表单提交:以上上传以后,自然也就快了

希望有帮助

6年前 评论

@XuDing 什么叫断点续传,是指图片上传的时候不是将图片的base64保存在input进行表单提交,而且是上传图片的过程中就将图片写入文件然后通过ajax返回图片的地址吗?

6年前 评论
xuding

@Echoiii 断点续传, 我的意思是用户东西传到一半,由于某种原因断了,还可以继续上传,不用重新来过。你可以用 http://www.dropzonejs.com/来实现。断点续传的另外一个好处是,你不用去调服务器的max_upload blah blah的东西。

我的中心思想是把2个问题分开看,你的理解是对的。

6年前 评论

如果边上传边写文件的话返回图片地址这种方法我也考虑过,但是的话如果图片总是在那里上传但是不提交表单的话就会造成服务器很多图片。所以我就写成base64放到input里面,然后提交表单的时候再写入,但是这样的话post过来的数据量就很大了,造成响应的速度很慢。。。

6年前 评论
xuding

@Echoiii 嗯,以前我也是同样顾虑。后来我给自己的解释是用户体验 > 网站维护。 你可以写个cron按时的洗掉没有用的图片

6年前 评论

@XuDing 好吧,如果实在没其他解决方案只能采用这种了

6年前 评论

图片传七牛去 然后把链接地址传后端不就分开了吗?

6年前 评论

@MikeZhang199 我的图片是放自己服务器的。图片是在提交表单的时候再写进文件的

6年前 评论

@Echoiii 可以试试给图片上传单独加个接口 当上传完未提交的时候 异步传服务器去

6年前 评论

@MikeZhang199 这种我考虑过 就是怕用户一直重复上传一些没用的图片

6年前 评论

@Echoiii 根据 ip 等指纹信息进行次数限制 然后提交完表单以后清理无用的图片

6年前 评论

@Echoiii 就是先用js异步上传 返回的路径 名字在跟其他的input表单一起上传 这样就分成了两个部分 一部分专门上传图片或者视频 另一部分就直接上传form表单

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!