Caching to files is faster. You're on the right way!
If you are using just one unix server and have enough free memory, maybe the easiest and fastest method is to store the serialized data to files on in-memory /tmp -filesystem. So, forget memcached if possible. Also remember to give enough memory to mysql query cache if you don't have patience to implement caching everywhere. Home made caching is the lightest and thus the fastest way if made right.
Depending on your data, it might be better to just delete the cached file just before the data is changed instead of using expiration time. This way you know the data is good if the file exists.
And because you're interested of speed... I get much more power using basic mysql-functions instead of PDO or mysqli. And of course lighty instead of apache :)