Как ни странно, файловый кеш выгоднее в вашем случае. За счёт кеширования на стороне файловой системы, запрашиваемые файлы будут читаться не с диска, а из этого кеша, т.е. из памяти, как и в случае memcached.
Для того, чтобы это работало, системе необходимо оставлять свободную память, которую она могла бы использовать на нужды кеширования. Также, если вы где-то раздаёте большие файлы, надо делать это через directio, чтобы они не вымывали ваш файловый кеш.
Кеш в memcached не будет эффективнее - памяти больше не станет, и вам всё равно придётся где-то урезать её выделение, чтобы отдать memcached, и при этом не засвопится, что практически эквиваленно выделению свободной памяти под кеш файловой системы.
Кеш в memcached нужен для распределённой обработки скриптов на нескольких бекэнд серверах, когда обращение к общему кешу идёт по сети. Также, он нужен, если у вас есть отдельный сервер с большим количеством памяти, который вы решили использовать под кеш.