本發(fā)明屬于涉及計(jì)算機(jī)軟件技術(shù)領(lǐng)域,尤其涉及一種網(wǎng)站圖片處理系統(tǒng)及方法。
背景技術(shù):
隨著社會(huì)的發(fā)展,互聯(lián)網(wǎng)已經(jīng)成為人們生活和工作中不可或缺的,互聯(lián)網(wǎng)技術(shù)也隨之得到了長(zhǎng)足的發(fā)展?,F(xiàn)有的網(wǎng)站不可避免要使用很多圖片,因此需要使用各種圖片優(yōu)化處理技術(shù)和分布式存儲(chǔ)技術(shù)。現(xiàn)有的圖片優(yōu)化及分布式存儲(chǔ)技術(shù)包括以下幾種:
一種是淘寶網(wǎng)使用的非開源的圖片處理技術(shù),其依托于淘寶網(wǎng)強(qiáng)大的服務(wù)器硬件投入和CDN資源,這是中小型網(wǎng)站無法承受的成本。
還有一種是普遍采用的,將圖片進(jìn)行處理后進(jìn)行壓縮和優(yōu)化,然后存儲(chǔ)在服務(wù)器中。這種技術(shù)大量占用服務(wù)器端的計(jì)算資源,很容易導(dǎo)致服務(wù)器不穩(wěn)定。
由此可見,現(xiàn)有技術(shù)中缺少一種性能優(yōu)越且不會(huì)過多增加硬件成本的針對(duì)中小型網(wǎng)站的圖片處理方案。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)中中小型網(wǎng)站在圖片處理方面存在的問題,本發(fā)明實(shí)施例的目的是提供一種有效且高效的網(wǎng)站圖片處理系統(tǒng)及方法。
為了解決上述問題,本發(fā)明實(shí)施例提出了一種網(wǎng)站圖片處理方法,包括:
接收代理服務(wù)器發(fā)送來的請(qǐng)求讀取圖片的URL,所述URL中包括圖片的鏈接,還包括請(qǐng)求對(duì)圖片進(jìn)行處理的參數(shù);
對(duì)所述URL進(jìn)行解析以獲取對(duì)圖片進(jìn)行處理的參數(shù),并根據(jù)所述參數(shù)通過Lua軟件對(duì)相應(yīng)的圖片進(jìn)行處理。
其中,該URL為Http://網(wǎng)頁(yè)鏈接_長(zhǎng)x寬q分辨率.jpg,其中長(zhǎng)x寬為所需圖片的尺寸,q分辨率為所需的圖片的分辨率。
其中,所述方法還包括:將通過Lua軟件進(jìn)行處理后的圖片進(jìn)行緩存。
其中,所述方法還包括:當(dāng)接收到代理服務(wù)器發(fā)送來的請(qǐng)求讀取圖片的URL后,判斷是否有緩存的圖片,如果有則直接將緩存的圖片發(fā)送到代理服務(wù)器。
同時(shí),本發(fā)明實(shí)施例還提出了一種圖片處理系統(tǒng),包括請(qǐng)求模塊、圖片處理模塊;其中,
所述請(qǐng)求模塊用于接收代理服務(wù)器發(fā)送來的請(qǐng)求讀取圖片的URL,所述URL中包括圖片的鏈接,還包括請(qǐng)求對(duì)圖片進(jìn)行處理的參數(shù);
所述圖片處理模塊用于對(duì)所述URL進(jìn)行解析以獲取對(duì)圖片進(jìn)行處理的參數(shù),并根據(jù)所述參數(shù)通過Lua軟件對(duì)相應(yīng)的圖片進(jìn)行處理。
其中,該URL為Http://網(wǎng)頁(yè)鏈接_長(zhǎng)x寬q分辨率.jpg,其中長(zhǎng)x寬為所需圖片的尺寸,q分辨率為所需的圖片的分辨率。
其中,所述系統(tǒng)還包括:緩存模塊,用于將通過Lua軟件進(jìn)行處理后的圖片進(jìn)行緩存。
其中,所述請(qǐng)求模塊還用于執(zhí)行以下操作:當(dāng)接收到代理服務(wù)器發(fā)送來的請(qǐng)求讀取圖片的URL后,判斷是否有緩存的圖片,如果有則直接將緩存的圖片發(fā)送到代理服務(wù)器。
本發(fā)明的上述技術(shù)方案的有益效果如下:上述的技術(shù)方案提出了一種面向中小型網(wǎng)站的圖片處理系統(tǒng)和方法,為中小型網(wǎng)站提供圖片分布式存儲(chǔ)的解決方案的同時(shí),還提供了圖片縮放及圖片質(zhì)量壓縮的功能,提高了前端開發(fā)者的開發(fā)效率,減少了后期對(duì)于網(wǎng)站優(yōu)化的時(shí)間,并提高了網(wǎng)站的訪問速度及高可用性。分布式服務(wù),易于部署,減少了運(yùn)維成本,2臺(tái)服務(wù)器即可形成服務(wù)集群。將圖片優(yōu)化從服務(wù)中剝離,通過服務(wù)器端執(zhí)行的lua腳本,充分利用服務(wù)器的強(qiáng)大計(jì)算能力,進(jìn)行實(shí)時(shí)的優(yōu)化處理,增加服務(wù)端的并發(fā)能力。一次性生成優(yōu)化圖片,并在服務(wù)端存儲(chǔ)7天,節(jié)約服務(wù)器資源及避免了重復(fù)消耗。
附圖說明
圖1是本發(fā)明實(shí)施例的流程示意圖。
具體實(shí)施方式
為使本發(fā)明要解決的技術(shù)問題、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例進(jìn)行詳細(xì)描述。
本發(fā)明實(shí)施例中應(yīng)用到的現(xiàn)有技術(shù)包括:
1、Nginx:Nginx("engine x")是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是一個(gè)IMAP/POP3/SMTP服務(wù)器。Nginx是由Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點(diǎn)開發(fā)的,第一個(gè)公開版本0.1.0發(fā)布于2004年10月4日。其將源代碼以類BSD許可證的形式發(fā)布,因它的穩(wěn)定性、豐富的功能集、示例配置文件和低系統(tǒng)資源的消耗而聞名。2011年6月1日,nginx 1.0.4發(fā)布
2、Lua:Lua是一個(gè)小巧的腳本語言。是巴西里約熱內(nèi)盧天主教大學(xué)(Pontifical Catholic University of Rio de Janeiro)里的一個(gè)研究小組,由Roberto Ierusalimschy、WaldemarCeles和Luiz Henrique de Figueiredo所組成并于1993年開發(fā)。其設(shè)計(jì)目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。Lua由標(biāo)準(zhǔn)C編寫而成,幾乎在所有操作系統(tǒng)和平臺(tái)上都可以編譯,運(yùn)行。
3、Fastdfs:FastDFS是一個(gè)開源的輕量級(jí)分布式文件系統(tǒng),它對(duì)文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲(chǔ)和負(fù)載均衡的問題。特別適合以文件為載體的在線服務(wù),如相冊(cè)網(wǎng)站、視頻網(wǎng)站等等。
4、GraphicsMagick:GraphicsMagick號(hào)稱圖像處理領(lǐng)域的瑞士軍刀。短小精悍的代碼卻提供了一個(gè)魯棒、高效的工具和庫(kù)集合,來處理圖像的讀取、寫入和操作,支持超過88種圖像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF。
本發(fā)明實(shí)施例提出了一種如圖1所示的網(wǎng)站圖片處理方法,包括:
接收代理服務(wù)器發(fā)送來的請(qǐng)求讀取圖片的URL,所述URL中包括圖片的鏈接,還包括請(qǐng)求對(duì)圖片進(jìn)行處理的參數(shù);
對(duì)所述URL進(jìn)行解析以獲取對(duì)圖片進(jìn)行處理的參數(shù),并根據(jù)所述參數(shù)通過Lua軟件對(duì)相應(yīng)的圖片進(jìn)行處理。
具體的,該URL為Http://網(wǎng)頁(yè)鏈接_長(zhǎng)x寬q分辨率.jpg,其中長(zhǎng)x寬為所需圖片的尺寸,q分辨率為所需的圖片的分辨率。
以一個(gè)具體的例子來說,
http://img.?????.com/group1/M00/00/00/wKgX2Fgf9hmANBKVAEWAHUby31c483.jpg
該URL是一個(gè)典型的不對(duì)圖片進(jìn)行處理的請(qǐng)求讀取圖片的URL。
http://img.?????.com/group1/M00/00/00/wKgX2Fgf9hmANBKVAEWAHUby31c483_200x200q50.jpg
該URL是本發(fā)明實(shí)施例中請(qǐng)求進(jìn)行圖片處理的例子。_200x200q50為優(yōu)化參數(shù),200x200為圖片的最大寬度和最大高度,檢測(cè)到該參數(shù)后,圖片服務(wù)會(huì)自動(dòng)將圖片等比縮放到相應(yīng)尺寸,而不會(huì)產(chǎn)生拉伸和形變;q50為質(zhì)量?jī)?yōu)化參數(shù),q50表示將圖片按照50%的質(zhì)量進(jìn)行壓縮處理,以減小圖片尺寸。經(jīng)過處理后的圖片,前端可以直接在代碼中使用,無需提前生成優(yōu)化圖片。
在實(shí)際使用中發(fā)現(xiàn),未經(jīng)處理的原始圖片大小為4.3Mb;經(jīng)過200x200q50壓縮后,僅剩7.9Kb,優(yōu)化了99.8%的尺寸。這樣可以在服務(wù)器端通過簡(jiǎn)單的處理來降低數(shù)據(jù)傳輸量以及數(shù)據(jù)處理量。
進(jìn)一步的,所述方法還包括:將通過Lua軟件進(jìn)行處理后的圖片進(jìn)行緩存。
進(jìn)一步的,所述方法還包括:當(dāng)接收到代理服務(wù)器發(fā)送來的請(qǐng)求讀取圖片的URL后,判斷是否有緩存的圖片,如果有則直接將緩存的圖片發(fā)送到代理服務(wù)器。
同時(shí),本發(fā)明實(shí)施例還提出了一種圖片處理系統(tǒng),包括請(qǐng)求模塊、圖片處理模塊;其中,
所述請(qǐng)求模塊用于接收代理服務(wù)器發(fā)送來的請(qǐng)求讀取圖片的URL,所述URL中包括圖片的鏈接,還包括請(qǐng)求對(duì)圖片進(jìn)行處理的參數(shù);
所述圖片處理模塊用于對(duì)所述URL進(jìn)行解析以獲取對(duì)圖片進(jìn)行處理的參數(shù),并根據(jù)所述參數(shù)通過Lua軟件對(duì)相應(yīng)的圖片進(jìn)行處理。
進(jìn)一步的,所述系統(tǒng)還包括:緩存模塊,用于將通過Lua軟件進(jìn)行處理后的圖片進(jìn)行緩存。
進(jìn)一步的,所述請(qǐng)求模塊還用于執(zhí)行以下操作:當(dāng)接收到代理服務(wù)器發(fā)送來的請(qǐng)求讀取圖片的URL后,判斷是否有緩存的圖片,如果有則直接將緩存的圖片發(fā)送到代理服務(wù)器。
在工作時(shí),首先將圖片通過上傳平臺(tái)存儲(chǔ)至fastdfs集群中。當(dāng)nginx接收到圖片訪問請(qǐng)求時(shí),會(huì)先判斷圖片是否存在。如果所請(qǐng)求的圖片已經(jīng)存在(即是否已經(jīng)緩存),則直接將文件發(fā)送出去;否則,將根據(jù)圖片的url判斷是否存在優(yōu)化參數(shù),如果優(yōu)化參數(shù)存在,則nginx會(huì)通過lua腳本調(diào)用GraphicsMagick對(duì)圖片進(jìn)行處理,生成相應(yīng)優(yōu)化參數(shù)的圖片,并存儲(chǔ)至fastdfs的storage路徑中(可以只保存7天,以節(jié)省存儲(chǔ)空間),同時(shí)返回該優(yōu)化后的圖片。下次再次遇到相同請(qǐng)求時(shí),則直接返回已存在的圖片。如果圖片不存在,且沒有優(yōu)化參數(shù)時(shí),會(huì)自動(dòng)返回原始圖片,防止出現(xiàn)空白。
上述方案為中小型網(wǎng)站提供圖片分布式存儲(chǔ)的解決方案的同時(shí),還提供了圖片縮放及圖片質(zhì)量壓縮的功能,提高了前端開發(fā)者的開發(fā)效率,減少了后期對(duì)于網(wǎng)站優(yōu)化的時(shí)間,并提高了網(wǎng)站的訪問速度及高可用性。分布式服務(wù),易于部署,減少了運(yùn)維成本,2臺(tái)服務(wù)器即可形成服務(wù)集群。將圖片優(yōu)化從服務(wù)中剝離,通過服務(wù)器端執(zhí)行的lua腳本,充分利用服務(wù)器的強(qiáng)大計(jì)算能力,進(jìn)行實(shí)時(shí)的優(yōu)化處理,增加服務(wù)端的并發(fā)能力。一次性生成優(yōu)化圖片,并在服務(wù)端存儲(chǔ)7天,節(jié)約服務(wù)器資源及避免了重復(fù)消耗。
以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。