Nginx/php - создание быстрого файлового кеша


Есть задача: выдавать файлы из кеша с помощью nginx, в обход php там, где это возможно. 
Кеш при этом в начальном состоянии пуст, и файлы попадают туда всё-таки с помощью какого-
то php-скрипта. Я буду кешировать фотографии jpg, как пример.

В конфиге nginx делаем секцию:

location ~ \.jpg$ {
    root /home/www/host/www;
    expires modified +1h;
    try_files /cache${uri} /cache.php?q=${uri};
}

В корне сайта создаем каталог /cache/ в котором будут храниться кешированные картинки и 
пишем скрипт cache.php, который делает кеш и возвращает картинку. Этот скрипт вызывается 
всего лишь один раз для каждой картинки, поскольку второй раз nginx найдет необходимый 
файл в кеше.

$q=substr($_GET['q'],1);
if (file_exists($q))
{
   copy($q,'./cache/'.$q);
   touch($q.'./cache/'.$q);
   header("Content-Type: ".mime_content_type($q));
   header("Content-Length: ".filesize($q));
   $fp = fopen($q, 'rb');
   fpassthru($fp);
}