亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當基64圖像從數據庫中選擇和編碼時發現的緩慢性

當基64圖像從數據庫中選擇和編碼時發現的緩慢性

縹緲止盈 2019-07-05 16:16:09
當基64圖像從數據庫中選擇和編碼時發現的緩慢性我在離子框架內工作。目前正在設計一個包含文本和圖像的帖子頁面。用戶可以在那里張貼數據和圖像,而且都是安全的。因此,我使用base 64編碼,并將圖像保存在數據庫中。encodeURIComponent($scope.image)每次用戶請求時,我都會從表中選擇行,并與文本一起顯示它們,并對它們進行解碼。decodeURIComponent($scope.image)用HTML"data:image/jpeg;base64,_______"轉換。工作很好,但花了我所期望的那么多時間。因此,圖像大33%的大小,完全看上去膨大。然后我決定轉到Cordova的文件上傳插件上。但我意識到,以這種方式保存文件是很大的風險和復雜性。我還嘗試將二進制數據保存到數據庫中。但失敗了。沒有base 64數據的文本選擇大大減少了時間。如果可以在另一個http調用中單獨選擇圖像,則在選擇其他列并顯示之后。它是處理安全圖像的正確機制嗎?
查看完整描述

3 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

因為這只是個人文件,所以你可以將它們存儲在S3中。

為了確保文件上傳的安全性,只需在上傳之前檢查文件的MIME類型,以確定您所選擇的任何存儲。

http:/php.net/手冊/en/Function.MIME-Content-type.php

只需快速檢查上傳的文件:

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

別小題大作!

將文件保存在數據庫中是不好的做法,它應該是您的最后資源。S3對于許多用例來說都是很棒的,但是對于高使用率來說,它是昂貴的,本地文件應該只用于內部網和不可公開的應用程序。

在我看來,去S3吧。

Amazon的SDK很容易使用,您可以獲得1GB的免費存儲進行測試。您也可以使用自己的服務器,只需將其保留在數據庫之外即可。

在文件系統上存儲圖像的解決方案

假設你有100.000用戶,每個用戶都有10張照片。如何在本地存儲?問題:Linux文件系統在幾十萬張映像后中斷,因此您應該使文件結構避免這種情況。

解決辦法:使文件夾名為‘abs(userid/1000)*1000’/userid

這樣,當用戶使用id 989787時,它的圖像將存儲在文件夾989000/989787/img1.jpeg 989000/989787/img2.jpeg 989000/989787/img3.jpeg上。

這是一種為百萬用戶存儲圖像的方法,它不會破壞Unix文件系統。

儲藏室的尺寸如何?

上個月,我不得不為我從事的電子商務壓縮了130萬個jpegs。上傳圖像時,使用圖像壓縮,使用無損標志和80%的質量。這將刪除不可見的像素,并優化您的存儲。由于我們的圖像從40x40(縮略圖)到1500x1500(縮放圖像),我們平均有700x700張圖像,乘以130萬張圖像,填充了大約120 GB的存儲空間。

所以,是的,可以將其全部存儲在您的文件系統中。

當事情開始變慢時,你會雇傭一個CDN。

那該怎么辦?

CDN位于您的映像服務器的前面,每當CDN被請求要一個文件時,如果它在它的存儲中找不到它(緩存丟失),它將從您的圖像服務器復制它。稍后,當CDN再次被請求時,它將從它自己的緩存中傳遞圖像。

這樣就不需要代碼遷移到CDN映像傳遞,您所需要做的就是更改站點中的URL并雇用CDN,這對于S3桶來說是一樣的。

這不是一種便宜的服務,但它比CloudFront便宜,當你到需要它的時候,你可能買得起它。


查看完整回答
反對 回復 2019-07-05
  • 3 回答
  • 0 關注
  • 746 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號