【问题标题】:Client vs server image process and shown客户端与服务器图像处理并显示
【发布时间】: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 个问题。

  1. 如果我们发送到前端 RawObject 或让他们调用 URL 来显示他的图像内容,最终用户下载相同数量的数据?这很重要,因为我们有一些互联网连接不佳的远程分支机构

  2. 值得把辛苦的工作交给前端(转换数据)还是后端(转换和发布)?


编辑:

我的问题不是关于 BLOB(我称之为 RAW 数据的)大于 base64

是的;将数据作为对象传递并将其转换为可读图片比从我们的 servlet 传递带有实际 IMG 的 url 并将其加载到 html 上对 Internet 带宽的影响更大?

【问题讨论】:

  • 1) 如果使用 'raw' 你的意思是 b64 编码:*.com/questions/11402329/base64-encoded-image-size 2) 在互联网上搜索 'effort'...
  • base64 encoded image size的可能重复
  • 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


【解决方案1】:

我确实选择关闭此答案,因为我们进行了一些测试,并且前端的带宽使用情况相同。

无论如何我们都使用这两种解决方案

如果我们不想为制作大量编码的前端收取费用,我们会为该图像设置一个 servlet(它带有更多代码和更多服务器负载)。我们在特定情况下寻找最佳优化。

【讨论】: