2012-04-09 74 views
2

所以,讓我更好地解釋一下,我很確定標題沒有太多說明。通過jquery ajax上傳和加載圖片

我負責對公司系統進行一些改進。現在系統將當前圖像保存爲文件,並將圖像的路徑插入到數據庫中。

那麼,如果它有效,會出現什麼問題?那麼,如果服務器一直插入大量圖像,服務器將需要一些改進,所以我的第一個想法是,爲什麼我不將圖像數據保存到數據庫並通過ajax調用進行加載?這很好,它不會使服務器從圖像中的很多千兆字節中超載,不會有重複等問題,但是當我從jQuery調用ajax方法時,發送到服務器端的數據是通過查詢字符串如果數據高於6000個字符,就像我使用base64編碼時的大多數情況一樣,我無法調用該方法。

我的另一個想法是,將圖像發送到服務器端,然後生成數據以保存到數據庫,並且當用戶想要查看圖像時,服務器將數據轉換爲圖像併發送到客戶端側。但問題是,這個系統有很多用戶,發送/接收大量圖像會導致服務器因請求數量過高而出現內存問題。

因此,長話短說,發送/接收圖像從客戶端到服務器和相反,而不會超載服務器容量的最佳方式是什麼。

對話:對不起,我想提出一個明確的問題。

在此先感謝。

+4

圖像數據庫幾乎總是一個壞主意,並送東西展現出來爲base64會提高你的帶寬費用減少了〜33%。將圖像存儲在文件系統中,並將圖像的PATH存儲在數據庫中,然後使用標準的''標籤輕鬆加載它們。 – 2012-04-09 18:40:30

+0

首先,感謝您的快速回復,其次,您認爲在服務器端保存以減少硬盤驅動器上的空間時,壓縮映像是否值得?這是一個24/7系統,不斷在服務器/客戶端之間交換圖像,所以我猜,它會使服務器有點過載。 – 2012-04-09 18:51:24

+1

@MarcB:一個重要的補充是要注意,圖像不應該直接保存在Web應用程序的物理文件夾中。相反,您將它們保存到單獨的共享中,並通過url facade公開,可能由單獨的服務器處理。如果正確完成,這會提高安全性和性能。 – 2012-04-09 18:55:50

回答

1

服務器將超載甚至更多地將圖像存儲在數據庫中。大多數Web服務器非常有效地提供靜態文件(如圖像)。

你要多想想這個問題試圖解決它之前:

  • 是你的問題的帶寬超載?嘗試在上傳前調整圖像客戶端的大小(可以使用PlUpload之類的工具)。如果你不能,至少調整他們的服務器端服務器端更小,並節省下載帶寬

  • 是你的問題harddrive空間過載?再次,調整圖像客戶端o服務器端的大小。

  • 是你的問題CPU超載?嘗試確定引起峯值的根源代碼。要知道,大量的請求會導致很高的CPU,你可能需要一個更結實的服務器(或其他Web服務器)

+0

好吧,我的問題是服務器和客戶端之間存在大量的圖像流量。當我上傳圖片時,它會使用Web服務器將圖片存儲在一個文件夾中,並將路徑插入數據庫。因此,每次用戶請求圖像時,我都會從數據庫加載路徑,然後從文件夾中獲取正確的圖像以發送給客戶端。但想象一下,如果10分鐘內500名客戶因爲一些恐慌而一遍又一遍地做同樣的請求。它會使請求數據庫過載,並會使圖像流量超載服務器。這就是爲什麼我在考慮渲染客戶端。 – 2012-04-09 20:54:29

+0

由於我無法完成我的評論,我感謝您的回答,我將使用Web服務器管理圖像並在數據庫中插入路徑。讓客戶擁有一個快速的網站比讓客戶遭受大量渲染等更有用。謝謝,你打開了我的想法。抱歉不投票給你,我仍然沒有足夠的聲譽。 – 2012-04-09 20:59:19

+0

您可以使用緩存來避免如此難以擊中數據庫。關於請求,你可以使用CDN,但也許這是一種矯枉過正 – 2012-04-09 21:28:19