在項(xiàng)目中,特別是電商項(xiàng)目,一般都會面臨一個(gè)問題:圖片如何存儲?
那這還用問嗎?放到項(xiàng)目下的某個(gè)文件夾下啊,建一個(gè)upload文件夾,然后圖片上傳時(shí)指定到該項(xiàng)目下的文件夾下,就可以了。
這個(gè)當(dāng)然沒問題,但是隨著圖片越來越大,整個(gè)項(xiàng)目也會越來越大,我們在生產(chǎn)環(huán)境(其實(shí)就是正式化境)下上線,一般都會將項(xiàng)目保存一份,然后再覆蓋,當(dāng)你對項(xiàng)目打包時(shí)發(fā)現(xiàn),太TM慢了,因?yàn)閳D片太大了。Oh!NO!
那一般小項(xiàng)目是怎么做的呢?一般放入到另一個(gè)盤符,如D盤某個(gè)文件夾下。
那再好點(diǎn)兒的優(yōu)化方案是什么呢?
可以再弄一個(gè)圖片服務(wù)器,和應(yīng)用服務(wù)器分開,圖片服務(wù)器中可以做一個(gè)虛擬路徑。
納尼?貌似好像有點(diǎn)兒用?可以說的具體點(diǎn)兒不?

今天心情不錯(cuò),給你說說吧。
不如:你的應(yīng)用服務(wù)器tomcat,啟動(dòng)后的訪問路徑是:http://localhost:8080/abc/index.jsp
應(yīng)用服務(wù)器中可能有類似的上傳圖片的功能,例如將圖片放到了c:/pic下(如果有其他盤符,誰腦子進(jìn)水了會將圖片放到c盤呢?)
那么重新在解壓一份tomcat服務(wù)器,重點(diǎn)來了:不能再使用8080端口了,需要改為8081(具體修改服務(wù)器端口的操作出門左轉(zhuǎn)看我的其他博客)
然后重點(diǎn)中的重點(diǎn):需要配置虛擬路徑
找到tomcat下的conf文件夾下的server.xml


docBase:指的是你圖片存放的地址。
配置完畢后重新啟動(dòng)tomcat,一定要確保tomcat是啟動(dòng)起來了啊。
那么訪問地址就可以這樣子了:http://localhost:8081/img/hehe.jpg
能訪問到,完美!
這樣,你的項(xiàng)目中如果有類似上傳頭像的功能,就可以上傳到C:/pic下,(上傳和訪問是兩回事兒)
然后在數(shù)據(jù)庫中直接填寫頭像地址為:http://localhost:8081/img/xxxxx.jpg
備注:上傳圖片時(shí)的通用做法一般不會用圖片原來的名字,而是重新生成一個(gè)隨機(jī)的名字,如用UUID,訪問上傳成功后在文件夾下重復(fù)。這個(gè)不贅述了,操不完的心。
但是:但是問題來了?這個(gè)是最優(yōu)方案嗎?答案是:NO!
因?yàn)槲覀兌贾纓omcat訪問靜態(tài)資源(如:圖片,文本、html、音頻視頻)最大并發(fā)量是500,還只是理論值,實(shí)際操作起來也就2、3百而已。
而我們的項(xiàng)目如果圖片太多,那一個(gè)頁面可能就會有好幾個(gè)并發(fā),所以我們弄得東西也就玩玩而已。
那怎么辦呢?可以使用Nginx當(dāng)作http服務(wù)器,支持并發(fā)訪問量過萬,關(guān)于Nginx的文章,出門右轉(zhuǎn),看其他文章吧。