Nginx Memcached Module, Caching Webiste Image Using Memcached
During my exploration of optimzing website using memcached, i’ve found this tutorial. It’s quite interesting using key value application (memcached) for serving website’s static content, Such as image, jss or js file. As we know, Reading/writing Hardrive is slower than accessing memory. although compared with SSD or 7,200 RPM hard drives. Even when an application is loaded, any files that are opened for use in that application are loaded into memory. As well as how web servers work.
First time following the tutorial, it isn’t work. image files not loaded into memcached, no warn, now error. after slightly modifying the script, image files can be stored into the memcached perfectly.
Here’s the php script after modification, i saved it as mem.php
<?php function rscandir($base='', &$data=array()) { $array = array_diff(scandir($base), array('.', '..')); foreach($array as $value) { if (is_dir($base."/".$value)) { $data = rscandir($base."/".$value,$data); } elseif (is_file($base."/".$value)) { $rest = substr($value, -4); if ((!strcmp($rest,'.jpg')) || (!strcmp($rest,'.png')) || (!strcmp($rest,'.gif'))) { $data[] = $base."/".$value; } } } return $data; } $mylist=rscandir("/path/to/public_html"); $srch = array('/path/to/public_html'); $newval = array(''); $memcache_obj = memcache_connect("127.0.0.1", 11211); while (list($key, $val) = each($mylist)) { $url=str_replace($srch,$newval,$val); echo "$key => $val -> ".filesize($val)."\n"; $value = file_get_contents($val); memcache_add($memcache_obj, $url, $value, false, 0); } ?>