把image server上的圖片都存到memcache

一般來說網站上的靜態檔只會放一些幾乎不會變動的檔案,例如js/css/icons 等等。
例如所有的js以及css檔等等,另外圖片如果是網站上美工的圖片以及小icon也都會放在web server上。但是像使用者上傳的圖片,那種會不斷一直增加的圖片就不會放在網站上,因為那樣網站會越來越肥,若真的放在網站裡面,不僅會有安全性問題,同時也會變得很沒有彈性,所以一般都會將圖片拉出來做image server,用來放置所有上傳的圖片。

但是圖片一旦拉出來做image server之後,原本使用的framework所提供的cache機制就無法使用,所以把圖片存到memory cache這件事需要另外做。可以參考另一篇文章,先把memchached裝起來,再把Imagemagick裝起來。

Memchached裝好後,就可以寫一隻script來做圖片處理,然後在存到memcache,以下只是一隻很簡單的範例。

為了讓每張圖片都擁有不同的鍵值,使用width,height跟圖片路徑當作memcachd的key
基本上做法就是當用戶從Client端發request進來要圖片時候,我們把圖片的widht,height跟圖片路徑當作key,
先檢查這張圖片的有沒有存到memcache了,有的話就直接echo出來。
若沒有的話就使用imagemagick做圖片處理,在用ob_start(),ob_get_contents(),ob_end_clear()
來把圖片存到memcache,最後在echo剛剛用Imagemagic處理好的圖片。

以上只是一隻非常簡單的script,真正的script不會是這樣,但已經把基本該說的都說了,僅供參考。

相關文章:
http://www.php.net/memcache
https://www.digitalocean.com/community/articles/how-to-install-and-use-memcache-on-ubuntu-12-04
http://sumitbirla.com/2011/11/how-to-build-a-scalable-caching-resizing-image-server/

發佈留言