若是你留心的話,能夠發現,如今主流的網站都是有單獨的圖片服務器的,例如,人人網的爲rrimg,淘寶的爲taobaocdn,下面還有不少的二級域名。html
獨立的圖片服務器有諸多好處,其中一個就是客戶端瀏覽器對一個主機下的鏈接數量限制,具體的鏈接數目忘記了,但基本都在10如下。也就是說,瀏覽器會控制一個站點下的併發請求數量在10如下,若是對於網站有不少樣式文件、腳本文件和圖片須要加載的話,請求的過程會被阻塞,影響網站的打開速度。 java
創建圖片服務器,將圖片資源放在另一個域名下面,會在必定程度上提高網站的打開速度,這樣來講的話是否是說咱們獨立的服務器越多越好呢?也不盡然,解析域名並創建鏈接也須要很長的時間,獨立的主機多了的話,也不利於速度的提高。linux
圖片每每會消耗掉網站中的不少寬帶和IO資源,獨立的圖片服務器能夠在寬帶和IO性能上單獨提高,便於管理和拓展。nginx
關於網站性能方面的經驗有不少,最爲著名的就是雅虎的14條準則。web
圖片服務器的搭建思路也不難,我大概畫了一個圖,顯示的是我最近兩天搭建圖片服務器的思路。apache
網站服務器是Apache + Tomcat, 之前圖片的資源所有在tomcat的工程目錄下面,隨着圖片數量的增多,對於圖片的管理很不方便,網站的打開速度也不理想。 新的圖片服務器用Nginx做爲web server,這裏有一篇文章分析了lighttpd、apache和nginx的性能,仍是值得一看的。 面臨的一個問題就是用戶上傳圖片的問題,由於上傳的邏輯仍是在原來的服務器上,所以,怎麼同步兩個服務器上的圖片是個須要解決的問題。 每每網站須要一張圖片的多個尺寸來知足不一樣的需求,咱們也是不例外的,因此,我想到了將用戶上傳的源圖片保存在網站服務器上,經過源圖片來生成不一樣尺寸的圖片經過ftp的方式保存到圖片服務器上,源圖片也至關於作了一個備份。 java 操做ftp十分方便,這也是我選擇用ftp的方式來同步圖片的緣由。 因此,須要在圖片服務器上搭建ftp服務,這個教程有不少,再也不羅嗦。不過我想提的一點是,red hat企業版有selinux,貌似是個安全機制,須要關掉這個才能上傳。 圖片服務器上面搭建了tomcat容器的緣由是網站須要的圖片尺寸有將近20種,沒有辦法保存每一個縮略圖,所以用java來實現動態縮放圖片的功能,就是相似於 190_h100_w200.jpg 這種格式,長寬隨便換。具體的實現方法,有空再寫吧。 由於動態生成圖片比較耗費資源,所以用在較少訪問的頁面上,減小了縮略圖的個數。瀏覽器