觀光來到了一個解決方案之前考慮:
- 你會來水平擴展你的web應用(即你會運行多個servlet容器實例)。
- 你期待什麼樣的流量?
- 圖片需要更新多快(即用戶更改其頭像後,他們和所有其他用戶是否應立即看到新頭像)。
對於未水平縮放的web應用程序,可以使用文件系統作爲圖像存儲。這很簡單,可以理解,而且有效。
對於橫向縮放的web應用程序,您需要將圖像存儲在每個servlet容器可以到達的位置。這可能是一個數據庫(我不推薦這麼做),S3(我推薦這個)或者一個內容倉庫(我從來沒有使用過其中的一個)。 S3的一個優勢是它的規模很好。您可以將它放在CloudFront(亞馬遜的CDN)之後,或者直接從S3服務器中卸載,並保持服務器的負載不變。
你也提到你的問題,你不能從遠程客戶端服務器本地資源。這是正確的,有點......我猜你正在嘗試使用一些URL,如file://c:/.../image.jpg
。這不起作用。你需要做的是映射一個處理程序來提供圖像。這可能看起來像
@RequestMapping(value = "/image/{name}.jpg", method = RequestMethod.GET)
public void image(@PathVariable("name") String name, HttpServletResponse response) {
// Read the image from the file system using java.io
// Write the image to the response output stream
// Even better use org.springframework.utils.FileCopyUtils
}
我檢查了Jackrabbit,它看起來非常複雜,實現時間很長,找不到任何教程解釋如何實現它與彈簧3 – 2011-03-14 13:25:26
[在jackrabbit網站](http://jackrabbit.apache.org/jcr-client -application-howto.html)你有這3行代碼片段。這並沒有比這更容易。 – eddie 2011-04-08 19:21:44