微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 基础64图像从数据库中选择和编码时发现的慢度

我在离子框架中工作.目前正在设计包含文字图片的帖子页面.用户可以发布数据和图像,一切都是安全的.

所以,我使用base 64编码并将图像保存在数据库中.

encodeURIComponent($scope.image)

每次用户请求时,我从表中选择行并将其与文本一起显示并解码.

decodeURIComponent($scope.image) 

使用HTML“data:image / jpeg; base64,_______”转换.

工作正常,但需要花费我预期的那么多时间.因此,图像尺寸增大了33%,并且看起来看起来很凸显.

然后我决定继续使用cordova的文件上传插件.但我意识到,以这种方式维护文件是如此多的风险和收集.我也尝试将二进制数据保存到数据库中.但失败了.

没有base64数据的文本选择大大减少了时间.如果可以在另一个http调用中单独选择图像,则在选择其他列和显示之后.它是处理安全图像的正确机制吗?

解决方法:

由于它只是个人文件,您可以将它们存储在S3中.

为了安全地进行文件上传,只需检查文件的mime类型,然后再上传您选择的任何存储空间.

http://php.net/manual/en/function.mime-content-type.php

只需快速检查上传文件

$mime = mime_content_type($file_path);
if($mime == 'image/jpeg') return true;

没什么大不了!

文件保存在数据库上是不好的做法,它应该是你的最后一个资源. S3非常适用于许多用例,但它对于高使用率来说是昂贵的,本地文件应该仅用于内部网和非公共可用应用程序.

在我看来,去S3.

亚马逊的sdk易于使用,你可以获得1GB的免费存储空间进行测试.
您也可以使用自己的服务器,只需将其保留在数据库之外.

文件系统上存储图像的解决方

假设您有100,000个用户,每个用户都有10个图片.你如何处理在本地存储?
问题:Linux文件系统在几十万个图像之后中断,因此您应该使文件结构避免这种情况

解:
使文件名称为’abs(userID / 1000)* 1000’/ userID

这样,当您拥有ID为989787的用户时,它的图像将存储在该文件夹中
九十八万九千七百八十七分之九十八万九/ img1.jpeg
九十八万九千七百八十七分之九十八万九/ img2.jpeg
九十八万九千七百八十七分之九十八万九/ img3.jpeg

并且你有它,一种为一百万用户存储图像的方法,它不会破坏unix文件系统.

存储大小如何?

上个月我不得不为我工作的电子商务压缩130万个jpeg.上传图像时,使用带有无损标记和80%质量的imagick进行压缩.这将删除不可见像素并优化您的存储空间.由于我们的图像从40×40(缩略图)到1500×1500(缩放图像)不等,我们平均有700×700张图像,130万张图像,大约120GB的存储空间.

所以是的,可以将它全部存储在您的文件系统中.

当事情开始变慢时,你会雇用一个CDN.

这将如何运作?

只要CDN被请求输入文件,CDN就会位于您的图像服务器前面,如果它没有在存储中找到它(缓存未命中),它将从您的图像服务器复制它.之后,当再次请求CDN时,它将从它自己的缓存中传送图像.

这样就不需要代码来迁移到CDN映像传递,您只需要更改站点中的URL并雇用CDN,对于S3存储桶也是如此.

这不是一个廉价的服务,但它比云端更便宜,当你到达需要它的时候,你可能负担得起它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐