提供10个基本64张图像的最佳实践

时间:2011-09-20 00:51:45

标签: php mysql cordova base64

我正在开发一个phonegap应用程序,应用程序的一部分是大约10个base64编码的图像,每周每个用户下载一次(现在有100个用户,希望增长很多) 我的服务器很慢,我也在努力,因此这些图像的传输速度很慢。 我的问题是: 将这些base64图像生成并保存到db一次并根据请求从db获取图像或者每次请求图像时对base64进行编码都会更快,php和服务器更快吗?

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

肯定会更快地对图像进行base64编码并存储编码。

这是一个经典的内存与速度权衡,您可以支付更低的计算成本,以获得更高的内存成本。在这种情况下,这意味着存储更多数据( 8/7 8/6,如果你只保留编码版本,如果保留原始数据,则多于2倍)太)。

您可以做的最好的事情是将图像保存在内存中,因为这样可以避免访问磁盘的成本。您可以使用shared memory functions执行此操作,也可以通过滥用会话变量并指定固定的会话ID来检索内容。

答案 1 :(得分:1)

在不知道你的应用程序的细节的情况下,在我看来,只有10个图像的数据库是过度的。在慢速服务器上运行数据库所增加的额外开销可能会扼杀从保存base64编码中获得的任何好处。

我会将base64编码的图像存储为文件而不是数据库,以便它们可以由Web服务器直接提供给客户端。

如果客户端可以处理它,我还会确保你可以提供gzip压缩数据,因为base64数据压缩效果非常好。这将大大减少服务器的流量。请参阅this

答案 2 :(得分:1)

在您的服务器成为处理器绑定之前,您很可能会受到带宽限制。我的想法:

  • 不要发送base64编码的图像。相反,发送正确压缩的二进制数据。
  • 除非需要,否则不要更新客户端(例如,如果没有要抓取的新图像,请不要抓取图像)。使用304标题和相关信息来跟踪。
  • 一旦事情开始变得艰难,请使用memcache / Redis而不是数据库来存储“预先消化的”图像数据。