起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8280|回复: 7

[处理中3] 高拍仪拍出大量图片,保存的时候速度超慢。

[复制链接]

851

主题

2560

帖子

5714

积分

论坛元老

Rank: 8Rank: 8

积分
5714
QQ
发表于 2019-6-26 14:37:00 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
需求描述,用高拍仪拍出大量图片上传。
因为attachment组件无法完成自动上传。所以想出了如下的对策。
把高拍仪拍出来的照片,以base64编码格式存入一个数据组件中,在页面中可以通过bind-foreach方法把数据组件里的数据循环出来,通过img的bind-src能力,把base64数据bind到img对象里,显示出图片。
测试的时候,一直用的是cData。没有问题,因为不需要存入数据库的。
当所有测试通过后,要存入数据库的时候,发现坏事了。存入的时候超慢,一次只保存一张图片,也需要20秒的时间。但查询的时候还是比较快的。
重点:不知道我的这种作法对不对,因为我实在想不出什么好的办法了,这种方法最大的问题是无法把图片缓存在客户端,所以每次只能重新查询。
另一个重要问题就是保存超慢,请高手提供解决思路。我觉得不应该这么慢的。保存的时候,应该是一次性的把所有的数据打包扔给了服务器。服务器接到后插入数据库。正常情况下,bizData数据组件,不也是这么干的吗?我现的就是数据量大了点而已,但一个图80k左右,也不算大呀。
也不应该是保存慢,因为存在的sql已经在控制台打印出来了。我看了时间,100-300ms左右。对于一条大数据来说,还算可以吧。


未命名1561530140.png
企业应用定制开发。X5开发者。
手机:15065117236
QQ:87356667

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36046
发表于 2019-6-26 15:16:09 | 显示全部楼层
不用x5,自己用html和java结合,java中去操作数据库慢吗?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

65

主题

242

帖子

1194

积分

金牌会员

Rank: 6Rank: 6

积分
1194
QQ
发表于 2019-6-28 09:13:52 | 显示全部楼层
建议换成attachmentsimple来保存,
回复 支持 反对

使用道具 举报

851

主题

2560

帖子

5714

积分

论坛元老

Rank: 8Rank: 8

积分
5714
QQ
 楼主| 发表于 2019-6-28 09:56:09 | 显示全部楼层
java1234 发表于 2019-6-28 09:13
建议换成attachmentsimple来保存,

attachmentSimple受限,无法自动完成上传,
我现在完成的是点击button直接通过高拍仪的回调拿到图片的base64编码数据。
如果能通过attachmentSimple完成自动上传,当然是个好的解决方案。
可是我没弄明白,如何自动上传的问题。
如果高手有好的办法,望多加指点。
企业应用定制开发。X5开发者。
手机:15065117236
QQ:87356667
回复 支持 反对

使用道具 举报

65

主题

242

帖子

1194

积分

金牌会员

Rank: 6Rank: 6

积分
1194
QQ
发表于 2019-6-28 10:41:34 | 显示全部楼层
wgs7909 发表于 2019-6-28 09:56
attachmentSimple受限,无法自动完成上传,
我现在完成的是点击button直接通过高拍仪的回调拿到图片的bas ...

那就直接写一个action,action里用传统的jdbc操作数据库保存试试呢,如果还慢试试在java里将base64转成文件流来上传,在数据库存个路径的方式
回复 支持 反对

使用道具 举报

851

主题

2560

帖子

5714

积分

论坛元老

Rank: 8Rank: 8

积分
5714
QQ
 楼主| 发表于 2019-6-28 12:23:12 | 显示全部楼层
java1234 发表于 2019-6-28 10:41
那就直接写一个action,action里用传统的jdbc操作数据库保存试试呢,如果还慢试试在java里将base64转成文 ...

现在有一个主要问题没弄明白 ,就是文件通过文件域的形式POST给服务器,速度可以接受,但为什么通过数据组件POST到服务器就那么慢呢?
企业应用定制开发。X5开发者。
手机:15065117236
QQ:87356667
回复 支持 反对

使用道具 举报

532

主题

2107

帖子

4308

积分

论坛元老

起步萌新

Rank: 8Rank: 8

积分
4308
发表于 2019-6-28 13:57:53 | 显示全部楼层
本帖最后由 江苏院-吴昊 于 2019-6-28 14:04 编辑

80多k的base64应该非常非常非常长了。

chrome的timeline看看是哪部分慢?

数据组织有感知数据变化等功能,估计是组件内部实现问题。


图片用base64编码只适用于图片很小的情况。一个3k的图片,base64字符串就已经3000多个。100k不敢想象

及时结贴是个好习惯
回复 支持 反对

使用道具 举报

65

主题

242

帖子

1194

积分

金牌会员

Rank: 6Rank: 6

积分
1194
QQ
发表于 2019-6-28 13:58:53 | 显示全部楼层
wgs7909 发表于 2019-6-28 12:23
现在有一个主要问题没弄明白 ,就是文件通过文件域的形式POST给服务器,速度可以接受,但为什么通过数据 ...

base64数据相当于传得是字符串,文件域相当于是以流的形式传到后台,流的效率肯定要高一些,再说post虽然不限制数据大小,tomcat默认有个2m的数据限制,你可以调试看下你的base64的数据的大小
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-9-28 07:25 , Processed in 0.082835 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表