2011-12-15 44 views
2

可能重複:
Storing Images in DB - Yea or Nay?將圖像存儲在Db或服務器上?

我想提出一個asp.net MVC的網站,將有一個論壇上傳一些信息。我希望能夠讓它上傳圖片。但是我不確定是否應該將這些圖像保存到數據庫中或將它們保存到文件服務器。

我沒有看到超過200Kb的圖像(這可能非常高)。我認爲平均會在50kb以下。

那麼最好用什麼?

回答

3

取決於你看重的是什麼,什麼你與他們這樣做的:在一個數據庫中

圖片:

  • 現場與相關的數據,沒有何時進行數據遷移到另一個脫落機會系統
  • 更輕鬆地備份(因爲它們與數據庫都是)
  • 更安全,更難以操縱無意或故意

文件系統上的圖像

    在DB服務器存儲
  • 節省空間 - 如果你在一個 共享環境提供DB空間支付是
  • 更容易代碼來檢索
  • 容易可能是重要的在html中引用

我不認爲在所有情況下都有一個「最佳」方法 - 但話雖如此,如果是爲了網站,文件系統似乎對我更有意義!

3

就我個人而言,我會選擇將圖像存儲在服務器上,然後將每個圖像保存在表中。性能明智,它可以更好。

1

幾年前,我開發了一個房地產應用程序,並選擇將每個屬性的圖像存儲在數據庫中。表演很可怕。然後我改變它以將圖像存儲在文件系統中(這是一個相當長的操作來執行)並且性能要快得多。

我會說你應該在數據庫中存儲的唯一項目是大型文本文檔,所以它們可以用於像SQL Server的全文搜索之類的東西。但是,我永遠不會將圖像存儲在數據庫中,尤其是在每頁可能存在多個圖像的情況下。

將URL存儲在數據庫中,然後從文件系統中獲取圖像。

+0

我在5年前開發了一個CMS,我們在積極的意義上發現了perforamnce terrifivc。所以 - 確定它不是不知道如何有效地處理數據庫中的二進制數據? – TomTom 2011-12-15 17:23:07

5

如果您不需要控制對這些圖像的訪問(即,它們是公共的,而不是基於角色的),則將它們存儲在服務器上並保留數據庫中路徑的鏈接。

去DB解決方案的問題是你必須流出它們。可能是一個有很多圖像的論壇頁面上的性能拖動。

正如我一直說的,爲什麼代碼服務文件時,Web服務器可以做得更好?

+1

+1你將得到好處(假設你將顯示這些圖像以及上傳它們)緩存瀏覽器端的圖像(並且你會發現從模型/視圖模型獲取圖像到瀏覽器會產生大量的數據庫行動)。 – 2011-12-15 17:24:09

1

我有一個基於流的高效解決方案,用於存儲和檢索SQL Server數據庫中的介質:Download and Upload Images from SQL Server via ASP.NET MVC和跟進FILESTREAM MVC: Download and Upload images from SQL Server

我也建議您閱讀To BLOB or not to BLOB

雖然我的建議是,除非您有其他特定的理由,否則將媒體存儲在文件系統中。 HHTTP服務器在簡單地回送文件方面非常高效。使用數據庫的具體原因可能是訪問控制,自包含備份還原或以數據庫爲中心的高可用性/災難恢復解決方案。

請記住,最快的反應是當瀏覽器從不問:)使用c aching tags您的迴應。

相關問題