【发布时间】:2018-08-30 04:35:51
【问题描述】:
客户端与服务器映像过程。
我们有一个大型系统,它运行在 JSF(primefaces) EJB3 上,有时还运行在 JavaScript 逻辑上(比如使用 firebase 和其他东西)。
所以我们遇到了这个问题,我们有一个 servlet 来提供一些图像。后端进行查询,然后从 DB 中提取一些 blob img,将该 BLOB 制成字节数组,将其发送到浏览器会话内存,然后 servlet 将其提供给 ulr-OurSite/image/idImage。前端通过 <img>(url/image/id)</img> 调用它,到目前为止工作正常。
然后我们使用一种新的直接方式来显示 img,我们将 BLOB/RAW 数据发送到前端并在那里我们只是将它们转换为 Base64.imageReturn。并将其传递给 html。
Base64 codec = new Base64();
String encoded = codec.encodeBase64String(listEvidenciaDev.get(i).getImgReturns());
两者都适用,几乎适用于所有情况。
注意:我们之前没有尝试过这个,因为我们无法通过我们的序列化对象层和 RMI 传递 RAW 数据。现在我们当然可以了。
所以现在有两种方法。
我们要么将数据发送到 servlet 并将其放在某个 url 上,这意味着后端完成所有工作,而前端只调用 url
或者我们将数据发送到前端,这将产生一些魔力并将其转换为 img。
这带来了 2 个问题。
如果我们发送到前端 RawObject 或让他们调用 URL 来显示他的图像内容,最终用户下载相同数量的数据?这很重要,因为我们有一些互联网连接不佳的远程分支机构
值得把辛苦的工作交给前端(转换数据)还是后端(转换和发布)?
编辑:
我的问题不是关于 BLOB(我称之为 RAW 数据的)大于 base64
是的;将数据作为对象传递并将其转换为可读图片比从我们的 servlet 传递带有实际 IMG 的 url 并将其加载到 html 上对 Internet 带宽的影响更大?
【问题讨论】:
-
1) 如果使用 'raw' 你的意思是 b64 编码:*.com/questions/11402329/base64-encoded-image-size 2) 在互联网上搜索 'effort'...
-
1) no 2) is not an enconding ask is a "wich source of data is better" ask
-
那么 1 还不清楚。在 servlet 中,您还可以发布原始数据。请将您的问题分成两个单独的问题。两者都与 jsf/primefaces 无关。在“2”中,您谈论的是编码的“辛勤工作”……
标签: javascript web optimization primefaces frontend