在项目中,特别是电商项目,一般都会面临一个问题:图片如何存储?
那这还用问吗?放到项目下的某个文件夹下啊,建一个upload文件夹,然后图片上传时指定到该项目下的文件夹下,就可以了。
这个当然没问题,但是随着图片越来越大,整个项目也会越来越大,我们在生产环境(其实就是正式化境)下上线,一般都会将项目保存一份,然后再覆盖,当你对项目打包时发现,太TM慢了,因为图片太大了。Oh!NO!
那一般小项目是怎么做的呢?一般放入到另一个盘符,如D盘某个文件夹下。
那再好点儿的优化方案是什么呢?
可以再弄一个图片服务器,和应用服务器分开,图片服务器中可以做一个虚拟路径。
纳尼?貌似好像有点儿用?可以说的具体点儿不?
今天心情不错,给你说说吧。
不如:你的应用服务器tomcat,启动后的访问路径是:http://localhost:8080/abc/index.jsp
应用服务器中可能有类似的上传图片的功能,例如将图片放到了c:/pic下(如果有其他盘符,谁脑子进水了会将图片放到c盘呢?)
那么重新在解压一份tomcat服务器,重点来了:不能再使用8080端口了,需要改为8081(具体修改服务器端口的操作出门左转看我的其他博客)
然后重点中的重点:需要配置虚拟路径
找到tomcat下的conf文件夹下的server.xml
docBase:指的是你图片存放的地址。
配置完毕后重新启动tomcat,一定要确保tomcat是启动起来了啊。
那么访问地址就可以这样子了:http://localhost:8081/img/hehe.jpg
能访问到,完美!
这样,你的项目中如果有类似上传头像的功能,就可以上传到C:/pic下,(上传和访问是两回事儿)
然后在数据库中直接填写头像地址为:http://localhost:8081/img/xxxxx.jpg
备注:上传图片时的通用做法一般不会用图片原来的名字,而是重新生成一个随机的名字,如用UUID,访问上传成功后在文件夹下重复。这个不赘述了,操不完的心。
但是:但是问题来了?这个是最优方案吗?答案是:NO!
因为我们都知道tomcat访问静态资源(如:图片,文本、html、音频视频)最大并发量是500,还只是理论值,实际操作起来也就2、3百而已。
而我们的项目如果图片太多,那一个页面可能就会有好几个并发,所以我们弄得东西也就玩玩而已。
那怎么办呢?可以使用Nginx当作http服务器,支持并发访问量过万,关于Nginx的文章,出门右转,看其他文章吧。